2.2 カーレースの例、エンティティ関係
ドライバ、カーレースおよびチーム・エンティティが、それらの間の関係とともに提示されます。アプリケーションの二面性ビューの定義に必要な表の決定に役立つように、アプリケーション・ドキュメントに対応するエンティティを定義します。
アプリケーションで使用するドキュメントから、エンティティとその関係を設定できます。各エンティティが対応しているドキュメント・タイプは、ドライバ、レース、チームです。
対応するドキュメントと異なり、使用するエンティティはコンテンツの重複がなく、正規化されています。エンティティのコンテンツ(エンティティが表す内容)は、対応するドキュメント・タイプのみに固有であり、別のドキュメント・タイプの一部であるものは含まれていません。
-
ドライバ・エンティティは、レース・ドキュメントまたはチーム・ドキュメントにないドライバ・ドキュメントのコンテンツのみを表します。これには、ドキュメント・フィールド
name
およびpoints
に対応するドライバの名前およびポイントのみが含まれています。 -
レース・エンティティは、ドライバ・ドキュメントまたはチーム・ドキュメントにないレース・ドキュメントのコンテンツのみを表します。これには、ドキュメント・フィールド
name
、laps
、date
およびpodium
に対応するレースの名前、ラップ数、日付および表彰者情報のみが含まれています。 -
チーム・エンティティは、ドキュメントまたはレース・ドキュメントにないチーム・ドキュメントのコンテンツのみを表します。これには、ドキュメント・フィールド
name
およびpoints
に対応するチームの名前およびポイントのみが含まれています。
2つのエンティティは、カーディナリティに従って関連しています。このような関係には次の3つのタイプがあります: 脚注1
- 1対1 (1: 1)
- エンティティAのインスタンスは、エンティティBの1つのインスタンスにのみ関連付けることができます。たとえば、1人のドライバは1つのチームにのみ存在できます。
- 1対多(1: N)
- エンティティAのインスタンスは、エンティティBの1つ以上のインスタンスに関連付けることができます。たとえば、チームには多数のドライバを含めることができます。
- 多対多(N:N)
- エンティティAのインスタンスは、エンティティBの1つ以上のインスタンスに関連付けることができ、その逆も可能です。たとえば、レースには多くのドライバがあり、ドライバは多くのレースに参加できます。
多対1 (N:1)の関係は、反対の視点から見ると、1対多の関係にすぎません。1対多のみを使用します。
図2-1を参照してください。矢印は関係の方向を示し、矢印は2番目のカーディナリティを示します。たとえば、エンティティteamからエンティティdriverへの1:Nの矢印はdriverの方向を指し、1つのチームが多くのドライバに関連していることを示します。
ドライバは、1つのチームにのみ関連付けることができます(1:1)。チームは、複数のドライバに関連付けることができます(1:N)。ドライバは、複数のレースに関連付けることができます(N:N)。レースは、複数のドライバに関連付けることができます(N:N)。
脚注一覧
脚注1: ここで使用される表記では、Nは数値を表すのではなく、簡単には"多数"、より正確には"1つ以上"の省略形です。