SQL Server 中可以使用条件外键吗?

问题描述 投票:0回答:1

我知道键可以是复合键 - 由多个列组成,但我认为关系的双方必须具有相同数量的列。

例如,给定一个带有

ID
列的客户端表和一个带有
Staff
列的
ID
表。

还有一个

event
表,其中包含
ID
列和
CorS
列,其中可以包含值
C
S

C
中的
event.CorS
值表示event.ID -> client.id。

S
中的
event.CorS
值表示event.ID -> Staff.id。

软件知道这一点并相应地编写 SQL。我的问题是是否可以在数据库模式中定义它以强制 SQL Server 中的引用完整性?

谢谢你

sql-server database-design schema
1个回答
0
投票

正如其他人回答的那样,您所要求的内容不受设计支持。改变你的设计。

您可以考虑:

CREATE TABLE [Event] (
    Id INT IDENTITY(1,1),
    Cors CHAR(1),
    ObjectType INT,
    ObjectId INT
)

然后根据对象类型进行操作,但您将失去引用完整性、外键(FK)的执行。

或者,创建两个单独的表,即 ClientEvent 和 StaffEvent 并使用常规 FK

您的问题不是技术问题,而是设计问题。

© www.soinside.com 2019 - 2024. All rights reserved.