0

編集:私の改訂された実体関連図学生は多くの接触時間をとることができますが、これは彼らがどのコースにいるかとは関係ありません。したがって、tblContactのcourseIDは不要でした。そのため、特定のチューターが割り当てをマークしたコースと、特定の学生がそのTMAで受講しているコースに関連するtblStudentの主キーを使用しました。ふぅ

http://i.imgur.com/cf3td.png

/編集

私の古いERD

ERD

StudIDとCourseIDは、マージされた複合主キーであることに注意してください

私の質問:tblContactにstudIDとcourseIDを含める必要がありますか?または、tblContactとtblStudentTMAの両方の値が必要だと思った複合主キーを使用しているため、StudIDだけを使用する必要がありますか?これは正しいですか?

4

2 に答える 2

1

答えは、連絡先がコースに関連しているかどうかによって異なります。

コースに関連する場合は、連絡先からコースを識別する何らかの方法が必要ですが、tblContactからtblCourseテーブルにリンクできます。

多くのテーブルに対する私の好みは、例StudentCourseIDで個別の主キーを使用することです。これはIdentity列であり、これにより、関連するテーブルに複数の外部キーを格納する必要がなくなります。

于 2012-04-04T11:04:04.310 に答える
0

tblContactの主キーには、少なくとも2つの列が必要です。それらの1つはStudIDである必要があります。

学生ごとに複数の連絡先を保存する必要があるため、少なくとも2つの列が必要です。連絡先の行が実際の学生を参照していることを保証するには、列の1つをStudIDにする必要があります。2番目の列はおそらくDateOfContactである必要があります。

主キー{StudID、DateOfContact}を使用すると、学生1人につき1日1回の連絡が可能になります。代わりに{StudID、TimeOfContact}を使用する場合(日付の代わりにタイムスタンプを使用する場合)、学生ごとに1日に複数の連絡先を持つことができます。

それに加えて、 tblContactのすべての行が学生とその学生のコースのいずれかを参照する必要がある場合は、主キーにCourseIDを含める必要があります。また、tblContact(StudID、CourseID)からtblStudentCourse(StudID、CourseID)への外部キー参照も必要です。

tblContactのすべての行がコースを参照する必要がない場合、tblContact.CourseIDはnull可能である必要があり、主キーの一部であってはなりません。ただし、tblContact(StudID、CourseID)からtblStudentCourse(StudID、CourseID)への外部キー参照が必要です。

于 2012-04-04T11:18:06.387 に答える