我有一個名爲Tbl_Event的表,用於存儲即將發生的事件的基本信息。兩個表之間的多個外鍵
Tbl_Event
EventID Description Location
我有我創建了一個新的表
tbl_Event_Staff
RecordID StaffID EventID
,STAFFID另一個表叫工作人員,存儲人員信息
Tbl_Staff
StaffID Name
現在每個事件可以有多個職員,爲實現這一和EventID對它們有一個COMBINED唯一約束。 有一個附加條件,其中一名工作人員需要成爲活動的主管。什麼是最佳的解決方案來實現這一目標,我應該在tbl_event添加一個額外的列 - SupervisorID
Tbl_Event
EventID Description Location SupervisorID
並將其鏈接到tbl_Event_Staff上,STAFFID(在這種情況下,將是這兩個表之間的外鍵 - 事件ID和StaffID)
或 *我不認爲這是冗餘數據的最佳解決方案。
我應該向tbl_Event_Staff - isSupervisor(bool)添加一個額外的列,並且每行都有一個布爾變量,表示該EVENT的員工是否爲主管。
tbl_Event_Staff
RecordID StaffID EventID IsSupervisor
1 10 3 true
2 20 3 false
3 30 3 false
或
是否有其他解決方案?
感謝您的輸入。這是解決此問題的最佳方法嗎?我將擁有大量冗餘數據,並且更新數據庫將會困難得多。雖然,每當用戶將職員設置爲主管時,都會想到它,但我可以遍歷該事件的所有staffID,並將IsSupervisor標誌設置爲false,但是該表不會被正常化。猜這就是我必須付錢的價格。 – 2013-04-26 06:41:43
@ Abhi.Net - 好吧,到目前爲止你有兩個答案,我們不同意。以此爲標誌,說明沒有「最佳方法」。只有您知道您需要從這些數據結構中支持哪些查詢和操作。而且,正如我在旁邊指出的那樣,您可以(從任一設計中)構建模仿其他設計的視圖 - 因此,如果稍後決定其他結構更合適,則可以重新構建它,然後只需重新編寫這些視圖查詢從重新設計中受益。 – 2013-04-26 06:44:55
多數民衆贊成我認爲,我強調要獲得最佳解決方案的唯一原因是,這是ER圖分配的一部分,我需要創建一個數據庫結構並規範化它。除了這部分以外,一切都完成了,我不確定採用哪種方法,但我可能會選擇第二種,然後留下評論來解釋我的選擇。 – 2013-04-26 06:47:51