首页 / MYSQL / MySQL多层次约束
MySQL多层次约束
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL多层次约束,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1636字,纯文字阅读大概需要3分钟。
内容图文
我在用MySQL强制执行数据模型时遇到了麻烦,我想知道是否有更好的方法可以做到这一点.
模型:
Platforms <- Has many groups
Groups <- Has one platform, Has many SymbolSets
SymbolSets <- Belongs to many groups
我的问题是SymbolSet只能属于具有相同平台的组.因此,如果平台A具有带有SymbolSet A的组A,则带有Group B的Platform B应该无法获取SymbolSet A,但是Platform A中的任何组都应该能够获取它.
现在,我在SymbolSets和Groups之间有一个链接表,并且在代码中每个平台都实施了唯一性,但是我宁愿在DB中实施一个解决方案,以便没人能弄乱它并破坏事情.我不希望一开始就没有这种多对多的关系,但这确实不适合我们的业务模型.
解决方法:
Platform
----------
PlatformId
PRIMARY KEY (PlatformId)
Grouping
----------
GroupingId
PlatformId
PRIMARY KEY (GroupingId, PlatformId)
FOREIGN KEY (PlatformId)
REFERENCES Platfrom(PlatformId)
SymbolSet
----------
SymbolSetId
PRIMARY KEY (SymbolSetId)
将SymbolSet分配给组(SymbolSetToGroup中的新行)时,首先必须将其分配给该组所属的同一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多层次约束全部内容,希望文章能够帮你解决MySQL多层次约束所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。