2

我正在使用 MySQL Workbench 设计数据库并定义许多外键。

我很好奇是否有描述这种关系目的的最佳实践。

目前,所有外键列都命名为 %table%_%col%。我喜欢这个,因为它几乎告诉你如何加入表格。虽然这描述了两个表之间的链接,但它没有描述关系的目的是什么。

例如,外键可能表示父关系或子关系、所有者、目标或源。

我可以用索引的名称而不是列或索引的注释来描述目的。但是,例如,如果我坚持使用 %table%_%col% 作为列名,我不能两次链接到同一个表(即一个 FK 可能是谁创建了资源,另一个 FK 是谁编辑了它) .

那么列名是否应该始终描述目的而不是链接?

有最佳实践吗?

4

1 回答 1

0

使用外键只表示被引用的表描述了不同的对象,不同的概念。外键只是一个指针,使用外键的目的不止于此。这类似于在类中有一个指针类型字段,而不是直接包含所有引用的其他对象的字段。如果每一行(每个实体)只有一个父项和一个子项,则不必包括每个实体的两个方向,而是决定是否存储对父项或子项的引用。

在一对多关系的情况下(例如,多个子实体到一个父级)甚至更简单,因为每个子级都有对其父级的引用,但是由于 SQL 中未定义复合列和列表类型,因此父级不能包含其子项的列表。

于 2013-04-02T12:20:11.233 回答