Page 1 of 1

什么是主键和外键?

Posted: Mon May 19, 2025 6:58 am
by muskanislam99
在关系型数据库中,主键 (Primary Key) 和 外键 (Foreign Key) 是用于建立和维护表之间关系的关键概念,对于确保数据的完整性和一致性至关重要。

主键 (Primary Key)

主键是表中的一个列或一组列,用于唯一地标识表中的每一行数据(记录)。它具有以下关键特性:

唯一性 (Uniqueness): 表中没有任何两行数据的主键值是相同的。这意味着你可以通过主键准确地找到表中的任何特定记录。
非空性 (Not Null): 主键列不允许包含 NULL 值。因为 NULL 表示缺失或未知的值,如果主键允许 NULL,就无法保证每行记录都被唯一标识。
每个表只有一个主键: 尽管一个主键可以由多个列组成(称为复合主键),但每个表只能定义一个主键。
稳定性 (Stability): 理想情况下,主键的值应该是稳定且很少更改的。如果主键频繁更改,可能会导致与其他表的关系维护变得复杂。
主键的作用:

唯一标识记录: 这是最基本也是最重要的作用。
提高数据检索效率: 数据库系统通常会为主键创建索引,这可以加快根据主键值检索数据的速度。
作为外键的引用目标: 主键常常被其他表的外键引用,用于建立表之间的联系。
维护数据完整性: 通过唯一性和非空性约束,确保表中的每一行都是可识别且完整的。
外键 (Foreign Key)

外键是表中的一个列或一组列,它引用另一个表 澳洲华人数据库(通常是同一个数据库中的另一个表)的主键或唯一键 (Unique Key)。外键用于建立和加强两个表之间的数据关联,并维护引用完整性 (Referential Integrity)。

外键具有以下关键特性:

引用性 (Referencing): 外键列中的值必须是所引用表的主键列或唯一键列中已存在的值,或者是 NULL(如果外键列允许 NULL)。
可以重复: 与主键不同,外键列中的值可以重复。因为一个主表中的记录可以被多个子表中的记录关联。
可以为空 (Nullable): 外键列可以允许 NULL 值,这表示子表中的记录可以不与主表中的任何特定记录关联(取决于业务逻辑)。
一个表可以有多个外键: 一个表可以引用多个其他表的主键或唯一键,从而建立多个关联关系。
外键的作用:

建立表之间的关系: 外键定义了两个表之间的数据是如何关联的。例如,在一个“订单”表中的“客户ID”外键可以引用“客户”表中的“客户ID”主键,从而知道每个订单是哪个客户下的。
维护引用完整性: 这是外键最重要的作用之一。引用完整性确保了子表中外键列的值在父表中存在对应的记录。当尝试在子表中插入一个在父表中不存在的外键值时,数据库系统会阻止该操作,从而避免了“孤儿”数据的产生。同样,对外键的约束还可以定义当父表中的主键值被删除或更新时,子表中的外键应该如何处理(例如,级联删除、级联更新、设置为空、阻止操作等)。
简化数据查询: 通过外键,可以使用 JOIN 操作方便地从相关的多个表中检索数据。
主键与外键的关系总结:

特性 主键 (Primary Key) 外键 (Foreign Key)
主要目的 唯一标识表中的每一行记录 建立和维护表之间的关系,确保引用完整性
唯一性 值必须唯一 值可以重复
非空性 不允许 NULL 值 可以允许 NULL 值(取决于定义)
数量限制 每个表只有一个主键 一个表可以有多个外键
引用目标 无(自身表的唯一标识) 引用另一个表的主键或唯一键
作用 唯一标识、提高检索效率、作为外键引用目标 建立关系、维护引用完整性、简化数据查询

Export to Sheets
理解和正确使用主键和外键是设计良好数据库结构的基础,能够确保数据的准确性、一致性和可维护性。