Mar*_*lde 78 database database-design
我一直在阅读StackOverflow上的几个问题/答案,试图找到"最好的",或者我应该说是必须接受的方式,来命名数据库上的表.
大多数开发人员倾向于根据需要数据库的语言(JAVA,.NET,PHP等)命名表.但是我觉得这不对.
到目前为止,我一直在命名表的方式是:
doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents
Run Code Online (Sandbox Code Playgroud)
我关心的是:
我想阅读有关命名约定的任何意见.谢谢.
Dav*_*ill 150
保持一致远比您使用的特定方案重要.
Jus*_*ner 18
我通常使用PascalCase,实体是单数的:
DoctorMain
DoctorProfile
DoctorPatient
Run Code Online (Sandbox Code Playgroud)
它模仿了我的应用程序中类的命名约定,使每个人都能保持整洁,干净,一致且易于理解.
ter*_*R0Q 10
SQL支持不区分大小写的本质Underscores_Scheme.然而,现代软件支持任何类型的命名方案.然而,有时一些令人讨厌的错误,错误或人为因素可能会导致UPPERCASINGEVERYTHING选择这两个Pascal_Case和Underscore_Case计划的人生活在他们所有的神经中.
我使用下划线.几年前我做了一个Oracle项目,看起来Oracle强迫我所有的对象名称都是大写的,这会打击任何套管方案.我不是一个真正的甲骨文家伙,所以也许有一种解决方法,我不知道,但它让我使用下划线,我从来没有回去过.
以上大部分内容的汇总:
然后,您可以轻松地在环境之间转换(甚至自动)名称.
但我还要补充一点:当你从应用程序中的类移动到数据库中的表时,你可能会发现还有其他因素:数据库对象有视图,触发器,存储过程,索引,约束等等 - 还需要名字.因此,例如,您可能会发现自己只能通过视图访问表,这些视图通常只是一个简单的"select*from foo".这些可以标识为只有后缀"_v"的表名,或者您可以将它们放在不同的模式中.这种简单抽象层的目的是在必要时可以扩展它以允许在一个环境中进行更改以避免影响另一个环境.这不会打破上述命名建议 - 只需要考虑一些其他事项.
我倾向于同意那些说这取决于你正在使用的语言惯例的人(例如,用于C#的PascalCase和用于Ruby的snake_case).
但是,从来没有骆驼过.
由于该问题并非特定于特定的平台或数据库引擎,因此,为了最大程度地实现可移植性,我必须始终使用小写的表名。
/ [a-z _] [a-z0-9 _] * /实际上是唯一可以在不同平台之间无缝转换的名称模式。小写字母数字和下划线将始终保持一致。
如其他地方所述,关系(表)名称应为单数形式:http : //www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html
在阅读了许多其他意见之后,我认为使用语言的命名约定非常重要,仅当您(并将成为)应用程序的唯一开发人员时,一致性比命名约定更重要。如果需要可读性(这非常重要),则最好为每种语言使用命名约定。例如,在MySQL中,我不建议使用CamelCase,因为并非所有平台都区分大小写。因此,这里的下划线会更好。