假设我有一对表 A 和 B,它们是标准的一对多关系,其中 B 包含 A 的外键。我想引入一个与 B 具有多对多关系的表 C,但有一个限制:对于 C 中的任何给定记录,B 中的所有关联记录都与 A 中的单个记录相关联。 C 和 B 之间的简单链接表提供了所需的多对多关系,但它并不能阻止 C 中的单个记录与与不同 A 绑定的 B 相关联。我能想到的在数据库中实现此目的的唯一方法是创建触发器来检查并强制执行条件。还有其他适用的技术吗?
假设我有一对表 A 和 B,它们是标准的一对多关系,其中 B 包含 A 的外键。我想引入一个与 B 具有多对多关系的表 C,但有一个限制:对于 C 中的任何给定记录,B 中的所有关联记录都与 A 中的单个记录相关联。 C 和 B 之间的简单链接表提供了所需的多对多关系,但它并不能阻止 C 中的单个记录与与不同 A 绑定的 B 相关联。我能想到的在数据库中实现此目的的唯一方法是创建触发器来检查并强制执行条件。还有其他适用的技术吗?
a
在表中b
,以及在用于定义和c
之间的多对多关系的桥接表中,包含表的主键:b
c
然后表
c
可以与许多 s 相关b
(反之亦然),但这些表中的相关行始终只与单个相关a
。您可以在物化视图上使用约束来强制执行条件。
假如有表
a
、b
,以及一个表示和c
之间多对多关系的桥接表:b
c
a
然后,您可以创建一个物化视图,计算每个不同值的数量c
:并对物化视图使用约束来强制计数应该正好是 1。
(注意:未经测试,但它应该能给你提供大致的概念。)