没有pivot的行之间的声明完整性约束

时间:2011-03-18 00:54:12

标签: oracle data-modeling pivot referential-integrity materialized-views

我遇到类似以下连接表的情况:

A_ID  B_ID
1     27
1     314
1     5

我需要在表上设置一个约束,以防止输入重复的组。换句话说:

A_ID  B_ID
2     27
2     314
2     5

应该失败,但是

A_ID  B_ID
3     27
3     314

应该成功,因为它是一个独特的群体。

我想到的两种方式是:

  1. 根据订单在物化大小视图中旋转表格,并在枢轴字段上放置一个唯一键。我不喜欢这个,因为在Oracle中我必须限制组中的行数,因为两个转向规则和32列索引限制(考虑到解决第二个问题的方法,但仍然如此)。 LI>
  2. 在B_ID的组合上创建一些唯一的哈希值,并使其唯一。也许我不够数学家,但我想不出一种方法可以做到这一点,不会限制我可以用于B_ID的值的数量。
  3. 我觉得这里有一些显而易见的东西,比如我可以添加某种排序列并设置一个不同的唯一键,但我已经做了很多阅读而没有想出来任何东西。也许我继承的数据模型存在缺陷,但我无法想到任何会给我类似灵活性的东西。

0 个答案:

没有答案