2016-06-13 12 views
0

の主キー:このERDに関連エンティティ

enter image description here

証明エンティティが連想エンティティであり、一意の識別子がある - 証明書番号を。連想エンティティは主キーを他のエンティティから継承するためです。関連するエンティティのキ​​ーフィールドは各エンティティの主キーであり、関連するエンティティ上の外部キーであり、両方の外部キーが一緒になってプライマリキーになります(Concepts from Textbook)。

Certificate Entityの主キーは、CertificateNumber、EmployeeID、CourseIDの3つの部分を含む複合キーである必要がありますか?

または主キーがCertificateNumberで、このエンティティの属性としてEmployeeID、CourseIDを使用しますか?

通常、関連エンティティには独自の識別子(証明書番号)がないので、私はこの質問に混乱します。コンポジットキー(EmployeeID、CourseID)として結合された他のエンティティからプライマリキーを取り出し、そのコンポジットキーを識別子として使用します。

アレックス

答えて

1

連想エンティティは、自分の属性に基づいて主キーを持っていない、ありがとうございました。最初の図では、関数依存性が(Employee_ID, Course_ID) -> Date_Completedの関連エンティティを作成しました。 Employee_IDCourse_IDは表の列であるが、属性ではないことに注意してください。 ERモデルの属性は、エンティティセットから値セットへのマッピングです。外部キーは関係のコンポーネントであり、値セットにはマッピングされません。

2番目の図では、代理キーを追加することによって、関連エンティティがEmployeeCourseの関係にある通常のエンティティになります。主キーはCertificate_Numberですが、(Employee_ID, Course_ID)というユニークな制約が考えられます。関係は、Certificateテーブルに記録されている関数従属性Certificate_Number -> Employee_IDCertificate_Number -> Course_IDによって表されます。

また、アプリケーションエンティティを保持し、(Employee_ID, Course_ID)をプライマリキーとして使用し、一意に制約されている(おそらく自動インクリメントされていますが)Certificate_Numberを通常の属性にすることもできます。この場合、ダイアグラムは最初のダイアグラムのように見えますが、リレーションシップには余分な属性があります。

関連する問題