在資料庫的資料表中,我們常藉「主索引鍵(Primary Key,PK,主鍵)、外部索引鍵(Foreign Key,FK,外來鍵)」,對不同的表進行關聯,最後串起整個資料庫。
主索引鍵(Primary Key)
在一張資料表中,
唯一性且不允許重複。
外部索引鍵(Foreign Key)
在一張資料表中,
外部索引鍵並不一定要唯一。
外部索引鍵是另一個資料表的主索引鍵。
範例
以上是資料表主鍵、外來鍵的關係。
在客戶資料表中,id是主鍵。
在產品資料表中,id是主鍵。
在訂單詳情資料表中,id是主鍵;客戶id、產品id分別是外來鍵,他們各自是客戶資料表中的主鍵、產品資料表中的主鍵。
舉例:
如我想找某筆訂單中的客戶是誰,就能夠用訂單裡的客戶id去客戶資料表中找到對應的客戶。
補充
超鍵(superkey)
是指在一個資料表中,選出兩個或兩個以上的欄位組合起來,以作為唯一識別資料的欄位。
候選鍵(candidate key)
這個屬性集合始終能夠確保在關係中能唯一標識元組
在這個屬性集合中找不出真子集能夠滿足條件。
代理鍵(surrogate key)
是在當資料表中的候選鍵都不適合當主鍵時,例如資料太長,或是意義層面太多,就會請一個無意義的但唯一的欄位來代為作主鍵。
次要鍵(Secondary Key)
主要的功能是提供資料索引。資料庫系統中,除了主鍵這個唯一的識別值,可以用做索引外,也可以設定其他欄位用作資料索引,這類的鍵值並不是主鍵,但因為資料內容並不會重複,所以也可作為資料索引,這就是次要鍵。在員工資料表中,員工姓名、到職日期等欄位都沒有重複,就可以做為次要鍵,提供不同於主鍵的資料索引。
複合鍵(Composite Key)
是指資料表中的主鍵,是由兩個或兩個欄位以上所組成,這種主鍵稱為複合鍵(Composite Key)。
當表格中某一欄位的值無法區分資料記錄時可以使用此方法。
結語
在整理過各種鍵後,理解到各種鍵的使用時機。(未來可能在資料庫正規化方面能夠更加順手。)
而以自身經驗來說,實際設計過的資料表中通常只會用到主鍵、外來鍵居多,其餘的特殊鍵則比較少,甚至沒有用到的情況。
參考資料:
https://ithelp.ithome.com.tw/articles/10213896
https://rileylin91.github.io/2020/05/29/MSSQL-9-Primary-Foreign-Key/
https://zh.wikipedia.org/wiki/%E5%85%B3%E7%B3%BB%E9%94%AE
https://www.1keydata.com/tw/sql/sql-foreign-key.html
https://www.ithome.com.tw/node/46156