Sta*_*bie 145 mysql naming-conventions mysql-workbench
我是这样做的:
有没有更好,更标准的方法来做到这一点?
Tom*_*Mac 98
我首先要说的是:保持一致.
我估计你几乎已经有了你在问题中概述的约定.但有几条评论:
我认为第1点和第2点都很好.
第3点 - 遗憾的是,这并不总是可行的.考虑如何处理foo_bar
具有列的两个表,foo_id
并且another_foo_id
两个foo
表都引用表foo_id
列.您可能想要考虑如何处理这个问题.这虽然是一个角落的情况!
第4点 - 与第3点类似.您可能希望在外键名称的末尾引入一个数字,以满足具有多个引用列的要求.
第5点 - 我会避免这种情况.当您想要在以后添加或删除表中的列时,它为您提供的功能很少,并且会变得很麻烦.
其他一些要点是:
索引命名约定
您可能希望为索引引入命名约定 - 这对您可能要执行的任何数据库元数据工作都有很大帮助.例如,您可能只想调用索引foo_bar_idx1
或foo_idx1
- 完全取决于您,但值得考虑.
奇异与多列名称
在列名和表名中解决复数与单一的棘手问题可能是个好主意.这个主题经常引起数据库社区的激烈争论.我会坚持使用表名和列的单数形式.那里.我说过了.
这里的主要内容当然是一致性!
mal*_*wan 20
一致性是任何命名标准的关键.只要它合乎逻辑且一致,那么你就是99%.
标准本身就是个人偏好 - 所以如果你喜欢你的标准,那就用它吧.
要彻底回答你的问题 - 不,MySQL没有首选的命名约定/标准,所以滚动你自己很好(你的看似合乎逻辑).
MySQL简要描述了它们或多或少的严格规则:
https://dev.mysql.com/doc/internals/en/coding-style.html
Simon Holywell最常用的MySQL编码方式:
另请参阅此问题: SQL是否有任何已发布的编码样式指南?
值得庆幸的是,PHP 开发人员并不像我所知道的一些开发社区那样“偏执驼峰式”。
你的惯例听起来不错。
只要它们 a) 简单,b) 一致 - 我没有看到任何问题:)
PS:就我个人而言,我认为5)太过分了......
简单回答:否
\n嗯,至少是 Oracle 或社区鼓励的命名约定,但是,基本上您必须注意遵循标识符的规则和限制,例如 MySQL 文档中所示:https: //dev.mysql.com /doc/refman/8.0/en/identifiers.html
\n关于您遵循的命名约定,我认为还可以,只是数字 5 有点不必要,我认为大多数用于管理数据库的可视化工具都提供了对列名称进行排序的选项(我使用 DBeaver,它有它),所以如果目的是让您的桌子有一个漂亮的视觉呈现,您可以使用我提到的这个选项。
\n根据个人经验,我推荐这个:
\nlower_case_table_names
配置不正确,您的服务器仅仅因为无法识别您的驼峰命名法或帕斯卡命名法标准(区分大小写问题)而开始抛出错误。那么“复数与单数”命名又如何呢?嗯,这主要是个人喜好的情况。就我而言,我尝试对表使用复数名称,因为我认为表是元素的集合或包含元素的包,因此复数名称对我来说是有意义的;列的名称为单数,因为我将列视为对这些表元素进行单数描述的属性。
\n