資料

外鍵(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