重命名外键以适合表的上下文

时间:2012-12-16 22:45:17

标签: mysql foreign-keys

在表中使用外键时,更改该表的键名称以明确该键在表中执行的功能,或保留原始名称是否良好,这是一种好的形式,说清楚它是外键吗?

示例: 表跟踪用户,主键为user_id

第二个表在网站上存储文章,并使用外键user_id跟踪作者。

在第二个表的上下文中,调用外键author会更有意义。在整个数据库的上下文中,调用外键user_id

会更有意义

是否存在处理这种情况的一般惯例,或者是评论的用途?

2 个答案:

答案 0 :(得分:1)

了解数据库模式的建模和设计是常规的。无论数据库管理员有什么意义。业务逻辑不关心数据库的命名方式,只关注结果。对于数据库管理员,如果更有意义的是重命名外键author_id以引用另一个表的user_id,则执行此操作并在某些文档中将其标记为T2.author_id必须存在于T1.user_id中。当从建模过渡到设计数据库(现在就是你现在的位置)时,只要保持简单就行是有意义的,但只要你能记住它们(并记录它们),你就可以改变外键名称。 / p>

答案 1 :(得分:1)

好吧,如果你有一个电影表,你不会想要名为person_id和person_id的列,而是生产者和导演,或者也许是producer_id和director_id,或者可能是producer_person_id和director_person_id。

我知道电影可以有多个导演和多个制片人;这只是一个例子。表中有两个外键到同一个表的任何情况都会向您显示您原则上不能完全遵循在列名中仅使用 表名的约定。您可以使用两者(如在producer_person_id示例中),但这会导致长列名称。

不要使用评论。没有人读它们。好吧,这或许只是嗤之以鼻,但一般都赞成用于评论的描述性名称!

除了两个外国关键问题外,我并不是真的意识到任何不可接受的公约。