我有一张类似于以下内容的表格:
serial, integer1, integer2
integer1 != integer2
存在约束,而(1, 2)
和(2, 1)
集不能共存(因为它们是相同的集合,顺序不同)。
有一种简单的方法可以让我做到以下几点:
当我插入标识符对时,它会将关系传播到每个标识符的所有其他对。例如:
开始于:
(1, 2)
(3, 4)
如果我插入(1, 3)
;自动制作(1, 4)
(2, 4)
和(2, 3)
。如果有一些可以执行的精选技巧会很好,但我认为它可能需要成为实际物理创建这些行的触发器。有关最佳方法的建议吗?
我希望这是超递归的。
答案 0 :(得分:0)
就个人而言,我说最好的选择是创建一个表组,一个表 serial 。组表就是你所说的整数1和2是A组的一部分和整数2,3和4是B组的一部分。串行表将是所有"坐标"的列表。在一个组和相关的序列中。
从那里,您可以在插入,删除和更新时在组表上触发,将更改传播到序列表(禁用现在已消失的坐标或删除它们,以及然后使用 null 或默认序列创建新条目,甚至可以通过存储过程或串行表上的触发器生成。)
我与群组合作的原因是因为它可以让您更轻松地管理删除。如果你没有拆分桌子,那么从A组中移除1会很粗糙。
基本上是这样的: