主键唯一标识表中的每一条记录。任何两行数据的主键值都不能相同。主键不能为空,且必须唯一且稳定。在客户表中,主键可以是客户 ID;在订单表中,主键可以是订单号。主键是记录的锚点,其他表通过外键引用它。如果没有主键,记录将难以可靠地识别、更新或删除。
主键有两种形式。自然键源自数据本身,例如社会安全号码、电子邮件地址或产品 SKU。它们虽然有意义,但会发生变化。人们会更改电子邮件地址,公司也会更改产品代码。代理键由系统生成,例如自增整数或 UUID。它们在数据库之外没有任何意义,而且永远不会改变。代理键通常更受欢迎,因为稳定性比意义更重要。如果自然键发生变化,则所有引用它的表都会强制更新。而代理键则始终保持不变。有些表使用由两列或多列组成的复合主键。例如,订单行项目可能由订单 ID 和行号组合标识。复合键虽然可行,但会使连接和外键引用变得复杂。单个代理键则更为简单。
主键属性
- 唯一——无重复项
- 非空——始终有值
- 稳定——不会随时间改变
- 单列或复合列——单列或多列
- 已建立索引——自动快速查找
主键是身份标识。它表明这条记录就是这条记录,没有其他记录。没有主键,数据就没有锚点。
Comments
No comments yet. Be the first to share a thought.
Leave a comment