我有类似以下连接表的情况:
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
应该成功,因为它是一个独特的群体。
我想到的两种方法是:
- 根据顺序在物化视图中透视表,并在透视字段上放置唯一键。我不喜欢这样,因为在 Oracle 中,由于旋转规则和 32 列索引限制(我想了解决第二个问题的方法,但仍然),我必须限制组中的行数。
- 在 B_ID 的组合上创建一些唯一的哈希值并使其唯一。也许我还不够数学家,但我想不出一种不限制我可以用于 B_ID 的值数量的方法。
我觉得我在这里缺少一些明显的东西,比如我可以添加某种排序列并设置不同的唯一键,但我已经做了很多阅读并且没有想出任何东西。也可能是我继承的数据模型有缺陷,但我想不出任何能给我类似灵活性的东西。