gpt4 book ai didi

MySQL 多级约束

转载 作者:可可西里 更新时间:2023-11-01 08:21:14 26 4
gpt4 key购买 nike

我在 MySQL 中执行我的数据模型时遇到了问题,我想知道是否有更好的方法来做到这一点。

型号:

Platforms <- Has many groups

Groups <- Has one platform, Has many SymbolSets

SymbolSets <- Belongs to many groups

我的问题是 SymbolSets 只能属于具有相同平台的组。因此,如果平台 A 具有带有符号集 A 的组 A,那么带有组 B 的平台 B 应该无法获得符号集 A,但平台 A 中的任何组都应该能够获得它。

现在我在 SymbolSets 和 Groups 之间有一个链接表,我在代码中强制每个平台的唯一性,但我宁愿在数据库中强制执行一个解决方案,这样就没有人可以随意使用它并破坏它。我一开始就不想建立这种多对多关系,但这并不真正适合我们的业务模型。

最佳答案

Platform     
----------
PlatformId
PRIMARY KEY (PlatformId)

Grouping
----------
GroupingId
PlatformId
PRIMARY KEY (GroupingId, PlatformId)
FOREIGN KEY (PlatformId)
REFERENCES Platfrom(PlatformId)

SymbolSet
----------
SymbolSetId
PRIMARY KEY (SymbolSetId)

SymbolSet 被分配给 Group(SymbolSetToGroup 中的新行)时,它首先必须被分配给Group 所属的相同 Platform(因此首先在 SymbolSetAssigned 中新建一行)。

SymbolSetAssigned               --- assigned to Platform
-----------------
SymbolSetId
PlatformId
PRIMARY KEY (SymbolSetId)
UNIQUE KEY (SymbolSetId, PlatformId)
FOREIGN KEY (SymbolSetId)
REFERENCES SymbolSet(SymbolSetId)
FOREIGN KEY (PlatformId)
REFERENCES Platfrom(PlatformId)

SymbolSetToGroup
----------------
SymbolSetId
GroupingId
PlatformId
PRIMARY KEY (SymbolSetId, GroupingId)
FOREIGN KEY (SymbolSetId, PlatformId)
REFERENCES SymbolSetAssigned(SymbolSetId, PlatformId)
FOREIGN KEY (GroupingId, PlatformId)
REFERENCES Grouping(GroupingId, PlatformId)

关于MySQL 多级约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361478/

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