2.2 カーレースの例、エンティティ関係

ドライバ、カーレースおよびチーム・エンティティが、それらの間の関係とともに提示されます。アプリケーションの二面性ビューの定義に必要な表の決定に役立つように、アプリケーション・ドキュメントに対応するエンティティを定義します。

アプリケーションで使用するドキュメントから、エンティティとその関係を設定できます。各エンティティが対応しているドキュメント・タイプは、ドライバ、レース、チームです。

対応するドキュメントと異なり、使用するエンティティはコンテンツの重複がなく正規化されています。エンティティのコンテンツ(エンティティが表す内容)は、対応するドキュメント・タイプのみに固有であり、別のドキュメント・タイプの一部であるものは含まれていません。

  • ドライバ・エンティティは、レース・ドキュメントまたはチーム・ドキュメントにないドライバ・ドキュメントのコンテンツのみを表します。これには、ドキュメント・フィールドnameおよびpointsに対応するドライバの名前およびポイントのみが含まれています。

  • レース・エンティティは、ドライバ・ドキュメントまたはチーム・ドキュメントにないレース・ドキュメントのコンテンツのみを表します。これには、ドキュメント・フィールドnamelapsdateおよびpodiumに対応するレースの名前、ラップ数、日付および表彰者情報のみが含まれています。

  • チーム・エンティティは、ドキュメントまたはレース・ドキュメントにないチーム・ドキュメントのコンテンツのみを表します。これには、ドキュメント・フィールドnameおよびpointsに対応するチームの名前およびポイントのみが含まれています。

2つのエンティティは、カーディナリティに従って関連しています。このような関係には次の3つのタイプがあります: 脚注1

1対1 (1: 1)
エンティティAのインスタンスは、エンティティB1つのインスタンスにのみ関連付けることができます。たとえば、1人のドライバは1つのチームにのみ存在できます。
1対多(1: N)
エンティティAのインスタンスは、エンティティB1つ以上のインスタンスに関連付けることができます。たとえば、チームには多数のドライバを含めることができます。
多対多(N:N)
エンティティAのインスタンスは、エンティティB1つ以上のインスタンスに関連付けることができ、その逆も可能です。たとえば、レースには多くのドライバがあり、ドライバは多くのレースに参加できます。

多対1 (N:1)の関係は、反対の視点から見ると、1対多の関係にすぎません。1対多のみを使用します。

図2-1を参照してください。矢印は関係の方向を示し、矢印は2番目のカーディナリティを示します。たとえば、エンティティteamからエンティティdriverへの1:Nの矢印はdriverの方向を指し、1つのチームが多くのドライバに関連していることを示します。

図2-1 カーレースの例、方向を示したエンティティ関係図(1)

図2-1の説明が続きます
「図2-1 カーレースの例、方向を示したエンティティ関係図(1)」の説明

ドライバは、1つのチームにのみ関連付けることができます(1:1)。チームは、複数のドライバに関連付けることができます(1:N)。ドライバは、複数のレースに関連付けることができます(N:N)。レースは、複数のドライバに関連付けることができます(N:N)。

関連項目:

Database normalization (Wikipedia)



脚注一覧

脚注1: ここで使用される表記では、Nは数値を表すのではなく、簡単には"多数"、より正確には"1つ以上"の省略形です。