Microsoft SQL Server 2008主键的含义

usr*_*usr 3 database sql-server database-design primary-key sql-server-2008

主键的概念对SQL Server的数据库引擎有什么意义?我不是指在"ID"列上创建的聚簇/非聚簇索引,我的意思是约束对象"主键".它是否存在是否重要?

备择方案:

  1. alter table添加主键群集
  2. alter table create clustered index

这有什么不同吗?

Hei*_*nzi 6

通常,KEY是唯一标识表中每一行的列(或列的组合).表中可以有多个KEY(例如,您可能有一个Person表,其中社会安全号码和自动增加的号码都是KEY).

数据库设计者选择其中一个 KEY作为PRIMARY KEY.从概念上讲,选择哪个 KEY作为PRIMARY KEY 并不重要.但是,由于PRIMARY KEY通常用于从其他表(通过FOREIGN KEY)引用此表中的条目,因此选择一个好的PRIMARY KEY可以与(a)性能和(b)可维护性相关:

(a)由于主键通常用于JOIN,因此主键上的索引(其大小,分布......)与其他索引的性能更相关.

(b)由于主键在其他表中用作外键,因此更改主键值总是很麻烦,因为其他表中的所有外键值也需要修改.

  • UNIQUE和PRIMARY KEY之间有区别 - 你自己已经提到过了.在PRIMARY KEY中,列不能为NULL.在UNIQUE CONSTRAINT中,它们可能为NULL(在这种情况下,它不是标识符) (2认同)