我正在构建我的第三个数据库,我不确定如何构建主键和唯一约束以确保数据完整性。数据库设计:主键和唯一约束
当公开数据发布时,数据库会定期更新,每月一次,每年一次,并且查询负载较低。
我有一些表中列的组合使每一行都是唯一的。我知道我可以使用复合主键,但我不确定这是否是最佳实践,因为我阅读的许多文章都有相互冲突的观点。
例如,一个表需要的唯一性五列与数据类型:
- SMALLINT
- 炭(7)
- VARCHAR(7)
- SMALLINT
- VARCHAR(3)
我相信这会使主键高达25字节并且所有这五列将经常被选择并经常在where子句中使用。其中一个smallint也是一个外键,但没有外键会引用这个表。
我知道的唯一选择是为每一行创建一个唯一标识符,将其设置为主键并在五列上创建唯一约束。
- 什么是最好的选择,如果是使用复合主键应该是聚簇还是非聚簇?
- 是否有一个建议的组合主键的最大列数和字节数?
由于没有外键引用此表,没有下降到复合群集主键。您只需根据查询表的方式决定哪个列应该是最前面的列,然后为用户可能经常搜索的其他列(键或不键)添加非聚簇索引。 – 2015-04-02 11:58:48
我认为领先专栏应该是最常用于查询的专栏?其他栏的顺序是否有相关性? – Kieran 2015-04-02 13:03:17
是的,领先列取决于查询表的方式。例如,如果外键列通常作为一对多标识关系的多边访问,那么将外键列指定为主键中的第一个键是有意义的。 – 2015-04-03 02:31:07