外键是在关系数据库中创建关系的一个组成部分。
因此,我们已经确定主键为表提供唯一标识符。但主键不是唯一的“键”类型。我们的数据库也可以包含外键。
什么是外键?
一个外键是唯一标识另一个表的一排一个表中的列(或列的集合)。这定义了两个表之间的关系。
外键允许您跨表交叉引用相关数据。当列包含在另一个表中表示的数据时,这会派上用场。
例子
这是我们的图表 水果店 数据库显示了之间的关系 水果 桌子和 单位 表。

链接两个表的黑线表示外键。该单元ID 在球场上 水果 table是一个外键 单元ID在球场上 单位表。因此,我们插入的值Fruit.UnitId 必须对应于中的值 Units.UnitId。这使得Fruit.UnitId 引用该记录的其他列中的数据(即具有相应记录的记录) 单元ID)。
数据
所以如果我们的 水果 table包含这样的记录:

你可以看到 Fruit.UnitId字段包含一个3
。现在看看单位表中包含的记录3
中单元ID领域。您可以看到此记录代表公斤,苹果以千克为单位。
以这种方式设置数据库的好处是,我们不需要为每个使用该单元的记录重复“公斤”。减少重复是关系数据库管理系统的关键优势。
看到了很多记录 水果table将共享相同的单元名称(例如,“Kilograms”,“Container”,“Bunch”等),在将重复项添加到数据库之前,我们应该仔细考虑。在不使用外键关系的情况下,我们可以直接将单元名称写入水果table(也许可以调用“Unit”,“UnitType”或“UnitName”列)。然后我们最终会得到许多记录,这些记录共享单元名称列的相同值。对于许多记录,我们会看到“Kilogram”一遍又一遍地重复。我们还会看到“束”重复,以及任何其他流行的单位类型。
虽然执行此操作不一定“错误”,但通常更有效的是将每个单元名称的一条记录存储在单独的表中,然后通过 单元ID柱。这样做比为每个创建的记录一遍又一遍地重复这些单位名称更有效水果表。如果我们决定更新单位名称(例如将“Kilograms”更改为“Kilos”),它也会更容易。如果我们更新单位名称,它不会影响水果 因为桌子 单元ID将保持不变。此外,它还有助于防止数据库中出现不一致的数据。








暂无数据