什么是主键?

女性注视大型计算机屏幕操作键盘。

作者

Alice Gomstyn

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

什么是主键?

主键是数据库表中的一列或多列,其值可唯一标识每一行或每一条记录。例如,雇员 ID 列可以是雇员信息表的主键。
 

主键在关系数据库中发挥着重要作用,它能加强数据完整性,使数据检索得以实现。此外,主键可以被其他类型的键引用,以定义关系数据库中表之间的关系。

各数据库常见主键示例包括:

  • 驾驶执照号码
  • 员工编号
  • 产品编号
  • 社会保障号
  • 学生证号码
小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

了解键和关系数据库

在探究主键的细节之前,了解关系数据库系统以及主键等键在数据库设计中所起的作用会很有帮助。

关系数据库包含跨多个表构建的数据,相关的数据点分布在不同的表中。此类数据库通过 IBM Db2、Oracle Database、Microsoft SQL Server 等关系数据库管理系统 (RDBMS) 以及诸如 PostgreSQL 和 MySQL 等开源数据库系统进行管理。

结构化查询语言 (SQL) 是一种用于数据库交互的通用编程语言,也有一些数据库管理系统支持其他语言。

在数据库中,键是一列或一列的有序集合,用于标识表中的数据行。键可显示相关表之间的关系、识别唯一记录并确保数据的准确性和完整性,从而帮助管理数据库。这些优点支持成功、高效的 SQL 数据库查询。

Mixture of Experts | 12 月 12 日,第 85 集

解码 AI:每周新闻摘要

加入我们世界级的专家小组——工程师、研究人员、产品负责人等将为您甄别 AI 领域的真知灼见,带来最新的 AI 资讯与深度解析。

主键有哪些特征?

主键(也称为 SQL 主键)为与其关联的每条记录赋予一个唯一标识符。主键的重要特性包括:

  • 没有 Null 值
  • 无重复值
  • 可以是表中现有的列(自然键),也可以是新增的列(代理键)
  • 可以包含单列或多列(作为复合主键)

如果主键是单表内的既有列,则称为自然键。然而,有时表中没有任何单列能满足主键约束——即主键规则要求其值必须唯一且不能为空。

在这种情况下,可能会生成一个新的唯一值列(不是来自表的现有数据)来充当主键。这种人工生成的主键被称为代理键。

关系型数据库管理系统通常具备为列生成唯一值的能力,这些值可用作代理键,例如 mySQL 的自动递增功能。

主键也可以是组合键,这意味着它们由多个值列组成。

复合主键(可用于标识记录的列的唯一组合)可以作为生成代理键的替代方法。例如,客户姓氏列可以与包含出生日期的列配对,形成复合主键。

主键中使用哪些数据类型?

SQL 支持一系列数据类型,从时间戳(日期和时间的表示形式)到 varchar(可变长度字符串)。但并非每种数据类型都是主键的适当选择。

通常建议将包含数值(尤其是整数)的列用作主键,因为关系数据库管理系统通常可以更快地处理这些值。

其他重要的键类型有哪些?

数据库管理中的其他键类型包含:

  • 唯一键
  • 候选键
  • 超键
  • 外键

唯一键

主键是唯一键的子集。唯一键遵循所谓的唯一约束,即键的值仅在唯一时才有效。虽然所有主键都是唯一键,但并非所有唯一键都是主键。这是因为,与主键不同,唯一键可能包含空值。

候选键

候选键是可以用作主键的键,因为它们包含唯一值且不包含 null 值。主键和候选键之间的区别在于,一个已有的表可以有多个候选键,但只能有一个主键。

超键

超键与复合主键类似,可以包含多个列,并用于识别记录。但是,超键可能还包含比唯一标识记录所严格需要的更多的列或信息,而复合主键则不包含超出必要的列或数据。

外键

一个表中的外键引用另一个表中的特定主键,以定义表之间的关系。例如,包含客户订单信息的表中的外键可能引用作为包含客户数据的另一个表的一部分的唯一客户 ID 的主键列。这样,特定客户的订单就可能与该客户的重要信息相关联,例如他们的电子邮件地址和出生日期。

参照完整性约束在定义表关系中的重要性

要了解关系数据库中的主键和外键如何定义表之间的关系,考虑参照完整性约束很有帮助。

参照完整性约束(也称为参照约束或外键约束)是要求一个表中的外键值与另一个表中的主键值匹配的规则。

例如,在员工数据库中,参照完整性约束可能指定 EMPLOYEE 表中的每个员工必须是 DEPARTMENT 表中列出的现有公司部门的成员。

在本例中,DEPARTMENT 表的主键是存储唯一部门编号的列,而 EMPLOYEE 表的外键是存储相同唯一部门编号的列。这些匹配列意味着这些表遵守外键约束。

由于 DEPARTMENT 表是 EMPLOYEE 表的外键所引用主键的位置,因此 EMPLOYEE 键被视为对 DEPARTMENT 表具有依赖关系。反过来,DEPARTMENT 表被视为此表关系中的“父表”。

参照完整性约束可以阻止错误数据插入数据库。例如,如果员工记录中的部门编号在 DEPARTMENT 表中不存在,则此类约束会阻止用户将员工记录添加到 EMPLOYEE 表(如下图所示)。

显示主键和外键约束如何防止无效记录插入表中的图表。

还有哪些其他概念和实践与主键相关?

索引

关系型数据库管理系统可能会创建或要求创建一个唯一索引,以与数据库中的每个主键相对应。数据库设计语境中,索引是引用表行的指针集合。索引可用于提升性能(含数据检索优化)。

数据建模

数据建模提供数据库架构的可视化表示,或数据库中表之间的数据关系的蓝图。数据模型可包括用于维护这些关系的主键和外键的信息。

SQL 语句

SQL 语句是用于与关系数据库交互的命令。在 SQL 语法下,可以使用 CREATE TABLE 或 ALTER TABLE 语句为表分配或添加主键。

例如,考虑使用 IBM 的 Db2,为名为 EMP 的员工姓名表使用 CREATE TABLE 语句。列名称为 ID(员工 ID)、FIRSTNME 和 LASTNAME(每项最多 15 个字符)。选择 ID 作为主键时,语句可能如下所示:

CREATE TABLE EMP
    (ID INT NOT NULL,
    FIRSTNME VARCHAR (15) NOT NULL,
    LASTNAME VARCHAR (15) NOT NULL,
  PRIMARY KEY (ID));

 

在 Db2 的 ALTER TABLE 语句(针对现有表)中,添加主键采用 ADD PRIMARY KEY 子句,而外键则通过 ADD CONSTRAINT 结合父表引用实现添加。

相关解决方案
数据库软件和解决方案

使用 IBM 数据库解决方案满足混合云中的各种工作负载需求。

深入了解数据库解决方案
采用 IBM Db2 的云原生数据库

深入了解 IBM Db2,这是一种关系数据库,为存储和管理结构化数据提供高性能、可扩展性和可靠性。该数据库在 IBM Cloud 上作为 SaaS 提供,也可以用于自托管。

探索 Db2
数据和分析咨询服务

通过 IBM Consulting 发掘企业数据的价值,建立以洞察分析为导向的组织,实现业务优势。

了解分析服务
采取后续步骤

使用 IBM 数据库解决方案满足混合云中的各种工作负载需求。

深入了解数据库解决方案 深入了解 IBM Db2