FileMaker Proのリレーションシップグラフについて
機能の追加の前に、リレーションについての概略を見てみましょう。
[ファイル]-[管理]-[データベース]を選択してください。「ReportMaker」のデータベースの管理というダイアログが表示されます。[テーブル]タブでは、そのファイル内で利用するテーブルの一覧が確認できます。
この中で注意して欲しいのは、「ソース」欄と 「グラフ内のテーブル名」です。FileMaker Pro 9からは外部データソースをテーブルとして扱えるようになったため、「ソース」欄にFileMakerのテーブルなのか、外部SQLデータソースなのかが表示されます。
一番右端の「グラフ内のテーブル名」については、リレーションシップグラフで詳しく説明します。
また、この画面は開発者向けのFileMaker Advancedの管理画面なので、画面の右下に[コピー]や[貼り付け]というボタンが存在します。このボタンはご想像通り、テーブルごとコピーして他のファイルに貼り付ける場合などに使用します。通常のPro版ではこの機能がついていないので注意してください。
真ん中の[フィールド]タブは、前回出てきたフィールド定義の画面です。一番右の[リレーションシップグラフ]タブが今回の肝となる「リレーションシップグラフ」の設定画面となります。
上図は、現在のファイルの「リレーションシップグラフ」でテーブル間の関連を表したものです。見出のついた四角い箱状のものが、「テーブルの仮想表」です。FileMaker Proでは、この「リレーションシップグラフ」上に「テーブルの仮想表」として配置されていないテーブルについては、そのテーブルに定義されたフィールドをレイアウト上に配置することすらできません。 前回、レイアウト上にフィールドを配置できたのは、FileMaker Proがテーブルと同名称の「テーブルの仮想表」をテーブル作成時にリレーションシップグラフ上に自動的に配置してくれたからでした(FileMaker Proは新規でテーブルを作成すると、自動で「テーブルの仮想表」を作成してくれます)。
現在用意されているレイアウトと「テーブルの仮想表」の関係は、以下の表を参照してください。
レイアウト名 | 仮想表名(TO名) |
顧客詳細 | clients |
案件詳細 | projects |
社員詳細 | staff |
報告書詳細 | reports |
ところで、「テーブルの仮想表」という言葉はFileMaker Pro 9のヘルプに登場する言葉ですが、英語では「Table Occurrence」と呼ばれています。 FileMaker開発者の間では「TO」と短縮して呼ぶことがあります。また、「テーブルの仮想表」をグループとして扱うことがありますが、そのグループを指して、「Table Occurrence Group」、略して「TOG」と呼んでいます。この連載でも同様に「TO」「TOG」として表記します。
clients TOとpersons TOの間にある「=」は、clients TOの「ID」とpersons TOの「clientKey」が一致した場合にリレーションが成立することを表しています。
persons TOに接続しているコネクタがいわゆる「カラスの足跡」になっているのは、このリレーションを通して、1clientsレコードに複数のpersonsレコードが関連付けられる場合の表示です。一方、clients TOの方がただの直線になっているのは、IDに対してシリアル番号が自動入力されるようにフィールド定義の自動入力値の設定として、定義されているからです(ユニーク値の制限が設定されていなくても、この表示になります。気をつけてください)。
引き続き、TO間でのリレーション設定を見てみましょう。clients TOとpersons TOの間にある「=」をダブルクリックします。「リレーションシップの編集」というダイアログが表示されます。
左側がclients TOのフィールドリスト、右側がpersons TOのフィールドリストです。clients TOのリレーションキーとして「ID」フィールドが、persons TOのリレーションキーとして「clinetKey」フィールドが指定されてます。FileMaker Proではリレーションを成立させる条件として、一致の他に以上、以下、一致しない、すべて一致などを選択することができます。また、リレーションの条件もこの画面上で、複数設定することが可能です。
画面下部に視線を移動すると、リレーションについての設定項目があります。
一番上の[このリレーションシップを使用して、このテーブルの作成を許可]という設定がpersons TOのほうでチェックされています。これは、のちほど説明する「ポータル」での新規レコードの作成に必要な設定です。
次の[他のテーブルでレコードが削除された時、このテーブルの関連レコードを削除]は、例えばclientsのレコードを削除したときに、そこに関連付けられているpersonsのレコードも併せて削除するために必要な設定です。
最後の[レコードのソート]は、関連レコードを表示するときに、指定した順でソートされている必要がある場合などに設定します。当然、該当するレコード全部に対してソート処理が実行されるので、レコード数などを考慮して設定してください。
[OK]をクリックすると画面が閉じます。何か設定を追加したり、変更した場合は、[キャンセル]ボタンもアクティブになります。キャンセルすると直前に設定した内容が消えてしまいますので注意してください。