外键打开了整个数据世界的大门
数据库设计人员在开发关系数据库时广泛使用密钥。 这些键中最常见的是主键和外键。 数据库外键是关系表中与另一个表的主键列匹配的字段。 为了理解外键是如何工作的,让我们仔细看看关系数据库的概念。
关系数据库的一些基础知识
在关系数据库中, 数据存储在包含行和列的表格中,使得搜索和操作变得容易。关系数据库概念背后有一些严重的数学问题(关系代数,由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在调味品类别中。
这种链接创建了在关系数据库中使用和重复使用数据的各种方法。