是否有MySQL的命名约定?

以下是我的做法:

  • 表名是小写字母,使用下划线来分隔单词,并且是单数的(例如'foo','foo_bar'等等
  • 我一般(不总是)有一个自动增量PK。 我使用以下约定:tablename_id(例如'foo_id','foo_bar_id'等)。
  • 当一个表包含一个外键的列时,我只需从它来自的任何表中复制该键的列名。 例如,假设表'foo_bar'有FK'foo_id'(其中'foo_id'是'foo'的PK)。
  • 在定义FK来强制引用完整性时,我使用以下内容:tablename_fk_columnname(例如,进一步示例3,它将是'foo_bar_foo_id')。 由于这是一个表名/列名组合,因此它在数据库中保证是唯一的。
  • 我命令这样的列:PKs,FKs,然后按字母顺序排列其余列
  • 有没有更好,更标准的方法来做到这一点?


    我首先要说的是:保持一致。

    我认为你几乎和你在问题中列出的约定一样。 一些评论虽然:

    我认为积分1和2是好的。

    第3点 - 遗憾的是,这并非总是可能。 考虑如何处理具有列foo_idanother_foo_id的单个表foo_bar ,这两个列都引用foofoo_id列。 你可能想考虑如何处理这个问题。 虽然这是一个角落的情况!

    第4点 - 与第3点类似。您可能希望在外键名称的末尾引入一个数字,以满足具有多个引用列的需求。

    点5 - 我会避免这一点。 当您想要在以后的日期添加或删除表格中的列时,它会提供很少的内容,并且会变得很头疼。

    其他一些观点是:

    索引命名约定

    您可能希望引入索引的命名约定 - 这对于您可能想要执行的任何数据库元数据工作都是很有帮助的。 例如,您可能只想调用索引foo_bar_idx1foo_idx1 - 完全取决于您,但值得考虑。

    单数与多列名称

    解决列名称中复数与单数的棘手问题以及您的表名称可能是一个好主意。 这个问题经常引起数据库社区的大讨论。 我会坚持单表格和列的单数形式。 那里。 我已经说过了。

    这里的主要内容当然是一致的!


    一致性是任何命名标准的关键。 只要它符合逻辑和一致,你就有99%的存在。

    标准本身就是个人偏好 - 所以如果你喜欢你的标准,那就运行它吧。

    为了直接回答你的问题 - 不,MySQL没有一个首选的命名约定/标准,所以你自己的翻身是好的(你的看起来是合乎逻辑的)。


    值得庆幸的是,PHP开发人员并不像我认识的一些开发社区那样“骆驼案例偏执狂”。

    你的约定听起来很好。

    只要他们a)简单,b)一致 - 我没有看到任何问题:)

    PS:就我个人而言,我认为5)是过度的...

    链接地址: http://www.djcxy.com/p/41311.html

    上一篇: Is there a naming convention for MySQL?

    下一篇: Relational table naming convention