我正在构建我的第三个数据库,我不确定如何构建主键和唯一约束以确保数据完整性。
数据库会在公开数据发布时定期更新,有些是每月一次,有些是每年一次,并且查询负载较低。
我有一些表,其中列的组合使每一行都是唯一的。我知道我可以使用复合主键,但我不确定这是否是最佳实践,因为我在此阅读的许多文章都有相互矛盾的观点。
例如,一个表需要五列用于数据类型的唯一性:
我相信这会使主键达到25个字节,并且所有这五列都将被定期选择并经常在where子句中使用。其中一个smallint也是一个外键,但没有外键可以引用该表。
我所知道的唯一选择是为每一行创建唯一标识符,将其设置为主键并在五列上创建唯一约束。
答案 0 :(得分:-1)
我不知道您的数据库的用途是什么,但首先建议您是否可以添加id列作为主键。每个查询都会更容易。
然后如果你想在同一个表中只有列的唯一组合,那么简单的方法就是使用关键字UNIQUE的索引:
CREATE UNIQUE NONCLUSTERED INDEX [IX_COLUMN1_COLUMN2]
ON TABLE(COLUMN1 ASC, COLUMN2ASC);