database - 什么是主键

标签 database primary-key specifications

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

最佳答案

第一范式要求你有一个唯一的键来建立关系。如果不满足此要求(即如果您没有唯一键),那么您的表将只是一个堆,而不是一个关系。

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

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

更多详细信息,另请参阅:

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

关于database - 什么是主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708849/

相关文章:

css - 是否有任何仅在 XML 序列化中受支持的 HTML 5 构造?

c++ - 在 while 循环中,最后一个逗号分隔的语句是否保证最后运行?

html - 谁发明了 zen 编码,是否有已发布的规范?

database - Scala 异步数据库调用

c# - 我怎样才能对信息保密?

php - 如何使用 PHP 替换现有图像文件

android - 房间复合主键链接到外键

mysql - 将时间序列数据存储在数据库或二进制文件中

java - 不使用数据库生成主键

django - 在 Django 模型中设置主键起始值