这是学术上所以请,请注意,在现实世界中没有这样做:)
这项练习的目的是尽可能地规范化。
重点是:员工可以拥有1个角色(但可以为更多员工分配1个角色)。一个角色可以是Reg.Employee或Lead,再次可以将这些角色分配给更多角色(不重复值)这就是问题,因为角色将拥有两个FK(一个用于Reg.Employee,另一个用于Lead)但两者都有需要可以为空,righ?如果我使一个可以为空,那么当为另一个创建一个记录时,我也需要分配这个角色。所以我假设在ERD抽象中,唯一的方法是使两个FK都可以为空。
答案 0 :(得分:1)
我不确定我理解你的问题,所以这是我对问题的陈述:角色可以是两种“类型”中的一种,一种或两种。
如果是这样,那么是的,他们都应该可以为空。如果角色必须至少有一个已分配(两者都不能为空),那么根据DBMS,您可以将其表示为对表的约束。
希望有所帮助。
添加了: 由于它是一个/或两个,但必须是一个,我不知道如何在ERD上显示。在SQL Server中,我将使用Check Constraint,如:
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图上,我不知道。
干杯 -