SQL 數據庫中的主鍵:什麼是、優點以及如何選擇
已發表: 2021-05-25目錄
什麼是主鍵?
用 SQL 設計一個新的數據庫會帶來很多無與倫比的選擇。 確定合適的主鍵是您必須做出的最關鍵的決定之一。 主鍵的基本目標簡單明了。
主鍵起著兩管齊下的基本作用。 一,它有助於定義關係。 二是有助於落實這種關係。 換句話說,沒有主鍵,關係數據庫就不會存在。 可以理解,主鍵的概念聽起來很不尋常。
但是,如果我們告訴您,您在日常生活中一直在使用主鍵卻沒有意識到這一點。 在我們一天中每一個清醒的時刻,我們都被數據庫世界中的主鍵包圍著,然而我們卻認為它們是理所當然的。 例如,考慮您的學生證。 這是需要主鍵的經典示例。 同樣,每個員工都有唯一的公司代碼,世界上每個國家都有唯一的名稱和代碼。
閱讀: SQL 中的規範化
主鍵的優點是什麼?
SQL 中的主鍵定義為單個值或表中幾個值的組合。 它清楚地表示表中的每條記錄。 訪問此值可確保及時訪問表中相關記錄的位置,以及來自同一記錄的其他值。 在這一點上,你可能有一個重要的問題要提出。 是否必須在每個表中生成主鍵? 絕對不。
SQL 不需要創建主鍵。 然而,最好和最有效的數據庫建模實踐強烈建議為 SQL 中的每個表創建一個主鍵。 除了作為表之間的公共鏈接字段之外,主鍵的優點是多方面的。
下面的列表總結了主鍵的主要優點:
- 由於主鍵用作索引,因此基於速度的數據庫操作(如排序和搜索記錄)變得更快。
- 主鍵有助於快速識別和查找特定數據庫表中的唯一行。
- 在安全模式下,只能使用主鍵唯一標識特定記錄,以確保更新和刪除只影響特定行,而不影響大量數據。
- 當在數據庫中的其他表中用作外鍵時,它們有助於保持參照完整性。
如何選擇主鍵?
表包含 SQL 數據庫中的主要對象。 這些表將數據存儲為記錄或行。 因此,要識別一個表的每一行,我們需要在同一個表中找到每一行具有不同輸入值的列。 例如,假設我們有一個包含每個美國公民數據的表格。 名為“social_security_number”的列將有助於將此類表中的一行與另一行區分開來。
同樣,讓我們考慮另一個例子。 假設我們有一張私人銀行的儲蓄賬戶表。 名稱為“account_number”的列可用於唯一標識此表中的特定行。
在這兩個示例中,一旦您為表中的每一行確定了具有不同值的列,即“social_security_number”和“account_number”,您就可以創建主鍵。 根據您確定的特定列,此主鍵將成為表中每一行的主要標識符。
因此,示例數據庫設計的標誌是 SQL 中的主鍵。 因此,不言而喻,選擇的主鍵必須是 100% 唯一的,並且每行數據必須存在一個唯一的主鍵值。 通常,個人傾向於依賴數據庫管理系統本身來生成唯一標識符。
強主鍵的特點如下:
- 強主鍵通常長度短、緊湊並且包含盡可能少的屬性。 長數據類型和復合鍵增加了 SQL 的複雜性。 主鍵長度不應超過 900 字節。
- 完全是數字的主鍵有助於提高查詢性能。
- 避免使用特殊字符或大小寫字母的組合。 避免使用文本數據類型,因為 SQL 比較字符串值比數字值花費的時間要長得多。
- 避免來自同一行中非關鍵列的可識別信息,例如郵政編碼、電子郵件地址和社會安全號碼。 如果主鍵是基於真實世界的數據,那麼它可能必須在將來的某個時候進行更改,這是一種不可取的建模實踐。 如果主鍵是任意標識符,則顯示給用戶的數據可能會在以後更改,但標識符不必更改。
- 主鍵值必須保持穩定,不能被修改。
需要注意的是,主鍵採用了一種技術機制來確保每一行在主鍵列中都有一個唯一的、非空的值。 這意味著記錄的主鍵值不能為空。 此外,假設您嘗試插入一個新值,該值的重複值可以在主鍵列中找到。 在這種情況下,新行的插入將被主鍵拒絕。
結帳: SQL 項目的想法和主題
具有多列的主鍵
在某些情況下,不存在自然的單列主鍵。 當使用多列來定義一個主鍵時,它被稱為多列或複合主鍵。 例如,假設我們有一個表“reservation”,其中包含“customer_name”、“reservation_day”、“reservation_time”和“number_of_people”列。
在這裡,'customer_name' 不能單獨用作主鍵,因為很自然,客戶可能在不同日期甚至同一天有多個預訂。 因此,我們將“reservation_day”和“reservation_time”添加到主鍵中,以使每個值的組合都是唯一的。
這種考慮不應超過 32 列。 列數越多,存儲空間需求就越大。 添加多列主鍵的語法與添加單列主鍵不同。
從世界頂級大學在線學習軟件工程課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
加起來
您是否曾經致電客戶服務並被要求提供您的客戶編號? 您甚至可能已經忘記了,這是他們詢問您的郵政編碼或電話號碼的時候。
你有沒有想過為什麼? 好吧,簡短的回答是主鍵。 長答案是,主鍵的優勢是所有數據庫系統的起點。 如果沒有主鍵,數據庫將無法像現在這樣工作,或者準確地說,根本無法運行。
如果您想了解 SQL、全棧開發,請查看 IIIT-B 和 upGrad 的全棧軟件開發執行 PG 計劃,該計劃專為在職專業人士創建,提供 10 多個案例研究和項目、實用的實踐研討會、與行業專家的指導,與行業導師的一對一,與頂級公司的 400 多個小時的學習和工作協助。
SQL中的主鍵是什麼?
主鍵是具有唯一值的字段,用於定義實體的身份。 一旦定義了主鍵,就不能刪除或修改它。 事實上,主鍵是表的一個特殊特性,它成為表關係的基礎。 主鍵始終定義在表的第一列中,不能更改。 它在數據的邏輯和物理記錄結構中起著非常重要的作用。 由於主鍵用於唯一標識記錄,因此它們被稱為候選鍵。
SQL中的主鍵有什麼特點?
主鍵是唯一標識表中每條記錄的一列或一組列。 一張表只能有一個主鍵。 為了保持完整性,始終需要主鍵。 主鍵應由彼此不同的列組合而成。 如果主鍵僅由一列組成,則稱為簡單主鍵。 數據庫引擎使用主鍵來定位和更新數據庫中的記錄。 主鍵不能為 Null,因為 Null 表示未定義或未知。 主鍵可以是單列或多列。 主鍵值可以是唯一的或非唯一的。 主鍵具有被索引的能力。 主鍵幫助數據庫引擎維護表的完整性。 在數據庫中可以很容易地識別主鍵。
SQL中如何選擇主鍵?
主鍵是表中最重要的列。 這些是您的應用程序用來唯一標識每條記錄的 ID。 您選擇作為主鍵的字段必須是唯一的且不為空。 主鍵通常是索引的最佳候選列。 主鍵用於:表中每條記錄的唯一引用,查找已有數據的記錄的id,確保每一行在主鍵中都有有效值。 為確保表中的數據保持有效和一致,請確保所有主鍵值都是唯一的,並且沒有主鍵值為空。