什麼是外鍵

參照其他表格之主鍵(或唯一欄位)的欄位。透過只能存入參照對象中存在的值或NULL的參考完整性限制,防止指向不存在資料列的資料被存入。也可以指定參照對象的資料列被刪除或修改時的動作(拒絕、連帶刪除等)。

日文名稱: 外部キー

「外鍵」出現在1領域的5道練習題中(資料庫基礎等)。

這個名詞所屬的領域: 資料庫基礎

練習外鍵的題目

客戶表格(客戶編號, 姓名)的主鍵是客戶編號,訂單表格(訂單編號, 客戶編號)的客戶編號被定義為參照客戶表格客戶編號的外鍵。客戶表格中只有客戶編號為'C1'與'C2'的資料列。在此狀態下執行 INSERT INTO 訂單 VALUES ('O9', 'C5') 的結果,下列何者正確?

  1. A違反參考完整性限制,資料列不會新增並產生錯誤
  2. B資料列會新增,客戶表格中也會自動新增客戶編號為'C5'的資料列
  3. C資料列會新增,但客戶編號的值會被換成NULL
查看答案與解析

正確答案:A. 違反參考完整性限制,資料列不會新增並產生錯誤

外鍵是參照其他表格(此處為客戶表格)主鍵等的欄位,會強制遵守參考完整性限制:只能存入參照對象中存在的值或NULL。客戶表格中沒有'C5'這位客戶,因此新增不存在客戶之訂單的操作會被DBMS拒絕並產生錯誤。這樣可以防止留下不知屬於哪位客戶的訂單。反過來,若要從客戶表格刪除仍有訂單的客戶資料列,在預設行為(NO ACTION)下也會被拒絕。在外鍵定義中加上 ON DELETE CASCADE,就能在刪除客戶時連帶刪除該客戶的訂單。

解析中的「外鍵」

出現「外鍵」的題目(5題)

  1. 客戶表格(客戶編號, 姓名)的主鍵是客戶編號,訂單表格(訂單編號, 客戶編號)的客戶編號被定義為參照客戶表格客戶編號的外鍵。客戶表格中只有客戶編號為'C1'與'C2'的資料列。在此狀態下執行 INSERT INTO 訂單 VALUES ('O9', 'C5') 的結果,下列何者正確?
  2. 選課表格(學號, 課程編號, 成績)記錄哪位學生修了哪門課、成績如何。一位學生會修多門課,一門課也有多位學生修。若同一學生不會重複登記同一門課,此表格適當的主鍵是下列何者?
  3. 員工表格(員工編號, 姓名, 部門代碼, 部門名稱)的主鍵為員工編號,每個欄位都只有一個值。函數相依為 員工編號 → 姓名、員工編號 → 部門代碼、部門代碼 → 部門名稱。此表格的正規化形式,下列何者正確?
  4. 在E-R圖中,學生與課程之間有「一位學生修多門課,一門課有多位學生修」的多對多關係。以關聯式資料庫的表格實現此關係的適當方法是下列何者?
  5. 在交易應具備的ACID特性中,「從帳戶A扣款並存入帳戶B的轉帳處理,即使途中發生故障,也只會是兩者都完成或完全不進行」的性質是下列何者?

半導體、電子電路與資訊計算工具

相關名詞

主鍵 SQL 正規化 第三正規化(3NF) E-R圖 關聯式資料庫 交易 ACID特性 兩階段鎖定(2PL) 索引

前往名詞解釋列表