在探究主键的细节之前,了解关系数据库系统以及主键等键在数据库设计中所起的作用会很有帮助。
关系数据库包含跨多个表构建的数据,相关的数据点分布在不同的表中。此类数据库通过 IBM Db2、Oracle Database、Microsoft SQL Server 等关系数据库管理系统 (RDBMS) 以及诸如 PostgreSQL 和 MySQL 等开源数据库系统进行管理。
结构化查询语言 (SQL) 是一种用于数据库交互的通用编程语言,也有一些数据库管理系统支持其他语言。
在数据库中,键是一列或一列的有序集合,用于标识表中的数据行。键可显示相关表之间的关系、识别唯一记录并确保数据的准确性和完整性,从而帮助管理数据库。这些优点支持成功、高效的 SQL 数据库查询。
主键(也称为 SQL 主键)为与其关联的每条记录赋予一个唯一标识符。主键的重要特性包括:
如果主键是单表内的既有列,则称为自然键。然而,有时表中没有任何单列能满足主键约束——即主键规则要求其值必须唯一且不能为空。
在这种情况下,可能会生成一个新的唯一值列(不是来自表的现有数据)来充当主键。这种人工生成的主键被称为代理键。
关系型数据库管理系统通常具备为列生成唯一值的能力,这些值可用作代理键,例如 mySQL 的自动递增功能。
主键也可以是组合键,这意味着它们由多个值列组成。
复合主键(可用于标识记录的列的唯一组合)可以作为生成代理键的替代方法。例如,客户姓氏列可以与包含出生日期的列配对,形成复合主键。
SQL 支持一系列数据类型,从时间戳(日期和时间的表示形式)到 varchar(可变长度字符串)。但并非每种数据类型都是主键的适当选择。
通常建议将包含数值(尤其是整数)的列用作主键,因为关系数据库管理系统通常可以更快地处理这些值。
数据库管理中的其他键类型包含:
主键是唯一键的子集。唯一键遵循所谓的唯一约束,即键的值仅在唯一时才有效。虽然所有主键都是唯一键,但并非所有唯一键都是主键。这是因为,与主键不同,唯一键可能包含空值。
候选键是可以用作主键的键,因为它们包含唯一值且不包含 null 值。主键和候选键之间的区别在于,一个已有的表可以有多个候选键,但只能有一个主键。
超键与复合主键类似,可以包含多个列,并用于识别记录。但是,超键可能还包含比唯一标识记录所严格需要的更多的列或信息,而复合主键则不包含超出必要的列或数据。
一个表中的外键引用另一个表中的特定主键,以定义表之间的关系。例如,包含客户订单信息的表中的外键可能引用作为包含客户数据的另一个表的一部分的唯一客户 ID 的主键列。这样,特定客户的订单就可能与该客户的重要信息相关联,例如他们的电子邮件地址和出生日期。
要了解关系数据库中的主键和外键如何定义表之间的关系,考虑参照完整性约束很有帮助。
参照完整性约束(也称为参照约束或外键约束)是要求一个表中的外键值与另一个表中的主键值匹配的规则。
例如,在员工数据库中,参照完整性约束可能指定 EMPLOYEE 表中的每个员工必须是 DEPARTMENT 表中列出的现有公司部门的成员。
在本例中,DEPARTMENT 表的主键是存储唯一部门编号的列,而 EMPLOYEE 表的外键是存储相同唯一部门编号的列。这些匹配列意味着这些表遵守外键约束。
由于 DEPARTMENT 表是 EMPLOYEE 表的外键所引用主键的位置,因此 EMPLOYEE 键被视为对 DEPARTMENT 表具有依赖关系。反过来,DEPARTMENT 表被视为此表关系中的“父表”。
参照完整性约束可以阻止错误数据插入数据库。例如,如果员工记录中的部门编号在 DEPARTMENT 表中不存在,则此类约束会阻止用户将员工记录添加到 EMPLOYEE 表(如下图所示)。
关系型数据库管理系统可能会创建或要求创建一个唯一索引,以与数据库中的每个主键相对应。数据库设计语境中,索引是引用表行的指针集合。索引可用于提升性能(含数据检索优化)。
SQL 语句是用于与关系数据库交互的命令。在 SQL 语法下,可以使用 CREATE TABLE 或 ALTER TABLE 语句为表分配或添加主键。
例如,考虑使用 IBM 的 Db2,为名为 EMP 的员工姓名表使用 CREATE TABLE 语句。列名称为 ID(员工 ID)、FIRSTNME 和 LASTNAME(每项最多 15 个字符)。选择 ID 作为主键时,语句可能如下所示:
在 Db2 的 ALTER TABLE 语句(针对现有表)中,添加主键采用 ADD PRIMARY KEY 子句,而外键则通过 ADD CONSTRAINT 结合父表引用实现添加。
使用 IBM 数据库解决方案满足混合云中的各种工作负载需求。
深入了解 IBM Db2,这是一种关系数据库,为存储和管理结构化数据提供高性能、可扩展性和可靠性。该数据库在 IBM Cloud 上作为 SaaS 提供,也可以用于自托管。
通过 IBM Consulting 发掘企业数据的价值,建立以洞察分析为导向的组织,实现业务优势。