我使用 Microsoft SQL Server 并且我在数据库中有一个表。
+-------------------------------+
| MEASURE |
+----+---------+--------+-------+
| id | measure | units | value |
+----+---------+--------+-------+
| 1 | linear | meters | 100 |
+----+---------+--------+-------+
| 2 | linear | inches | 24 |
+----+---------+--------+-------+
| 3 | linear | inches | 32 |
+----+---------+--------+-------+
| 4 | linear | meters | 70 |
+----+---------+--------+-------+
我用单位创建新表:
+-------------+
| UNIT |
+----+--------+
| id | units |
+----+--------+
| 1 | meters |
+----+--------+
| 2 | inches |
+----+--------+
现在,我想在这些表之间创建关系。我想要的结果是这样的:
+-------------------------------+
| MEASURE |
+----+---------+--------+-------+ +-------------+
| id | measure | units | value | | UNIT |
+----+---------+--------+-------+ +----+--------+
| 1 | linear | 1 | 100 | >----------------o | id | units |
+----+---------+--------+-------+ +----+--------+
| 2 | linear | 2 | 24 | | 1 | meters |
+----+---------+--------+-------+ +----+--------+
| 3 | linear | 2 | 32 | | 2 | inches |
+----+---------+--------+-------+ +----+--------+
| 4 | linear | 1 | 70 |
+----+---------+--------+-------+
如何将带有外键的列添加到现有表中,以便它引用适当的 unit(ID) 值?
为了使您的逻辑正常工作,您需要在表
Measure
中创建一个外键,将相应的 Measure
列与右侧 Unit
列连接起来。在您的示例中,units
中的Measure
列将是一个完美的外键。你需要通过它和表ID
中的Unit
列连接起来。由于您已经创建了表并且拥有所需的列,因此您所需要做的就是更改需要创建外键的表(在表Measure
中)并创建键。以下是如何操作的示例:
alter table Measure
add constraint fk_measureUnit foreign key (units) References Unit(ID)
以下是脚本各部分功能的解释:
alter table
用于修改现有表。无论您在其后放置的表名称是什么,都是您要修改的表。 alter table
有多种不同的用途,例如添加、修改或删除列、约束和索引。
add constraint
用于添加约束(在此用法中为外键)。约束的其他示例是 primary key
,它用于确保表中的每一行都是唯一的(例如在表 Unit
中,列 Id
将非常适合它)和 unique
约束,用于确保列中的每个值都与其余值不同。
fk_measureUnit
是您命名外键的部分。您可以选择任何名称,但最好以 fk_
开头,因为这样您就可以向其他开发人员表明它是什么。
foreign key
用于指定要添加到表中的约束。
(units)
用于指定哪一列将成为外键。
References
用于告知第二个表中的哪一列将连接到第一个具有 fk 的表。在它后面输入表的名称,并在括号中输入要用作连接的列(在您的示例中,看起来像 -> Unit(ID)
)