我是这样做的:
- 表名是小写的,使用下划线分隔单词,并且是单数(例如
foo
, foo_bar
, etc.
- 我通常(并非总是)有一个自动增量 PK。我使用以下约定:
tablename_id
(e.g. foo_id
, foo_bar_id
, etc.).
- 当表包含作为外键的列时,我只需从该键来自的任何表中复制该键的列名称。例如,说表
foo_bar
有FKfoo_id
(where foo_id
是 PKfoo
).
- 在定义 FK 以强制引用完整性时,我使用以下内容:
tablename_fk_columnname
(例如,进一步实施例 3,则foo_bar_foo_id
)。由于这是表名/列名组合,因此保证它在数据库中是唯一的。
- 我对列进行如下排序:PK、FK,然后按字母顺序排列其余列
有没有更好、更标准的方法来做到这一点?
我首先要说的是:保持一致。
我认为您已经差不多了解了您在问题中概述的约定。不过有几点评论:
我认为第1点和第2点都很好。
第 3 点 - 遗憾的是这并不总是可能的。考虑一下您将如何处理一张桌子foo_bar
有列的foo_id
and another_foo_id
两者都引用了foo
table foo_id
柱子。您可能需要考虑如何处理这个问题。不过,这有点特殊!
第 4 点 - 与第 3 点类似。您可能需要在外键名称末尾引入一个数字,以满足多个引用列的需要。
第 5 点 - 我会避免这种情况。它为您提供的功能很少,并且当您以后想要在表中添加或删除列时,它会变得令人头疼。
其他一些要点是:
索引命名约定
您可能希望引入索引的命名约定 - 这对于您可能想要执行的任何数据库元数据工作都有很大的帮助。例如,您可能只想调用索引foo_bar_idx1
or foo_idx1
- 完全取决于你,但值得考虑。
单数与复数列名称
解决列名和表名中复数与单数的棘手问题可能是个好主意。这个话题经常引起大辩论 https://stackoverflow.com/questions/338156/table-naming-dilemma-singular-vs-plural-names在数据库社区中。我会坚持对表名和列使用单数形式。那里。我已经说过了。
这里最重要的当然是一致性!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)