logo

ER モデルにおける一般化、特殊化、集約

より大きなデータに ER モデルを使用すると、データベース モデルの設計中に多くの複雑さが生じます。そのため、複雑さを最小限に抑えるために、一般化特殊化と集約が ER モデルに導入されました。これらはデータの抽象化に使用されました。抽象化メカニズムを使用して、オブジェクトのセットの詳細を非表示にします。 

一般化

一般化は、エンティティのセットから共通のプロパティを抽出し、そこから一般化されたエンティティを作成するプロセスです。これはボトムアップのアプローチであり、2 つ以上のエンティティに共通の属性がある場合に、それらのエンティティを上位レベルのエンティティに一般化できます。

ER モデルにおける一般化と特殊化と集約' title=一般化

例: 以下の図に示すように、STUDENT と FACULTY は、PERSON と呼ばれる上位レベルのエンティティに一般化できます。この場合、P_NAME や P_ADD などの共通属性は、より上位の属性の一部になります。 実在物 (人物) と専門的な 属性 S_FEE と同様に、専門エンティティ (STUDENT) の一部になります。 



専門分野

特化では、エンティティはその特性に基づいてサブエンティティに分割されます。これは、上位レベルのエンティティが 2 つ以上の下位レベルのエンティティに特化されるトップダウンのアプローチです。 エンティティ

ER モデルにおける一般化と特殊化と集約' loading='lazy' title=専門分野

例: 従業員管理システムの EMPLOYEE エンティティは、DEVELOPER TESTER などに特化できます。この場合、E_NAME E_SAL などの共通属性は上位エンティティ (EMPLOYEE) の一部となり、TES_TYPE などの特殊な属性は特殊なエンティティ (TESTER) の一部になります。 

継承

これは一般化と専門化の重要な特徴です。特殊化では、上位レベルのエンティティが、その属性を継承する下位レベルのサブエンティティに分割されます。一般化すると、同様の下位レベルのエンティティは、共通の属性を保持する上位レベルのエンティティに結合されます。どちらの場合も、継承により、サブエンティティが親エンティティのプロパティを再利用できるようになります。

  1. 属性の継承: これにより、下位レベルのエンティティが上位レベルのエンティティの属性を継承したり、その逆も可能になります。図では、Car エンティティは Vehicle エンティティの継承なので、Car は Vehicle の属性を取得できます。例: Car は Vehicle の Model 属性を取得できます。
  2. 関係の継承 : サブエンティティも親エンティティの関係を継承します。
  3. 継承の上書き : サブエンティティは、親とは異なる独自の属性または動作をオーバーライドまたは追加できます。
  4. 参加の継承: ER モデリングにおける参加の継承とは、上位レベルのエンティティ (スーパークラス) から下位レベルのエンティティ (サブクラス) への参加制約の継承を指します。これにより、属性と関係自体は異なる方法で継承されますが、サブクラスは関係における同じ参加ルールに従うことが保証されます。
ER モデルにおける一般化と特殊化と集約' loading='lazy' title=関係例

例: 図では、Vehicle エンティティは Cycle エンティティとの関係を持っていますが、Vehicle エンティティとの関係自体は自動的に取得されません。参加の継承は、エンティティ間の実際の関係ではなく、参加制約の継承のみを指します。

集計

  • ER 図は、一部のシナリオで必要となるエンティティと関係の間の関係を表すことができません。
  • このような場合、対応するエンティティとの関係は上位レベルのエンティティに集約されます。
  • 集約は、関係をより高いレベルのエンティティ セットとして表現できる抽象化です。
ER モデルにおける一般化と特殊化と集約' loading='lazy' title=集計

例: プロジェクトに取り組む従業員には、何らかの機械が必要になる場合があります。したがって、関係 WORKS_FOR とエンティティ MACHINERY の間に REQUIRE 関係が必要です。集約を使用すると、エンティティ EMPLOYEE および PROJECT との WORKS_FOR 関係が 1 つのエンティティに集約され、集約されたエンティティと MACHINERY の間に関係 REQUIRE が作成されます。

スキーマによる集計の表現

リレーショナル スキーマで集計を表すには、次の手順に従います。

1. 集約された関係のスキーマを作成する

  • これはエンティティ セットのように扱われます。
  • これには、基本関係に参加しているエンティティの主キーが含まれます。
  • これには、基本関係の説明的な属性も含まれます。

2. 上位レベルの関係 (集約) のスキーマを作成する

  • このスキーマには以下が含まれます。 集約された関係スキーマの主キー。
  • 関連する関連エンティティの主キー。
  • この上位レベルの関係の追加の説明属性。