学术界认为,表名应该是存储其属性的实体的单数。
我不喜欢任何需要在名称周围加方括号的T-SQL,但我已经将一个Users表重命名为单数,这永远意味着使用该表的人有时不得不使用括号。
我的直觉是,保持单数更正确,但我的直觉也是,括号表示不需要的东西,比如列名中有空格等。
我该留下还是该走?
学术界认为,表名应该是存储其属性的实体的单数。
我不喜欢任何需要在名称周围加方括号的T-SQL,但我已经将一个Users表重命名为单数,这永远意味着使用该表的人有时不得不使用括号。
我的直觉是,保持单数更正确,但我的直觉也是,括号表示不需要的东西,比如列名中有空格等。
我该留下还是该走?
当前回答
单数的我不相信任何涉及最合乎逻辑的论点——每个人都认为自己的偏好最合乎逻辑。无论你做什么,这都是一团糟,只要选择一个惯例并坚持下去。我们正试图将一种语法和语义高度不规则的语言(正常的口语和书面语言)映射到一种具有非常特定语义的高度规则(SQL)语法。
我的主要论点是,我不认为表格是一个集合,而是一个关系。
因此,AppUser关系告诉哪些实体是AppUsers。
AppUserGroup关系告诉哪些实体是AppUserGroups
AppUser_AppUserGroup关系告诉AppUsers和AppUserGroups是如何关联的。
AppUserGroup_AppUserGroup关系告诉AppUserGroups和AppUserGroup是如何关联的(即组中的组成员)。
换句话说,当我想到实体以及它们是如何关联的时候,我想到的是单数的关系,但当然,当我想起集合或集合中的实体时,集合或集合是复数的。
在我的代码和数据库模式中,我使用单数。在文本描述中,为了提高可读性,我最终使用了复数形式,然后使用字体等将表/关系名称与复数形式区分开来。
我喜欢认为它是混乱的,但有系统的——这样,我想表达的关系总是有一个系统生成的名称,这对我来说非常重要。
其他回答
单数的我不相信任何涉及最合乎逻辑的论点——每个人都认为自己的偏好最合乎逻辑。无论你做什么,这都是一团糟,只要选择一个惯例并坚持下去。我们正试图将一种语法和语义高度不规则的语言(正常的口语和书面语言)映射到一种具有非常特定语义的高度规则(SQL)语法。
我的主要论点是,我不认为表格是一个集合,而是一个关系。
因此,AppUser关系告诉哪些实体是AppUsers。
AppUserGroup关系告诉哪些实体是AppUserGroups
AppUser_AppUserGroup关系告诉AppUsers和AppUserGroups是如何关联的。
AppUserGroup_AppUserGroup关系告诉AppUserGroups和AppUserGroup是如何关联的(即组中的组成员)。
换句话说,当我想到实体以及它们是如何关联的时候,我想到的是单数的关系,但当然,当我想起集合或集合中的实体时,集合或集合是复数的。
在我的代码和数据库模式中,我使用单数。在文本描述中,为了提高可读性,我最终使用了复数形式,然后使用字体等将表/关系名称与复数形式区分开来。
我喜欢认为它是混乱的,但有系统的——这样,我想表达的关系总是有一个系统生成的名称,这对我来说非常重要。
我也会使用复数形式,对于前面提到的用户困境,我们确实采用了方括号方法。
我们这样做是为了在数据库体系结构和应用程序体系结构之间提供一致性,基本上理解为用户表是用户值的集合,就像代码工件中的用户集合是用户对象的集合一样。
让我们的数据团队和开发人员使用相同的概念语言(尽管不总是相同的对象名称),可以更容易地在他们之间传达想法。
IMHO,表名应该是复数,如Customer。
如果类名称映射到Customers表中的一行,则类名称应与Customer类似。
我的看法是语义上的,这取决于您如何定义容器。例如,“一袋苹果”或简单的“苹果”或“苹果袋”或“apple”。
例子:“学院”表可以包含0个或多个学院“学院”表可以包含0个或多个学院
a "student" table can contain 0 or more students
a table of "students" can contain 0 or more students.
我的结论是,两者都可以,但你必须定义你(或与之互动的人)在参考表格时将如何处理;“x表”或“xs表”
如果你去那里会有麻烦,但如果你留下来,麻烦就会加倍。
我宁愿违背一些假定的非复数命名惯例,也不愿用可能是保留词的名称来命名我的表。