表命名:下划线与Camelcase? 命名空间? 单数还是复数?

我一直在阅读StackOverflow上的几个问题/答案,试图find'最好的',或者我应该说必须接受的方式来命名数据库上的表。

大多数开发人员倾向于根据需要数据库的语言(JAVA,.NET,PHP等)来命名表。 不过我只是觉得这是不对的。

我一直在命名表格的方式是这样的:

doctorsMain doctorsProfiles doctorsPatients patientsMain patientsProfiles patientsAntecedents 

我所关心的是:

  • 易读性
  • 快速识别表格来自的模块(医生||患者)
  • 容易理解,防止混乱。

我想阅读关于命名约定的任何意见。 谢谢。

一致性比你使用的特定scheme重要得多。

我通常使用PascalCase和实体是单数:

 DoctorMain DoctorProfile DoctorPatient 

它模仿了我的应用程序中的类的命名约定,保持每个人的整洁,干净, 一致和易于理解。

SQL的大小写不敏感性质支持Underscores_Scheme 。 现代软件却支持任何种类的命名scheme。 然而,有时候一些令人讨厌的错误,错误或人为因素可能导致Pascal_Case ,导致那些select了Pascal_CasePascal_Casescheme的人在所有的神经中生活得很好。

以上大部分的聚合:

  • 不要依赖数据库中的情况
  • 不要考虑名称的情况或分隔符部分 – 只是单词
  • 不pipe使用什么分隔符或大小写都是你的语言的标准

然后,您可以轻松地翻译(甚至自动)在环境之间的名称。

但是我还要补充一点:在从应用程序中的类中移动到数据库中的表时,可能会发现其他因素:数据库对象具有视图,触发器,存储过程,索引,约束等也需要名字。 因此,例如,您可能会发现自己只能通过视图访问表,通常只是一个简单的“select * from foo”。 这些可能被识别为只有后缀“_v”的表名,或者你可以把它们放在不同的模式中。 这样一个简单的抽象层的目的是,它可以在必要时扩展,以允许在一个环境中的变化,以避免影响另一个环境。 这不会破坏上面的命名build议 – 只是几个要考虑的事情。

我使用下划线。 几年前,我做了一个Oracle项目,似乎Oracle把我的所有对象的名字都写成了大写字母,这种打字方式是一种打击。 我不是一个真正的Oracle人,所以也许有一种方法我不知道,但是这让我使用了下划线,我从来没有回来。

我倾向于同意那些依赖于你使用的语言约定的人(例如,C#的PascalCase和Ruby的snake_case)。

尽pipe如此,从来没有骆驼。

不幸的是,这个问题没有“最好的”答案。 正如@大卫所言,一致性远比命名惯例重要。

在阅读了很多其他意见之后,我认为使用语言的命名约定是非常重要的,只有当您(而且将是)应用程序的唯一开发者时,一致性才比命名约定更重要。 如果你想要可读性(这是非常重要的),你最好使用每种语言的命名约定。 在MySQL中,我不build议使用CamelCase,因为不是所有的平台都区分大小写。 所以这里强调更好。

由于问题不是特定于某个特定平台或数据库引擎,因此为了最大限度地提高可移植性,您应该始终使用小写表名。

/ [a-z _] [a-z0-9 _] * /实际上是在不同平台之间无缝转换的唯一名称模式。 小写字母数字+下划线始终保持一致。

如别处所述, 关系 (表格)名称应该是单数: http : //www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html

如何区分单词有很大的差异,所以你必须select你喜欢的任何东西; 但与此同时,似乎已经接近共识,表名应该是单数。