DBMS 中的 7 種鍵類型解釋
已發表: 2021-03-12目錄
DBMS 中的鍵是什麼?
DBMS 中的鍵是一個屬性或一組屬性,有助於唯一標識關係(或表)中的元組(或行)。 鍵還用於建立關係數據庫的不同表和列之間的關係。 鍵中的單個值稱為鍵值。
該博客將涵蓋您需要了解的有關DBMS 中的鍵和屬性閉包的所有信息 找到任何關係(表)的鍵。 關於 DBMS 中鍵的一些關鍵GATE 問題,請堅持到文章末尾。
為什麼需要密鑰?
密鑰用於定義各種完整性約束。 數據庫中的表表示特定關係的記錄或事件的集合。 現在可能有成千上萬這樣的記錄,其中一些可能是重複的。
應該有一種方法可以單獨且唯一地識別每條記錄,即沒有重複。 鑰匙讓我們擺脫了這種麻煩。
讓我們以在工程學院學習的每個學生的數據庫為例。
你認為學生的什麼屬性可以唯一地識別他們每個人? 您可以使用他們的姓名、部門、年份和部門來指代學生。 或者,您可以只提及學生的大學卷號,您可以從中獲取所有其他詳細信息。
鍵可以是多個屬性(或列)的組合,也可以是單個屬性。 這樣做的主要動機是給每張唱片一個獨特的身份。
另請閱讀: DBMS 與 RDBMS
DBMS 中的鍵類型
DBMS 中大致有七種類型的鍵:
- 首要的關鍵
- 候選鍵
- 超級鑰匙
- 外鍵
- 複合鍵
- 備用鍵
- 唯一鍵
讓我們分別看看它們。
1.主鍵
主鍵是表中的一列或一組列,有助於唯一標識該表中存在的每條記錄。 一個表中只能有一個主鍵。 此外,主鍵不能對任何行重複相同的值。 主鍵的每個值都必須不同,不能重複。
放在一列或一組列上的 PRIMARY KEY (PK) 約束將不允許它們具有任何空值或任何重複項。 一張表只能有一個主鍵約束。 主鍵中的任何值都不能被引用它的任何外鍵(如下所述)更改。
2.超級鑰匙
超級鍵是有助於唯一識別表中行的所有鍵的集合。 這意味著表中所有能夠唯一標識該表的其他列的列都將被視為超級鍵。
超級鍵是候選鍵的超集(解釋如下)。 表的主鍵是從超級鍵集中挑選出來的,作為表的標識屬性。
3. 候選鍵
候選鍵是唯一標識表行的那些屬性。 表的主鍵是從候選鍵之一中選擇的。 因此,候選鍵具有與上述主鍵相同的屬性。 一個表中可以有多個候選鍵。
4.備用鍵
如上所述,一個表可以有多個主鍵選擇; 但是,它只能選擇一個。 因此,所有沒有成為主鍵的鍵稱為備用鍵。
5.外鍵
外鍵用於建立兩個表之間的關係。 外鍵將要求一列或一組列中的每個值與引用表的主鍵匹配。 外鍵有助於維護數據和參照完整性。
6. 複合鍵
複合鍵是一組兩個或多個屬性,有助於唯一標識表中的每個元組。 單獨考慮時,集合中的屬性可能不是唯一的。 然而,當它們一起使用時,它們將確保唯一性。
7.唯一鍵
唯一鍵是唯一標識表中每條記錄的一列或一組列。 此鍵中的所有值都必須是唯一的。 唯一鍵與主鍵不同,因為它只能有一個空值,而主鍵不能有任何空值。
功能依賴
現在我們知道了 DBMS 中的一種不同類型的鍵,讓我們看看在給定數據庫表時如何識別它們。 為此,我們使用函數依賴的概念。
功能依賴 (FD) 是兩組屬性之間的約束。 此約束適用於 r 中的任何兩個元組 t1 和 t2,如果 t1[X] = t2[X],則它們有 t1[Y] = t2[Y]。 這意味著元組的 X 分量的值唯一決定了 Y 分量的值。
FD 表示為 X ? Y(讀作“Y 在功能上依賴於 X”)。 左側稱為行列式,右側稱為從屬。
一組屬性的閉包
閉包是從給定 FD 集派生的所有可能 FD 的集合。 它也被稱為一套完整的FD。 如果 F 用於為關係 R 捐贈一組 FD,則 F 隱含的一組 FD 的閉包由F+表示。
我們現在將定義關於給定 FD 集的一組屬性的閉包。 它將有助於識別關係的超級 Key ,並確定是否可以從給定的 FD 集合中推斷出 FD 或 FD 是否冗餘。 在找到關係上的一組函數依賴後,下一步是找到該關係(表)的超級鍵。
然後我們找出屬性集的閉包來決定任何表的屬性(或屬性集)是否是該表的鍵。 在功能上依賴於屬性 X 的屬性集稱為 X 的屬性閉包,它可以表示為 X+。
以下是確定 F+ 所需的一些規則:
- 自反性:如果 X 是 Y 的超集或 Y 是 X 的子集,那麼 X ? Y。
- 增強:如果 X ? Y,然後 XZ? YZ。 或者如果 Z ⊆W 和 X ? Y,然後 XW ? YZ。
- 傳遞性:如果 X ? Y 和 Y ? Z,然後 X ? Z。
- 工會:如果 X ? Y 和 X ? Z,然後 X ? YZ。
- 分解:如果 X ? YZ,然後 X ? Y 和 X ? Z。
- 偽傳遞性:如果 X ? Y 和 YW ? Z,然後 XW ? Z。
如何使用屬性閉包找到候選鍵和超級鍵?
- 如果一個屬性集的屬性閉包包含關係的所有屬性,則該屬性集將是關係的超級Key。
- 如果該屬性集的任何子集都不能在功能上確定所有關係屬性,則該集將是候選鍵。
讓我們討論幾個之前被問到的 GATE 問題,看看屬性閉包的應用。
門 2014
考慮關係方案 R = {E, F, G, H, I, J, K, L, M, N} 和函數依賴集 {{E, F} ? {G}, {F} ? {I, J}, {E, H} ? {K, L}, K ? {M}, L ? R 上的 {N}。R 的鍵是什麼?
(A) {E, F}
(B) {E, F, H}
(C) {E, F, H, K, L}
(D) {E}
方法:我們將檢查所有提供的選項的屬性閉包。 其閉包將為我們提供整個關係 R 的集合將是正確答案。
A: {E, F} + = {EFGIJ} ≠ R
B: {E, F, H} + = {EFGHIJKLMN} = R
C: {E, F, H, K, L} + = {EFGHIJKLMN} = R
D: {E} + = {E} ≠ R
選項 B 和 C 都為我們提供了整個關係方案。 但是,我們選擇最小選項作為正確答案,因為Candidate Key 應該是最小的 Super Key 。
回答: 乙
門 2013
關係 R 有八個屬性 ABCDEFGH。 R 的字段僅包含原子值。 F = {CH ? G、A? 公元前,乙? CFH,E? 甲、乙? EG} 是一組函數依賴(FD),因此 F+ 正是 R 的一組 FD。
關係 R 有多少個候選鍵?
(一) 3
(乙) 4
(三) 5
(四) 6
方法:我們將獲取問題中給出的每個函數依賴的 LHS 並找到它們的屬性閉包。
CH+ = G
A+ = ABCEFGH
B+ = ABCEFGH
E+ = ABCEFGH
F+ = ABCEFGH
所以我們看到A,B,E,F的閉包除了屬性D之外,都有完整的關係。所以總共有4個候選鍵AD,BD,ED和FD。
答案:B
從世界頂級大學在線學習軟件課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
結論
鍵和功能依賴在設計數據庫中起著非常重要的作用。 這些概念也有助於找出好的和壞的數據庫設計之間的區別。 消除冗餘並使數據庫高效的最後一個過程是規範化,它使用了本文中提到的所有概念。
如果您有興趣了解有關全棧開發的更多信息,請查看 upGrad & IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為在職專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目、和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
DBMS 中有哪些不同類型的鍵?
數據庫中使用了幾種類型的鍵。 主鍵用於標識表中的特定行。 唯一鍵用於確保特定表中只有一個條目。 外鍵用於將一個表中的條目鏈接到另一個表。 複合鍵是表中多個列的集合,它們一起用於標識行。 這些鍵可幫助您準確且唯一地識別表格行的特定列。 因此,根據您的用例使用準確的列作為鍵非常重要。
DBMS 中的外鍵是什麼?
外鍵是一列或一組列,用於將一個表的行鏈接到另一個表的行。 它用於防止數據不一致。 在 DBMS 中,外鍵是使用單個列或一組列(邏輯列)實現的,DBMS 會檢查這些列中的值是否與引用列(主鍵)中的值匹配。 例如,假設表 A 和表 B 都有一個名為列 A 的列。您可以說表 A 中的列 A 引用表 B 中的列 A。這可以想像為一個外鍵值指向的箭頭目標表。
DBMS 中的複合鍵是什麼?
複合鍵是一個超級鍵。 它是一個或多個列的組合。 它允許從不同列的組合構造單個鍵。 它也稱為複合標識符、複合鍵或複合鍵。 簡而言之,您可以使用一組列來標識表中的唯一行,以防您沒有可以唯一標識行的單個列。 在這種情況下,您將使用的所有列的集合將被視為複合鍵。 因此,可以正確地說,主鍵具有多個列,它被重命名為複合鍵。