FBUnicodeManager は、コレーションとトランザクションを作成・管理するための、YellowBoxアプリケーションである。.
コレーションはUnicodeキャラクタと、それに対応する値をマッピングした、テーブルによく似たものである。 Unicodeキャラクタに対応する数字は、2つのUnicodeストリングを比較するときに用いられる。コレーションの同一性は、Unicodeキャラクタセットの中で、各Unicodeキャラクタが、順番に数字にマッピングされたようなコレーションであるがゆえに確保されている。
各Unicodeキャラクタの、トランスレーション・マップは、Unicodeキャラクタストリングに対して、トランスレーションの中で定義される。トランスレーションは、単なるルックアップ・テーブルではなく、むしろ、あるキャラクタ・ストリングを、完全にコトなるストリング・キャラクタに変換するためのものといえる。たとえ、変換前後で、ストリング・キャラクタの長さが異なっていたとしても、である。典型的な例としては、小文字を大文字に変換するケースだろう.ここで、ある言語においては、単一の小文字キャラクタが、2つあるいはそれ以上の複数キャラクタにマップされる場合もある。たとえば、ドイツ語の小文字のうち、î?は、SSにマップされる。あらかじめ定義されたSQL92 関数として、UPPERとLOWERがあり、これは実際にトランスレーションを使っている。対応するトランスレーションを修正することで、これらの関数の結果を変更することが可能である。
Unicode inspector
コレーションの作成
コレーションの保存
既存のコレーションの編集
SQL92でコレーションを使うには
トランスレーションの作成
トランスレーションの保存
既存のトランスレーションの編集
SQL92でトランスレーションを使うにはUnicode inspector
Unicode inspectorは、FBUnicodeManagerにおける重要なコンポーネントで、Unicode2.0で定義された全キャラクタ・セットを閲覧、チェックするものである。Unicode inspectorは、コレーションやトランスレーションを作成するときに、重要な手段として使うこともできる。
Unicode inspectorを前面にもってくるには、メニューアイテムから“Unicode inspector...”を選んでクリックする:
Code |
- |
Unicodeキャラクタ・セットのコード順表示(16進数) |
Unicode 2.0 Name |
- |
キャラクタの正式名称 |
Category |
- |
Unicode comitteeで割り当てられた、キャラクタのカテゴリ |
Upper |
- |
対応する大文字が存在する場合、そのコード(16進数) |
Lower |
- |
対応する小文字が存在する場合、そのコード(16進数) |
Title |
- |
対応するタイトルケース(title case)が存在する場合(たとえば、1C5 hexなど)、そのコード(16進数) |
Unicode inspector中の行をクリックすると、そのコードが選択され、ディスプレイ・フィールドと、コード順フィールドの表示が更新される。MacOS X Server付属のHelveticaフォントは、全Unicodeキャラクタについての定義を含んでいないことに注意すること。特に、255(FF)より大きな値で定義されたキャラクタは、そう多くない。たとえば:“Latin Small Ligature Ij”(132 hex)という文字は、定義されていないが、“Latin Small Letter O With Macron”(14D hex)という文字は定義されている。
コレ―ションの作成
コレーションを作成するには、メニューアイテムで“Collations->New”をクリックすればよい:
Code |
- |
Unicodeキャラクタ・セットのコード順表示(16進数) |
Unicode 2.0 Name |
- |
キャラクタの正式名称 |
Value |
- |
2つのキャラクタを比較するのに使われる値(10進数) |
Upper |
- |
対応する大文字が存在する場合、そのコード(16進数) |
Lower |
- |
対応する小文字が存在する場合、そのコード(16進数) |
最初に数値を指定した上で“Include Unicodes”ボタンをクリックし、 次に“Map all lowercase into uppercase”ボタンをクリックすると、上図のようにコレーションが表示される。
別のやり方で、すばやくコレーションを埋めたい場合は、“Includes Unicodes”ボタンをクリックすればよい。もし、たとえば最初の32個のUnicodeキャラクタ(これらはすべて、コントロール・コードである)が不要な場合、“Includes Unicodes”ボタンをクリックする前に、From:フィールドへ32と入力すればよい。同様に、上限を定めたい場合は、To:フィールドに数値を入力する。
あるコレーションに挿入されるべき、個々のUnicodeを選択するには、 Unicode inspectorに行き、目的のキャラクタを選択して、“Edit->Copy”をクリックしてから、コレーション・ウィンドウに移り、“Edit->Paste”をクリックすればよい。
コレーションのキャラクタを再整理するには、目的のキャラクタを選択してから“Edit->Cut”をクリックし、この切り取ったキャラクタを挿入したいキャラクタの後ろで、“Edit->Paste”をクリックすればよい。
“Reset Value”ボタンをクリックすると、それぞれの値を、オリジナルの値にリセットする。
コレーション中のキャラクタを既存の連続値にしたい場合、すなわち、既存の値から開始したい場合は、“Starting at:”フィールドを編集して、“Renumber Value”ボタンをクリックすればよい。
コレーション中で定義されていないキャラクタは、オリジナルの値そのままに割り当てられることに注意すること。すなわち、自分にとって関係のないキャラクタについては、いちいち設定しないで、放置しておいて構わない。
コレーションの保存
新しいコレーションの定義が完成したら、メニュー・アイテムから“Collation->Save as...”をクリックすればよい:
コレーションは、/usr/FrontBase/Collationsにストアされなければならないが、このフォルダに書きこみ権利を持っていない利用者の場合、たとえば、コレーションは、利用者のホーム・ディレクトリ(フォルダ)に保存される。後で、それらを必要な場所にコピーすればよい。“Table/Search threshold:”フィールドは、ダイレクト・ルックアップ・テーブルと、リニア・サーチ・テーブルとの切り分けを定義する値を指定するために使われる。複数のUnicodeキャラクタを網羅するコレーションを使っている場合、使われてる数字がまばらだと、全キャラクタに対するダイレクト・ルックアップ・テーブルを使っても意味がない。FrontBaseデータベース・サーバに、メモリ発行を多く要求してしまうからである。
既存のコレーションの編集
メニュー・アイテムから“Collations->Open”をクリックし、Openパネルから目的のコレーションを選んでOKをクリックすればよい。これで、必要に応じてコレーションを編集できる。編集が終わったら、“Collations->Save”をメニュー・アイテムから選び、結果を再度保存すること。
SQL92でコレーションを使うには
一旦、コレーションが、/usr/FrontBase/Collationsにストアされると、SQL92ステートメントの中で、利用可能となる。コレーションの、もっとも一般的な使い方としては、テーブルを作成するときに、コレーションを指定する、というケースがあげられる:
CREATE COLLATION CASE_INSENSITIVE
FOR INFORMATION_SCHEMA.SQL_TEXT
FROM EXTERNAL('CaseInsensitive.coll1');
-- CaseInsensitive.coll1 comes with a FrontBase distribution
COMMIT;
CREATE TABLE T0(C0 VARCHAR(1024) COLLATE CASE_INSENSITIVE);
COMMIT;
2つのC0 列の値が比較されたときはいつでも、指定されたコレーションが使われる。このようなケースは、WHERE クローズ(節)に適用されるのではなく、C0列が関係する、incl. インデックスに関係するような全操作についても適用される。
トランスレーションの作成
トランスレーションを作成するには、メニューアイテムから、Translations->New をクリックする:
Code |
- |
Unicodeキャラクタ・セットのコード順表示(16進数) |
Unicode 2.0 Name |
- |
キャラクタの正式名称 |
Upper |
- |
対応する大文字が存在する場合、そのコード(16進数) |
Lower |
- |
対応する小文字が存在する場合、そのコード(16進数) |
Translate into |
- |
キャラクタ・ストリングで、選択されたキャラクタが、ここにトランスレートされる。 |
“Include Unicodes”ボタンをクリックすると、上記のトランスレーションに、値が埋め込まれる。
他の方法で、空のトランスレーションを簡単に集めるには、“Include Unicodes”ボタンをクリックする。もし、たとえば最初の32種類のUnicodeキャラクタ(すべてこれらはコントロール・コードである)を除きたい場合は、“Include Unicodes”ボタンをクリックする前に、From:フィールドに、32と入力すればよい。これと対応して、トランスレーションするキャラクタの上限は、To:フィールドに希望のキャラクタ・コード数字を入力することで設定可能である。
トランスレーションにおいて挿入されるUnicodeを個別に選択するには: Unicode inspectorに移り、希望のキャラクタを選択し、Edit→Copyをクリックしてから、トランスレーション・ウィンドウに移り、Edit→Pasteをクリックすればよい。
コレーションで、キャラクタを再アレンジするには、キャラクタを選択し、Edit→Cutをクリックし、切り取ったキャラクタを挿入したい文字の後ろをクリックして挿入ポイントを定め、それからEdit→Pasteをクリックすればよい。
“Translate into”フィールド上で、既存のキャラクタをダブルクリックすると、適切なストリング・キャラクタを入力する。
トランスレーションの保存
新しいトランスレーションの定義が完成したら、メニュー・アイテムから “Translation->Save as...”をクリックすればよい:
トランスレーションは、/usr/FrontBase/Translationsにストアされなければならないが、このフォルダに書き込み権を持っていない場合、トランスレーションは、利用者のホームディレクトリに保存される。後から、/usr/FrontBase/Translationsに、コピー可能である。“Table/Search threshold:”フィールドは、ダイレクト・ルックアップ・テーブルと、リニア・サーチ・テーブルの間を分けるのに使われる値を指定するためのフィールドである。もし。複数のUnicodeキャラクタを網羅したトランスレーションを用意しているものの、その内容がまばらであるような場合、全キャラクタに対し、ダイレクト・ルックアップ・テーブルを使っても意味がない。ダイレクト・ルックアップ・テーブルを使うと、FrontBaseサーバに対し、メモリ要求をたくさん発行してしまうからである。
既存のトランスレーションの編集
メニューアイテムから“Translations->Open”をクリックし、Open パネルからコレーションを選択してOKをクリックする。これで、このトランスレーションを、必要に応じて編集し、メニューアイテムから“Translations->Save”をクリックすることで、編集内容を保存できる。
SQL92でトランスレーションを使うには
トランスレーションは、/usr/FrontBase/Translationsにストアされるので、SQL92ステートメントの中で使うことができる。
CREATE TRANSLATION ROMAN_DIGITS
FOR INFORMATION_SCHEMA.SQL_TEXT
TO INFORMATION_SCHEMA.SQL_TEXT
FROM EXTERNAL('RomanDigits.trans');
COMMIT;
CREATE TABLE T0(C0 VARCHAR(1024));
INSERT INTO T0 VALUES '111', '3';
SELECT * FROM T0 WHERE TRANSLATE(C0 USING ROMAN_DIGITS) = 'III';
-- Returns both rows in T0 (assuming that '1' maps into 'I' and that '3' maps into 'III')
|