数据

外键(foreign key)

外键(foreign key)是一张表里的一个列,它指向另一张表的主键(primary key)——这就是数据库把行与行连接起来的方式。比如一笔订单里存着下单顾客的 id,这个 customer_id 就是外键,是从订单射向那位顾客的一支小箭头。

正是这个小手法,把一张张独立的表织成了一张相连的网。你不必在每笔订单上把顾客的全名和地址重抄一遍——只需把他的 id 存一次,需要时再顺着取。顺着箭头,你就能从一笔订单跳到它的顾客,或者把属于同一位顾客的所有订单都收集起来。

数据库可以替你守护这些链接:它会拒绝让一笔订单引用一个并不存在的顾客,也能阻止你删掉一个名下还挂着订单的顾客。这道护栏叫做参照完整性(referential integrity)——它让你的数据不至于指向虚空。

CREATE TABLE orders (
  id          INTEGER PRIMARY KEY,
  customer_id INTEGER REFERENCES customers(id)
);

customer_id 是外键——每笔订单都指回 customers 表里真实存在的一行。

主键必须唯一;外键则没有这条规矩——许多订单可以指向同一位顾客,「一位顾客对应多笔订单」正是这么实现的。

又称
fkreferencerelationship