外鍵打開了整個數據世界的大門
數據庫設計人員在開發關係數據庫時廣泛使用密鑰。 這些鍵中最常見的是主鍵和外鍵。 數據庫外鍵是關係表中與另一個表的主鍵列匹配的字段。 為了理解外鍵是如何工作的,讓我們仔細看看關係數據庫的概念。
關係數據庫的一些基礎知識
在關係數據庫中, 數據存儲在包含行和列的表格中,使得搜索和操作變得容易。關係數據庫概念背後有一些嚴重的數學問題(關係代數,由EF提出)
Codd於1970年),但這不是本文的主題。
出於實踐目的(和非數學家),關係數據庫將“相關”數據存儲在行和列中。 更進一步 - 這裡是它變得有趣的地方 - 大多數數據庫的設計使得一個表中的數據可以訪問另一個表中的數據。 這種在表格之間創建關係的能力是關係數據庫的真正威力。
使用外鍵
大多數表格,特別是大型,複雜數據庫中的表格都有主鍵。 旨在訪問其他表的表也必須具有外鍵。
要使用一般引用的Northwinds數據庫,以下是產品表的摘錄:
產品ID | 產品名稱 | 類別ID | QuantityPerU | 單價 |
---|---|---|---|---|
1 | 柴 | 1 | 10盒x 20袋 | 18.00 |
2 | 常 | 1 | 24 - 12盎司瓶 | 19.00 |
3 | 八角糖漿 | 2 | 12 - 550毫升的瓶子 | 10.00 |
4 | 廚師安東的Cajun調味料 | 2 | 48 - 6盎司罐子 | 22.00 |
五 | 廚師安東的濃湯混合 | 2 | 36盒 | 21.35 |
6 | 祖母的波森莓蔓延 | 2 | 12 - 8盎司罐子 | 25.00 |
7 | 伯伯叔叔的有機幹梨 | 7 | 12 - 1磅包裝。 | 30.00 |
ProductID列是此表的主鍵。 它為每個產品分配一個唯一的ID。
該表還包含一個外鍵列CategoryID 。 Product表中的每個產品都鏈接到Categories表中定義該產品類別的條目。
請注意數據庫的Categories表中的摘錄:
類別ID | 分類名稱 | 描述 |
---|---|---|
1 | 飲料 | 軟飲料,咖啡,茶,啤酒和麥芽啤酒 |
2 | 調味品 | 甜味和鹹味醬汁,滋味,塗抹和調味 |
3 | 甜點 | 甜點,糖果和甜點 |
五 | 乳製品 | 奶酪 |
列CategoryID是此列的主鍵。 (它沒有外鍵,因為它不需要訪問另一個表。)Product表中的每個外鍵鏈接到Categories表中的主鍵。 例如,產品Chai被分配“飲料”類別,而Aniseed Syrup在調味品類別中。
這種鏈接創建了在關係數據庫中使用和重複使用數據的各種方法。