如何创建顺序唯一的复合主键(id_x、id_y)?



我在两个项目之间有一个相似性矩阵,我想将其作为表存储在关系数据库中。因此,我希望表格有三个字段;第一项的 ID、第二项的 ID 以及它们的相似性值。

我考虑使两个 id 列成为复合主键。但是我如何确保给定两个项目(x, y),复合键(id_x, id_y)(id_y, id_x)相同,这样我就不会有重复的条目?

假设您的id值使用的是有序的数据类型,实现此目的的最简单方法之一是强制实施CHECK约束,以使id_x小于id_y

如果在创建条目之前无法强制实施此排序,这可能会带来一些困难。某些数据库允许在索引定义中进行计算,在这种情况下,您可以在(MIN(id_x,id_y),MAX(id_x,id_y))上定义索引并省略CHECK。(对于像SQL Server这样的东西,您可以将这样的计算放入索引视图定义中(

最新更新