2013-07-13 49 views
2

我有這3個實體的學生,工作人員和討論。
他們的關係是這樣的: 1學生可以發帖討論; 1位員工可以發帖討論; 但1個討論只能由學生或工作人員發佈。 可以將外鍵studentID和staffID駐留在討論實體上嗎? 但這樣做可能會使其中的每個記錄在這兩個屬性中都有1個空值。 enter image description hereERD關係 - 將2個可選實體連接到1個實體

回答

6

應用Second Normal Form (2NF)將是一個準則:

第一種方法:具有人基表:
你可能有一個People表來存儲人民的共同特性。學生和工作人員將是本表的孩子,在討論桌上有Peoples表外鍵將解決問題。

第二種方法:有一個基表的討論
以減少冗餘你可能有一個Discussion-Base表,這將是基表的其他兩個實體: Staff-DiscussionStudent-Discussion表。
Discussion-Base表將包含共享屬性。
當員工討論和學生討論表的屬性有所不同時,解決方案將得到重視。
如果它們是相同的,唯一的區別是可選的外鍵,那麼您提到的設計是高效的。
希望這會有所幫助。

+0

對於第一種方法,請參見[標籤:類表繼承] –