MySQL 超鍵 候選鍵 主鍵 外鍵是什么


搬運出處: https://github.com/0voice/interview_internal_reference

超鍵(super key): 在關系中能唯一標識元組的屬性集稱為關系模式的超鍵

候選鍵(candidate key): 不含有多余屬性的超鍵稱為候選鍵。也就是在候選鍵中,若再刪除屬性,就不是鍵了!

主鍵(primary key): 用戶選作元組標識的一個候選鍵程序主鍵

外鍵(foreign key):如果關系模式R中屬性K是其它模式的主鍵,那么k在模式R中稱為外鍵。

舉例

比如有如下數據:

| 學號         | 姓名      | 性別 | 年齡 | 系別     | 專業

|:---:          |:---:        |:---:    |:---:   |:---:        |:---:

|20020612  | 李輝     | 男     |20     |計算機  |軟件開發

|20060613  | 張明     | 男     |18     |計算機  |軟件開發 

|20060614  | 王小玉 | 女     |19     |物理      |力學

|20060615  | 李淑華 | 女     |17     |生物      |動物學

|20060616  | 趙靜     | 男     |21     |化學      |食品化學

|20060617  | 趙靜     | 女     |20     |生物      |植物學

 

  1. 超鍵

    在關系中能唯一標識元組的屬性集稱為關系模式的超鍵。

    於是我們從例子中可以發現 學號是標識學生實體的唯一標識。那么該元組的超鍵就為學號。

    除此之外我們還可以把它跟其他屬性組合起來,比如:

    (學號性別)

    (學號年齡)

    這樣也是超鍵.

  2. 候選鍵

    不含多余屬性的超鍵為候選鍵。

    根據例子可知,學號是一個可以唯一標識元組的唯一標識,因此學號是一個候選鍵,實際上,候選鍵是超鍵的子集,比如 (學號,年齡)是超鍵,但是它不是候選鍵。因為它還有了額外的屬性。

  3. 主鍵

    用戶選擇的候選鍵作為該元組的唯一標識,那么它就為主鍵。

    簡單的說,例子中的元組的候選鍵為學號,但是我們選定他作為該元組的唯一標識,那么學號就為主鍵。

  4. 外鍵

    外鍵是相對於主鍵的,比如在學生記錄里,主鍵為學號,在成績單表中也有學號字段,因此學號為成績單表的外鍵,為學生表的主鍵。

總結

主鍵為候選鍵的子集,候選鍵為超鍵的子集,而外鍵的確定是相對於主鍵的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM