我一直遵循以下数据库命名约定。
由于我更喜欢使用表和列的描述性名称,我经常发现自己使用camelCasing来表示具有两个或更多单词并且没有定义任何关系的实体。例如。
lastVisitIp
lastVisitDate
registrationDate
坦率地说,我真的不喜欢使用camelCasing的想法,因为我觉得这样做有些难看,我不明白为什么。
我想从专家那里了解在这种情况下您对列的命名有何看法?如果我使用Underscore(_)
或任何其他替代品,我应该继续使用骆驼套管吗?
P.S:我查看了Wordpress中使用的命名约定,他们使用(_) Underscore
用于多种用途。 :)
谢谢。
答案 0 :(得分:3)
我发现复数可能会使某些事情变得复杂因为如果表名是“公司”,那么在用户表或“ies”的情况下可以是's'。所以最好一直坚持单数。同样在sql加入语句时我倾向于使用Users.user_id = Companies.owner_id
而不是User.user_id = Company.owner_id
错误,因为你必须始终关注's'和'ies'。
下划线是首选方式,因为列名可以由多个单词构成
is_user_registered_last_year
对isUserRegisteredLastYear
你可以看到更多的字母表 更难读骆驼案。
答案 1 :(得分:2)
我很欣赏这是一篇旧帖子,但我想补充两分钱。
如果可能的话,数据库表应该被命名为复数表,但要尽量保持对它们的某种敏感性,以便名称表示内容,以便易于识别。
举例如下。
您的应用程序中有用户,您的模型将是User
,因为它引用单个用户,数据库表将是users
,因为它是各个用户的集合。现在说你有这些用户的配置文件,有一些选项可以命名这个,但我觉得非常合适。
users_profiles
,但在阅读时,这可能意味着一对多关系,因为它是用户个人资料。user_profile
,这确实表明它是一对一的关系,但另一方面,它确实暗示这个表不是一个集合,而是一个单独的单个用户的个人资料。user_profiles
,因为它是用户配置文件的集合,因为一个配置文件与一个用户相关。在此个人资料表格中,您需要引用原始用户,因此您有一个名为user_id
的列,而不是users_id
,而是user_id
。对于任何其他列名称,您应该尝试将其保留为单个单词,全部为小写。如果您无法使用单个单词命名此列,请将其视为变量并使用下划线命名。这是有益的,因为在你有多个第一个单词相同的列的情况下,它会创建一种暗示它们相关的子集合,这是正确的。
下划线暗示一种关系是正确的,这就是为什么表被称为user_profiles
,并且该字段被称为user_id
,但是10次中有9次,你将没有关系在一个不是id的字段上,所以暗示的问题就消失了。
上面提到总是使用单数,因为复数可能令人困惑。争论的焦点是复数可以s
或ies
结尾。值得注意的是ies
确实以s
结尾,所以这个问题用词不当。最重要的是,将表名保持为单数,实际上会产生更多的混淆,因为它不会立即暗示集合,它确实意味着表名可以以任何其他字母结尾。
有些表的名称将隐含复数而不以s
结尾。例如,这可能类似于user_history
。此表名是一个完全可接受且易于识别的名称,因为历史记录默认为复数,此表包含用户的历史记录。
不做的事
从这里的所有回复中可以看出,有许多不同的选择,一些有优点,有些没有。这种特殊的方法是我虔诚地遵循的方法,据我所知,它是PHP中最常用的方法。它保持整洁,易于理解,很少,如果有的话,我看到一个表名,不知道它的作用。
希望能有所帮助。
答案 2 :(得分:1)
保持一致
如果您打算使用前缀,请随处使用。如果要将外键用于另一个表,请在任何位置使用相同的列名。如果你要用下划线分隔单词,那就到处都这样做。
你如何构建你的命名约定取决于你,只要保持逻辑,所以当你几个月后回来时你知道这个表是做什么的。
我自己,我使用下划线,我到处都这样做,所以一切都有意义。
答案 3 :(得分:1)
我正在考虑昨天对我即将开始的一个新的大项目的想法,我得出了相同的结论:使用_
来定义关系和FK,其他一切都是驼峰。一个例子:
party
partyPerson
partyOrganization
partyPerson_partyOrganization (how a person relates to an organization)
partyOrganizationLegal
party_address
party_contactMechanism
address
contactMechanism
如果你强调一切,那么很难发现什么是参考,什么不是。
我还认为你应该在任何地方使用单数名称(它更符合逻辑,更不容易让你迷惑)。
答案 4 :(得分:0)
您没有提到正在使用哪个SQL软件,但是由于您提到了WordPress,所以我猜想这主要适用于MySQL。
我想补充一下其他建议,建议表名全部使用小写字母,而不是camelCase。
虽然可以使用大写字符,但是在将数据库环境从UNIX-y更改为Windows时,或者更具体而言对不区分大小写的OS区分大小写时,您可能会陷入难以追踪的问题。
在Windows中将内容从远程数据库推送或拉到本地开发计算机时,通常会遇到这种情况。
有关此的更多信息,请参见MySQL手册:
为避免此类差异引起的问题,最好采用 一致的约定,例如始终创建和引用 使用小写名称的数据库和表。这个约定是 建议最大程度地提高便携性和易用性。
-https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html