軟體工程師的小事:到底要不要 Close

主索引鍵 (Primary Key) 的規劃心得 | 2019 鐵人賽

根據正規化定義
每一筆資料列皆要有能夠識別一致多個欄位組合是唯一
主索引鍵就是用來識別資料列的鍵值

主索引鍵特性

  • 必須是唯一值
  • 不可為 NULL
  • 一個資料表只能有一個主索引鍵
  • 使用一至多個欄位

設計要領

主索引鍵資料形態越小越好

今天設計一個縣市的資料表
目前縣市總數不會超過 256 個
該資料表的主索引鍵資料型態選擇 TINYINT 就會比較適合

問題探討

是否該使用身分證字號建立主索引鍵

先來檢視身分證字號儲存資料的定義

戶政系統規劃:每個人都會有自己唯一的身分證字號

常識理解身分證字號是不會重複
但現實往往就是會遇到重複的資料(通常是手動輸入錯誤)

先前就處理過身份證字號一堆重複
結果客戶要求唯一條件變更為身分證字號出生日期

這一變更資料庫的關聯都需要進行異動

有打算使用身分證字號建立資料表的主索引鍵
透過額外建立一個數字欄位作為主索引鍵 (primary-key)

然後將身分證字號欄位設定成唯一限制 (unique)
會是個比較有彈性的選擇

留言