在關聯資料庫中,超級鍵 (superkey)、最小超級鍵 (minimal superkey)、候選鍵 (candidate key) 和主鍵 (primary key) 是用來識別表中記錄的不同鍵類型。它們之間的主要差異如下:
超級鍵 (Superkey)
- 定義:超級鍵是一組屬性,其組合可以唯一地標識表中的每一個記錄。
- 特點:超級鍵可以包含多個屬性,甚至可以包含所有的屬性。只要這些屬性的組合能夠唯一標識每一個記錄,就可以稱為超級鍵。
最小超級鍵 (Minimal Superkey)
- 定義:最小超級鍵是指從超級鍵中移除任何屬性後,剩餘的屬性組合不再能唯一標識表中的記錄。
- 特點:最小超級鍵是超級鍵的一個特例,且不能再去掉任何屬性。最小超級鍵也被稱為候選鍵。
候選鍵 (Candidate Key)
- 定義:候選鍵是最小超級鍵,即最小的一組屬性,其組合可以唯一地標識表中的每一個記錄。
- 特點:每個候選鍵都是最小的唯一標識鍵。表中可能有多個候選鍵。
主鍵 (Primary Key)
- 定義:主鍵是從候選鍵中選出的用於唯一標識表中記錄的一個鍵。
- 特點:主鍵是候選鍵的特例,並且在一個表中只能有一個主鍵。主鍵值必須唯一且非空。
總結差異
- 超級鍵 (Superkey):可以是任何能夠唯一標識記錄的屬性組合,可能包含多餘的屬性。
- 最小超級鍵 (Minimal Superkey):沒有多餘屬性的超級鍵,即候選鍵。
- 候選鍵 (Candidate Key):所有最小超級鍵的集合,每一個都可以作為唯一標識鍵。
- 主鍵 (Primary Key):從候選鍵中選出的唯一標識鍵,必須唯一且非空。
範例說明
假設有一個表 Student 具有以下屬性:StudentID, FirstName, LastName, Email, PhoneNumber。
-
超級鍵 (Superkey):
- {StudentID}
- {StudentID, FirstName}
- {StudentID, Email}
- {StudentID, PhoneNumber, Email}
-
候選鍵 (Candidate Key):
- {StudentID}(最小超級鍵)
- {Email}(假設每個學生的 Email 是唯一的)
- {PhoneNumber}(假設每個學生的 PhoneNumber 是唯一的)
-
主鍵 (Primary Key):
這些概念幫助我們在設計資料庫時,確保每個記錄都能被唯一識別,從而保持資料的一致性和完整性。