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

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

FileMaker Pro カスタム App の一般的な設計手順は、カスタム App の作成を参照してください。

リレーショナルデータベースを計画するには:

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

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

  2.  

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

  3. テーブル相互の関係を決定します。これは、「顧客が製品を注文する」、「請求書で顧客の注文を管理する」のように、カテゴリの相互関係を簡単な文章で表現することで実行できます。
  4. 1 つのテーブルと別のテーブルを連結して、2 つのテーブル間のリレーションシップを示します。たとえば、顧客は請求書を所持でき、請求書は製品を所持できます。

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

  5.  

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

  6. 記号でテーブル間を連結してテーブル間のリレーションシップのタイプを示します。
    • 1 対 1 のリレーションシップでは、テーブル A の 1 つのレコードとテーブル B の 1 つのレコードが一致します。
    • 1 対多のリレーションシップでは、テーブル A の 1 つのレコードとテーブル B の多数のレコードが一致します。
    • 多対多のリレーションシップでは、テーブル A の多数のレコードとテーブル B の多数のレコードが一致します。

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

  7.  

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

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

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

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

  9.  

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

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

    • 1 人の顧客は多数の請求書を所持できる
    • 1 つの請求書には多数の品目を記載できる
    • 1 つの製品を多数の品目に記載できる
  10. 各テーブルで必要となるフィールドを決定します。

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

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

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

  11.  

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

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

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

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

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

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

     

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

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

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

  15.  

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

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

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

  17.  

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

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

    • 顧客は多数の異なる請求書を所持できるが、個々の請求書には 1 人の顧客しか記載できない。
    • 請求書には多数の品目を入力できるが、個々の品目は 1 つの請求書に記載される。
    • 製品は多数の異なる品目に使用できるが、個々の品目には 1 つの製品しか記載されない。