使用条件外键,一个或另一个

时间:2015-01-07 18:44:55

标签: sql-server

我有两个表,员工和客户。员工和客户数据来自我无法控制的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添加一列,但我最好还是避免这样做。

1 个答案:

答案 0 :(得分:0)

一种方法是

你可以有两列。 AuthenticatedUsers表中的EmployeeIdCustomerId foreign key的约束分别为EmployersCustomers

其中一个列值为NULL,这没关系。