什么是主要关键

时间:2015-04-17 20:34:32

标签: database

在数据库代码中,我看到对PRIMARY KEY的引用。什么是PRIMARY KEY,如果我的一个表中的某些列形成PRIMARY KEY ...或者不形成PRIMARY KEY,它会有什么不同。

(令人惊讶的是,之前似乎没有问过这个问题)

4 个答案:

答案 0 :(得分:1)

1st Normal Form要求您拥有一个唯一的密钥才能建立关系。如果不满足此要求(即,如果您没有唯一键),那么您的表将只是一个堆,而不是关系。

主键或多或少(即粗略地说)一个特别选择的唯一键。设计模式的人选择它。 PK和唯一键之间的主要区别在于唯一键可以包含NULL值,而PK则不能。此外,您可以在给定表中拥有多个唯一键,但最多只能有一个PK。

通过将其中一个唯一键设为主键,您可以允许其他表通过其外键(FK)轻松指向此表。从技术上讲,FK(子表的)也可以指向任何唯一键(来自父表),但通常人们为此目的使用主键(PK)(如上所述)基本上只是一个唯一键。这意味着FK通常指向PK。

有关详细信息,另请参阅:

What is the difference b/w Primary Key and Unique Key

答案 1 :(得分:1)

主键是关系数据库中的一个键,对于每个记录都是唯一的。

如果对数据库中列的引用是主键,那么值将是唯一的。当您尝试向具有相同主键的值添加另一行时,它会引发错误

如果列上没有主键,您也可以添加任何非唯一值。

答案 2 :(得分:1)

从结构上讲,primary keycolumn / group of columns,其unique index不能null。每个表最多只能有一个主键(尽管主键可以有多个字段)。

从语义上讲,PK唯一地标识表中的行。由于其约束,您可以100%确定没有两个记录具有相同的PK值。这允许在SQL服务器和SQL客户端上进行优化

答案 3 :(得分:0)

主键(缩写 PK )是非空约束的表的索引。在表上使用非空索引的主要结论是 每个表行的唯一标识符 。主键可以构建在同一个表的单个列或多个不同的列上,也可以构建为常规索引。开发人员通常选择一个唯一标识符(例如'id')作为主键,即使没有严格定义必须是主键。

在关系数据库中,主键使用属于第一范式(1NF)的原子性概念来引用任何其他表中的表行,这意味着您在数据库中只有一次相同的数据/行并使用其主键作一个参考。

关于主键的最后一个重要思考是更好的性能。索引通常有助于解决meny案例中的性能问题。但是,对于主键,您可以期望经常使用主键作为访问条件或where子句访问表行(例如SELECT * FROM mytable WHERE id = 3)。您可以期望DBMS使用主键快速访问存储上的数据。 如果桌面上没有主键,您可能会遇到一些性能问题

进一步阅读主键: