我知道键可以是复合键 - 由多个列组成,但我认为关系的双方必须具有相同数量的列。
例如,给定一个带有
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 中的引用完整性?
谢谢你
正如其他人回答的那样,您所要求的内容不受设计支持。改变你的设计。
您可以考虑:
CREATE TABLE [Event] (
Id INT IDENTITY(1,1),
Cors CHAR(1),
ObjectType INT,
ObjectId INT
)
然后根据对象类型进行操作,但您将失去引用完整性、外键(FK)的执行。
或者,创建两个单独的表,即 ClientEvent 和 StaffEvent 并使用常规 FK
您的问题不是技术问题,而是设计问题。