2014-01-06 38 views
0

這是學術,所以請,沒有意見,在現實世界中是不是這樣做:)如何解決在ER圖這一正常化問題

這個練習的要點是要正常化儘可能。

重點是:員工可以有1個角色(但1個角色可以分配給更多的員工)。角色可以是Reg.Employee或Lead,也可以將這些角色分配給更多角色(而不是重複值)。這是問題,因爲角色將持有兩個FK(Reg.Employee和另一個領導者),但兩者都是需要是空的,Righ?如果我讓一個爲空,爲另一個創建記錄時,我也需要分配這個角色。所以我假設在ERD抽象中,唯一的方法是使兩個FK都可以爲空。 enter image description here

+0

「員工」,「註冊員工」和「領導者」之間的關係如何?員工應該是一個人還是另一個? –

回答

1

不知道我理解你的問題,所以這裏是我對這個問題的陳述:角色可以不是一個或兩個'類型'。

如果是這樣,那麼是的,他們都應該是可空的。如果角色必須至少有一個被賦值(兩者不能爲空),那麼根據DBMS,您可能會將其表示爲表中的約束條件。

希望有所幫助。

加入: 因爲它是一個/或不是兩個,但必須是一個,我不知道如何在ERD上顯示。在SQL Server中我會用一個檢查約束,如:(從表中我有一個例子)

ALTER TABLE [config].[Generator] WITH CHECK ADD CONSTRAINT [CK_Generator] CHECK 
((([PNWriterProviderId] IS NOT NULL OR [BodWriterProviderId] IS NOT NULL) 
and 
([PNWriterProviderId] IS NULL OR [BodWriterProviderId] IS NULL))) 
GO 

在這裏,人們不能爲空,且必須爲空。

如何說把這個放在ERD圖上,就像我說的,我不知道。

乾杯 -

+0

謝謝,是的 - 每個角色都有Empl或Lead分配,即從不分配或兩者同時分配。因此,對於每個記錄,一個將是空的,另一個是空的。我只是在開發ERD,不知道如何去做(包括你提到的限制)。我假設我仍然可以爲空,但它需要在其他地方處理(只能設置一個)。 – user970696

+0

如果它是/或者,那麼你不需要兩個單獨的實體。你可以只有一個 - 就像員工有一個角色一樣,角色有一個EmployeeType(或任何它應該被稱爲)。 –

+0

好吧,這是因爲高度規範化,以防發生某些變化。正如我所說,這是一個學術問題。 – user970696