関連テーブルの操作 > リレーショナルデータベースの計画
 

リレーショナルデータベースの計画

リレーションシップグラフを使用してリレーショナルデータベースを作成する前に、紙または画面の上でデータベースを設計します。開発する設計図のことをデータベース用語で ER 図 (ERD) と呼びます。

FileMaker Pro Advanced ソリューションの一般的な設計手順は、カスタム App の作成を参照してください。

リレーショナルデータベースを計画するには、次のことを行います。

1. リレーショナルデータベースで必要となる情報のカテゴリを決定します。これらのカテゴリは FileMaker Pro Advanced のテーブルになります。

たとえば、「販売」データベースには、顧客情報を含む「顧客」テーブル、注文情報を含む「請求書」テーブル、製品情報を含む「製品」テーブルなどが含まれます。

「顧客」テーブル、「請求書」テーブル、「製品」テーブル

2. テーブル相互の関係を決定します。これは、「顧客が製品を注文する」、「請求書で顧客の注文を管理する」のように、カテゴリの相互関係を簡単な文章で表現することで実行できます。

3. 1 つのテーブルと別のテーブルを連結して、2 つのテーブル間のリレーションシップを示します。たとえば、顧客は請求書を所持でき、請求書は製品を所持できます。

別のテーブルとのリレーションシップがないテーブルは、不要なテーブルである可能性があります。この例では、「従業員」テーブルはこのリレーショナルデータベースに合いません。

「従業員」テーブルを除き、相互関係を示す 3 つのテーブル

4. 記号でテーブル間を連結してテーブル間のリレーションシップのタイプを示します。

1 対 1 のリレーションシップでは、テーブル A の 1 つのレコードとテーブル B の 1 つのレコードが一致します。

1 対多のリレーションシップでは、テーブル A の 1 つのレコードとテーブル B の多数のレコードが一致します。

多対多のリレーションシップでは、テーブル A の多数のレコードとテーブル B の多数のレコードが一致します。

リレーションシップについてを参照してください。

相互の関係を示す 3 つのテーブル

この例が示す内容は次のとおりです:

1 人の顧客は多数の請求書を所持できる

1 つの製品を多数の請求書に記載できる

1 つの請求書には多数の製品を記載できる

5. なお、「請求書」テーブルと「製品」テーブルとの間には多対多のリレーションシップがあります。2 つのテーブル間に多対多のリレーションシップを直接設定することはできません。

リレーショナルデータベースは 1 対 1 および 1 多のリレーションシップを直接処理します。多対多のリレーションシップは、多対多のリレーションシップを 2 つの 1 対多のリレーションシップに分割する中間テーブルを使用して解決する必要があります。この例の問題を解決するには、販売した製品に関する情報を保存する中間テーブル「品目」を追加します。

「品目」テーブルを結合テーブルとして使用して調整されたリレーションシップ

多対多のリレーションシップを解決した後、この例では次のことが示されます:

1 人の顧客は多数の請求書を所持できる

1 つの請求書には多数の品目を記載できる

1 つの製品を多数の品目に記載できる

6. 各テーブルで必要となるフィールドを決定します。

テーブルにはそれぞれ 1 つのトピックがあり、テーブル内のフィールドはすべてそのトピックを説明するものです。たとえば、「顧客」テーブルの 1 つのレコードのフィールドには、一人の顧客に関する情報がすべて保存されます。

同様の理由で、各顧客に固有の識別番号を割り当てる必要があります。データベースでは、これが主キーになります。新しい顧客を追加しない限り、顧客 ID 番号をファイルに入力することはありません。したがって、顧客 ID が存在していれば、その顧客のレコードが存在することになります。「顧客」テーブルには、顧客の名前、住所および電話番号のフィールドも含まれます。

「製品」テーブルには、製品識別番号、各製品の単価および在庫数のフィールドが含まれます。「品目」テーブルには、製品および請求書の識別番号、名前、単価、数量および各製品の販売総額のフィールドがあります。「請求書」テーブルには、請求書識別番号、注文日および販売担当者のフィールドがあります。

各テーブルのフィールド一覧

7. 各テーブルの主キーフィールド (または複数条件リレーションシップのフィールド) を決定し、それぞれを設計図に示します。続いて、各テーブルの外部キーフィールドを示します。

この例では次のようになります:

主キーは「顧客::顧客 ID」、「請求書::請求書 ID」、「製品::製品 ID」、「品目::品目 ID」

外部キーは「請求書::顧客 ID」と「品目::製品 ID」

「請求書」テーブルの顧客データを表示するには、リレーションシップを作成するための共通フィールドが 2 つのテーブルになければいけません。「顧客 ID」がその共通フィールドです。これは「顧客」テーブルでは主キーで、「請求書」テーブルでは外部キーです。

「品目」テーブルの「製品 ID」は「品目」テーブルと「製品」テーブル間の共通フィールドです。このフィールドは「製品 ID」テーブルでは主キーで、「品目」テーブルでは外部キーです。

これらのキーフィールドは照合フィールドの一種です。リレーションシップについてを参照してください。

丸く囲まれた各テーブルのキーフィールド

8. それぞれのテーブルで、データを保存するフィールド、および他の関連テーブルからのデータを参照して使用するフィールドを決定します。

テーブルに保存されている情報の内容から、データをどこに保存するのが適当か、そしてどこで関連テーブルのデータを使用するかを確認することができます。キーフィールド以外のすべてのフィールドは、データベース内で一度だけ使用します。テーブルの内容に関連していない重複フィールドは取り除きます。

不要なフィールドに取り消し線を引いたテーブル

9. 各主キーと、対応する関連テーブルの外部キーを線で結びます。

テーブル間のリレーションシップは、リレーションシップの条件に一致するデータを含むキーフィールドによって確立されます。

テーブルのキーフィールド間のリレーションシップ

この時点でこの設計図の示す内容は次のとおりです:

顧客は多数の異なる請求書を所持できるが、個々の請求書には 1 人の顧客しか記載できない。

請求書には多数の品目を入力できるが、個々の品目は 1 つの請求書に記載される。

製品は多数の異なる品目に使用できるが、個々の品目には 1 つの製品しか記載されない。

関連項目 

リレーションシップについて

リレーションシップグラフの操作

リレーションシップの作成と変更