使數據庫管理變得簡單的基本密鑰

數據庫密鑰是創建高效關係數據庫的最簡單方法

正如你可能已經知道的那樣,數據庫使用表來組織信息。 (如果您基本不熟悉數據庫概念,請閱讀什麼是數據庫? )每個表由多行組成,每行對應一個數據庫記錄。 那麼,數據庫如何保持所有這些記錄的直觀性? 這是通過使用密鑰。

主鍵

我們將要討論的第一種類型的關鍵是主鍵 。 每個數據庫表應該有一個或多個指定為主鍵的列。 數據庫中的每個記錄都應該是唯一的。

例如,假設我們有一個名為Employees的表,其中包含我們公司中每個員工的人事信息。 我們需要選擇一個適當的主鍵來唯一標識每個員工。 你首先想到的可能是使用員工的姓名。 這不會奏效,因為可以想像你會僱用兩名同名的僱員。 一個更好的選擇可能是使用一個唯一的員工ID號碼,當他們被雇用時,他們會分配給每個員工。 一些組織選擇使用社會安全號碼(或類似的政府標識符)來執行此任務,因為每個員工已經擁有一個,並且他們保證是唯一的。 但是,由於隱私問題,使用社會安全號碼用於此目的具有很高的爭議性。 (如果您在政府機構工作,根據1974年“隱私法案”,使用社會安全號碼甚至可能是非法的。)因此,大多數組織都轉向使用唯一標識符(員工ID,學生證等) )不會分享這些隱私問題。

一旦你決定了一個主鍵並建立了數據庫,數據庫管理系統將強制執行該鍵的唯一性。

如果您嘗試將記錄插入到具有復制現有記錄的主鍵的表中,插入操作將失敗。

大多數數據庫也能夠生成自己的主鍵。 例如,Microsoft Access可能被配置為使用自動編號數據類型為表中的每條記錄分配一個唯一的ID。 雖然有效,但這是一個糟糕的設計實踐,因為它會在表中的每條記錄中留下無意義的值。 為什麼不使用該空間來存儲有用的東西?

外鍵

另一種類型是外鍵 ,用於創建表之間的關係。 大多數數據庫結構中的表之間存在自然關係。 回到我們的員工數據庫,想像我們想要將包含部門信息的表添加到數據庫中。 這個新表格可能被稱為部門,並會包含大量關於整個部門的信息。 我們還希望包含有關部門中員工的信息,但在兩個表(員工和部門)中擁有相同的信息是多餘的。 相反,我們可以在兩個表格之間建立關係。

假設Departments表使用Department Name列作為主鍵。 為了在兩個表之間創建關係,我們在Employees表中添加一個名為Department的新列。 然後我們填寫每個員工所屬部門的名稱。 我們還通知數據庫管理系統 ,Employees表中的Department列是引用Departments表的外鍵

然後,數據庫將通過確保Employees表的Departments列中的所有值在Departments表中具有相應的條目來強制引用完整性

請注意,外鍵沒有唯一性約束 。 我們可能(而且很可能)有一個以上的員工屬於一個部門。 同樣,不要求Departments表中的條目在Employees表中具有任何相應的條目。 我們可能會有一個沒有員工的部門。

有關此主題的更多信息,請閱讀創建外鍵