[Day2] 主索引鍵與外部索引鍵,及其他關係鍵 - SQL Server資料庫入門

在資料庫的資料表中,我們常藉「主索引鍵(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