快速理解資料庫關係鍵—PK,FK…是什麼?

最後更新於 2021 年 6 月 4 日

鍵值KEY

  • 超鍵(Superkeys)
  • 候選鍵(Candidate Keys)
  • 替代鍵(Alternate Keys)
  • 主鍵(Primary Key)
  • 外來鍵(Foreign Keys)

超鍵(Superkeys)

是關聯表schema的單一屬性一組屬性的集合

須滿足唯一性: 在資料表絕對不會有兩個值組擁有相同值。

舉一個例子:

學號姓名性別科系電話Email
A001Peter資管系0931284732peter@gmail.com
A002Sandy應英系0984271642sandy@gmail.com
A003Ruby應英系0948523451ruby@gmail.com
A004Jack資工系0951248399jack@gmail.com

Super Key = {(學號),(學號,姓名),(姓名,電話),(姓名,Email),(學號,姓名,性別,科系,電話,Email)….}

候選鍵(Candidate Keys)

是一個Superkey。

須滿足:

  1. 唯一性:在資料表絕不會有 2 個值組擁有相同值。
  2. 最小性:最小屬性數的 Superkey,在 Superkey 中沒有一個屬性可以刪除,否則將違反唯一性。
  • 每個資料表至少有一個Candidate Key
  • Candidate Key是最小屬性數的Superkey
    • 單一屬性的Superkey一定是Candidate Key

舉同樣的例子:

學號姓名性別科系電話Email
A001Peter資管系0931284732peter@gmail.com
A002Sandy應英系0984271642sandy@gmail.com
A003Ruby應英系0948523451ruby@gmail.com
A004Jack資工系0951248399jack@gmail.com

Candidate Key = 學號

主鍵(Primary Key , PK)

資料表中各個Candidate Key的其中之一,而且只有一個

還有一些原則:

1.不可有空值(Not Null)
2.永遠不易改變
3.非識別值:即「值」本身沒有意義。例如買電子產品都會有一個「序號」,假設第一碼代表供應商碼,第二碼代表所在地區(台北、台中…),有一天供應商搬家了,從台北搬到台中,那第二碼就不會符合現況。
4.簡短且簡單的值

由於這個例子候選鍵只有一個,因此主鍵也會是同一個。

Primary Key = 學號

替代鍵(Alternate Keys)

  • 不是 Primary Key 的其他 Candidate Key
    • 這些是可以用來替代主鍵的侯選人

此例子中Candidate key只有一個且是Primary Key 因此這個例子中沒有Alternate Key。

Alternate Keys = {∅}

外來鍵(Foreign Keys, FK)

資料表的單一屬性一組屬性的集合

它的值是參考其他資料表的Primary Key。

  • Foreign Key 和其他 table 的 primary key 是對應的。
    • 在 RDB 中是扮演串聯其它 tables 的角色

舉個例子,這是 學生資料表 以及 科系資料表,學生資料表中的科系 對應到 科系資料表中的科系代碼,即 科系 為外來鍵。

學號 (PK)姓名性別科系 (FK)電話Email
A001Peter0010931284732peter@gmail.com
A002Sandy0020984271642sandy@gmail.com
A003Ruby0020948523451ruby@gmail.com
A004Jack0030951248399jack@gmail.com
學生資料表
科系代碼 (PK)科系名稱
001資管系
002應英系
003資工系
科系資料表
0 0 評分數
Article Rating
訂閱
通知
guest

0 Comments
在線反饋
查看所有評論