您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關數據庫中為什么我們需要使用鍵,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
為什么我們需要使用鍵?
在實際應用中,存儲數據所需的表的數量很大,并且不同的表也彼此相關。
此外,表格中存儲了大量數據。表通常擴展到存儲在其中的數千條記錄,未分類和無組織。
現在要從這樣的數據集中獲取任何特定記錄,您將必須應用一些條件,但是如果存在重復數據并且每次嘗試通過應用某些條件來獲取某些數據時會出現錯誤數據。在獲得正確的數據之前有多少次試驗?
為了避免這一切,定義鍵可以輕松識別表中的任何數據行。
在數據庫中,鍵是用于建立和標識表之間的關系,也用于唯一標識表中的任何記錄或數據行。它可以是單個屬性或一組屬性,其中組合可以作為鍵。
鍵的類型
下面給大家介紹一些常見類型的鍵,為了讓大家了解這些鍵,我們來通過例子介紹一下:
student_id | name | age | college_id | phone |
1 | 小華 | 20 | 01 | 1561258xxx |
2 | 小紅 | 21 | 01 | 1771258xxx |
3 | 小明 | 20 | 02 | 1831258xxx |
可以看出這是一個簡單的Student表,有字段student_id,name,subject_id,age和phone。
候選鍵(Candidate Key)
候選鍵被定義為可以唯一地標識表中的每個記錄的最小字段集。它是一個屬性或一組屬性,可以充當表的主鍵,以唯一地標識該表中的每個記錄。
在上面的Student表中,student_id和phone都是學生表的候選鍵。下面是候選鍵的一些特征:
● 候選鍵永遠不能為NULL或為空;它的價值應該是獨一無二的。
● 表中除主鍵之外的其余屬性都可被視為候選鍵,一個表可以有多個候選鍵。
● 候選鍵可以是多個列(屬性)的組合。
超級鍵(Super Key)
超級鍵被定義為表中的一組屬性,可以唯一地標識表中的每個記錄。超級密鑰是候選鍵的超集。
在上面定義的表中,超級鍵可以是:
● student_id:因為每行student_id數據都是唯一的,因此它可以用于唯一地標識每一行。
● (student_id, name):現在兩個學生的姓名可以相同,但他們的學生ID不能相同,因此這個組合也可以是一個鍵。
● phone:因為每個學生的電話號碼都是唯一的,因此,phone也可以是一個鍵。
所以它們都可以是超級鍵。
主鍵(Primary Key)
主鍵是最適合成為任何表的標識鍵的候選鍵,它可以唯一標識表中每條記錄。
對于Student表,我們可以將student_id列作為主鍵。
復合鍵(Composite key)
復合鍵是由兩個或多個唯一標識表中任何記錄的屬性組成的鍵。當表的任何單個屬性都不能唯一地標識行時,我們就需要使用復合鍵。
注:共同形成復合鍵的屬性不是獨立或單獨的鍵。
student_id | subject_id | exam_name | mark |
1 | 02 | PHP課程 | 90 |
2 | 02 | MySQL課程 | 80 |
在上面的是一個Score表,用于存儲學生在特定科目中得到的分數。
在這個表中student_id,subject_id將形成主鍵,因此它是一個復合鍵。
備用鍵(Alternative key)
在所有候選鍵中,只會有一個被選為主鍵,其余鍵稱為備用鍵或輔助鍵。
外鍵(Foreign Key)
外鍵是表中的屬性值,充當另一個表的主鍵。因此,外鍵可用于將兩個表鏈接在一起。
注:需要非常小心地在外鍵列中輸入數據,因為輸入錯誤的數據可能使兩個表之間的關系無效。
關于數據庫中為什么我們需要使用鍵就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。