我有一个名为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