gpt4 book ai didi

mysql - 跨多个表的唯一键

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:13 26 4
gpt4 key购买 nike

重写问题:

我有三个表,objects,owners 和 objectOwnerRelation

对象有三列:id、name、type

owners 有两列:id, owner

objectOwnerRelation 有三列:id, objectId, ownerId

objectId = 对象中的id

ownerId = 所有者中的 id

两个对象可以具有相同的名称和类型,但前提是所有者不同。这意味着具有相同名称和类型的两个对象不能出现在具有相同 ownerId 的 objectOwnerRelation 中

一个对象可以有多个所有者,一个所有者可以有多个对象。

最佳答案

无法强制执行约束:

Two objects can have the same name and type but only if the owner is different.

仅使用声明性参照完整性 (DRI)。仅使用 DRI,您可以创建一个表,其中包含构建唯一键所需的所有列。您可以将 object.nameobject.type 非规范化为您的 objectOwnerRelation 表。这将确保 objectOwnerRelation 中没有具有相同名称​​和类型所有者的记录,但仅在交集表本身中。

归根结底,DRI 不允许子表对父表施加约束。

您正在寻找的约束需要使用触发器或其他代码以程序方式施加。

关于mysql - 跨多个表的唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12997073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com