关于mysql:命名表的最佳方法

The best way to name tables

在命名表时使用下划线更好还是使用camelcase更好?

例如:table_nametableName哪一个更好?是否有理由使用这两种方法,是什么?


一些数据库引擎不区分大小写,并且确实会将某些输出的名称转换为所有小写。因此,我开始在单词之间使用下划线,并使用所有小写字母。

我记得MySQL尊重这个案例,所以这对您来说不是一个直接的问题。但有一次,当我不得不将一个数据库从一个引擎移植到另一个引擎时——我想是从MySQL移植到Oracle,但我不会发誓——我们所有的camercase名称突然变成了一起运行的名称。

我还将在最重要的一点是一致性方面仅次于罗伯特·博克。当我们讨论这个问题时,我能对字段名的一致性做一个切题的评论吗?我现在正在使用一个系统,在这个系统中,我发现一个表中的字段"proid"实际上与另一个表中的"style"内容完全相同,另一个系统在一个表中有"delivereddate"和在另一个表中有"date delivered"。


我读到的所有内容都表明,最好的约定是对数据库名和表名都使用小写。如果需要将多个单词放在一起,请用下划线分隔它们——避免在表名中使用连字符,否则每次引用它们时,都必须对所有表名和数据库名进行反勾选。

此外,以下配置参数可能与您的要求有关:

1
2
3
4
5
6
7
8
mysql> show global variables like 'lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.00 sec)

关于字段名,我倾向于使用驼色大小写。


我相信许多RDBMSE忽略了案例,所以使用camel案例命名方案可能根本不起作用。

重要的是要让列名和表名具有描述性,不管您决定什么挑剔的语法。如果它们描述了它们的数据,没有人会关心您是否使用了驼色大小写、下划线等。


我的首选是使用描述性名称和pascal大小写(tablename)。

避免使用缩写,如果必须使用缩写,请将其视为一个词(使用daylightsavingsTimeInfo或dstinfo而不是dstinfo)。

命名并不是一个单一的正确答案,所以最好的方法是选择一些东西并保持一致。最糟糕的是有许多标准的混杂。


我对此的看法是,如果世界上最好的命名约定(对于编写它的人)感觉不到自然,那么你应该做任何对你来说自然的事情,而且每次设计数据库时你都必须阅读文档,这是不好的。

你应该做任何对你方便的事情,做那些从你的键盘流出的事情。

根据我的经验,有一段时间我从.NET迁移到了RoR,我经常看到人们做这些事情,并在我的表中加上下划线,但不久之后,我忽略了这个选项,因为我以前的SQL命名很方便。

对于列也是如此。

祝你好运


而不是向您提供关于这一点的几个原因的简短反馈,我将提供到PinalDave的SQL编码指南的链接。他们已经被很好地考虑,解释和似乎遵循我自己的偏好,在事物应该如何命名和使用等。

享受!


我说,在代码中使用任何命名约定来访问高级结构(如类)。

例如,如果将数据*封装在一个名为userinfo的类中,那么该表也应该称为userinfo。

*你在封装数据,对吗?