我在两个项目之间有一个相似性矩阵,我想将其作为表存储在关系数据库中。因此,我希望表格有三个字段;第一项的 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这样的东西,您可以将这样的计算放入索引视图定义中(