我很难找到答案,因为我很难表达这个问题。所以我很抱歉,如果他们是一个重复(或类似的)问题在这里。
是否有办法限制MySQL中对特定外键的引用数?
通过隐喻解释:
把它想象成一个有“领导者”的学习小组。你有一张“领袖”桌,还有一张“会员”桌。
是否有办法防止每个“领导者”通过外键分配超过“x”号的“成员”?
或者,这是我在创建“成员”时首先要做的事情吗?即。检查已经存在多少引用并更改外键(如果ID > 'x number‘)的一些方法
谢谢你的帮助或指导,你可以给!
发布于 2015-10-17 07:25:34
我不确定这是否是一个非常干净的解决方案,但可能会奏效。
假设您有一个Leader表和一个Member表。创建第三个表,LeaderMember。它应该有三列:LeaderID、MemberID和MemberNumber。LeaderID和MemberID都是各自表的外键。
CREATE TYPE用于MemberNumber列,限制它可以使用的整数值,例如从1到8。
现在,在表上施加两个约束。首先是UNIQUE对MemberID的约束,它确保成员只能有一个领导者。然后是一个UNIQUE约束,用于(LeaderID, MemberNumber)列的组合。这将意味着每个领导者只能拥有尽可能多的成员,因为MemberNumber可能有不同的价值观。
我可以看到这方面的一些缺点--首先,插入一个新的Member有点棘手,因为您必须找到一个尚未使用的MemberNumber值。请记住,无论如何,您必须在这一点上进行检查--看看所讨论的Leader是否已经有足够的成员。其次,MemberNumber的类型可能意味着具有不同值的成员之间存在一些差异--数字是有意义的。
然而,我认为这是一个相当干净和规范化的设计。
https://dba.stackexchange.com/questions/118314
复制相似问题