我有两个表,员工和客户。员工和客户数据来自我无法控制的Web服务调用。在Web服务调用中,Employee和Customer都使用Guid表示其ID。
我需要跟踪员工和客户的一些设置数据,上次登录时间等,所以我在Sql Server中创建了一个名为AuthenticatedUsers的表。
在AuthenticatedUsers表上,我有以下列 -Id(Guid) -Email(nchar(250)) -NameIdentifier(nchar(250)) -LastLoggedOn(DateTime) -IsLockedOut(位)
员工从Web服务调用迁移到新的员工表,与客户一样(Web服务实际上仅用于共享数据和验证凭据)。
因此,为了让客户或员工登录,它们将存在于客户或员工表中。
所以我的delimma是,如何在经过身份验证的用户Id列上添加约束,以便A:具有该ID的客户必须已存在于Cusutomer表中或B:具有该Id的员工必须存在于Employee中表
我只会使用Check Constraint,但您不能在检查约束中使用子查询。而且我不确定是否可以从Id创建外键 - > CustomerId和Id - > Employee.Id。
我唯一能想到的是将AuthenticatedUsers上的主键更改为自动ID,然后为CustomerID和EmployeeID添加一列,但我最好还是避免这样做。
答案 0 :(得分:0)
一种方法是
你可以有两列。 AuthenticatedUsers表中的EmployeeId
,CustomerId
foreign key
的约束分别为Employers
和Customers
其中一个列值为NULL,这没关系。