関連テーブルを作成するには、2 つのテーブル間にリレーションシップを定義します。リレーションシップに指定された条件に従って、一方の 1 つのフィールド (照合フィールドと呼ばれますが、キーフィールドと呼ばれることもあります) の値がもう一方の照合フィールドの値と正しく比較されると、リレーションシップが確立されます。
たとえば、「学生」テーブルの「学生 ID」フィールドの値が「クラス」テーブルの「学生 ID」フィールドの値と等しいと、2 つのテーブルのレコードを関連付けるリレーションシップを作成できます。
データベース内のリレーションシップの作成、変更、表示については、リレーションシップグラフの操作を参照してください。
テーブル内のレコードを識別する 1 つのフィールドまたは複数のフィールドを組み合わせて照合フィールドにすることができます。たとえば、リレーションシップの条件を比較したときに、照合フィールドに含まれる日付でリレーションシップが正常かどうかを判断できます。
キーは照合フィールドの一種です。通常、キーには ID (製品 ID など) として使用される値が含まれます。キーには次の 2 つのタイプがあります:
•主キー – 識別するレコードと同じテーブルにあるフィールド。主キーの値は固有であり、かつ空 (null) でない必要があります。主キーはテーブルに 1 つしかありませんが、複数のフィールドで構成することができます。デフォルトでは、[データベースの管理] ダイアログボックスでファイルを作成するかテーブルを作成すると、新規テーブルに主キーフィールドが含まれます。
•外部キー – 別のテーブルのレコードを識別するテーブル内のフィールド。外部キーの値はテーブル内で固有である必要はなく、空 (null) でもかまいません。1 つのテーブルに複数の外部キーがあることもあります。
「販売」データベースでは、「顧客」テーブルと「請求書」テーブルそれぞれで「顧客 ID」フィールドを使用して、各顧客と購入品を固有に識別することができます。「顧客」テーブルの「顧客 ID」フィールドは各顧客を固有に識別するため、主キーフィールドです。「請求書」テーブルの「顧客 ID」フィールドは、値が別のテーブル (この例では「顧客」テーブル) を起点としているため外部キーフィールドです。ただし、両方のテーブルの「顧客 ID」フィールドは照合フィールドです。
この 2 つのテーブルが「顧客 ID」フィールドを使用して関連している場合、「顧客」テーブルのレコードに、一致する顧客 ID が入力されている各請求書を表示するポータルを表示することができます。また、「請求書」テーブルでは、同じ顧客 ID が入力されている各請求書に、常に同じ顧客データを表示することができます。
FileMaker Pro Advanced では、関連テーブル内の照合フィールドの索引設定値を検索して、現在のテーブルのレコードのリレーションシップ条件に適合する関連レコードを特定します。そのため、関連テーブルの照合フィールドは索引設定が可能である必要があります。
照合フィールドはフィールドタイプがテキスト、数字、日付、時刻、タイムスタンプ、(結果としてテキスト、数字、日付、時刻、タイムスタンプのいずれかを返す) 計算式のいずれかである必要があります。
リレーションシップを設定すると、一貫性のあるデータが入力されるようになり、データベースにルールが適用されます。FileMaker Pro Advanced では次のタイプのリレーションシップがサポートされています。
リレーションシップのタイプ | 説明 |
1 対 1 | テーブル内の 1 つのレコードが別のテーブルの 1 つのレコードのみと関連付けられます。1 対 1 のリレーションシップを参照してください。 |
1 対多または | テーブル内の 1 つのレコードを別のテーブルの 1 つ以上のレコードと関連付けることができます。または、テーブル内の 1 つ以上のレコードを別のテーブルの 1 つのレコードと関連付けることができます。1 対多のリレーションシップを参照してください。 |
自己連結 | 両方の主キーが同じテーブルの 2 つのオカレンスで定義されます。自己連結リレーションシップを参照してください。 |
リレーションシップのもう 1 つのタイプは多対多のリレーションシップです。通常、リレーショナルデータベースシステムでは、2 つのテーブル間に多対多のリレーションシップを直接設定することはできません。ただし、第三のテーブル (中間テーブル) を使用すると、多対多のリレーションシップをサポートするデータベースを設計することができます。多対多のリレーションシップを参照してください。
•リレーションシップで使用する照合フィールドには、ルックアップのコピー先フィールドを使用することができます。ただし、ルックアップが別のリレーションシップに設定されている場合に限ります。
•グローバルフィールドには索引を設定できないため、グローバルフィールドを関連テーブルの照合フィールドとして使用することはできません。ただし、現在のテーブルの照合フィールドとしては使用できます。
•また、リレーションシップによってデータをグループ化することができ、複雑な検索を解決することもできます。たとえば、リレーションシップを使用して、現在の在庫レベルや販売計画など、複数のテーブルのデータを検索する必要がある作業を判断することができます。
•ソーステーブルのアクセス権を使用して、関連データへのアクセスを制限したり、禁止することができます。たとえば、リレーションシップから関連フィールドを表示するには、関連する照合フィールドを表示するアクセス権が必要です。