学术界认为,表名应该是存储其属性的实体的单数。

我不喜欢任何需要在名称周围加方括号的T-SQL,但我已经将一个Users表重命名为单数,这永远意味着使用该表的人有时不得不使用括号。

我的直觉是,保持单数更正确,但我的直觉也是,括号表示不需要的东西,比如列名中有空格等。

我该留下还是该走?


当前回答

我是单数表名的粉丝,因为它们使用CASE语法使我的ER图更容易阅读,但通过阅读这些响应,我感到它从未很好地被理解?我个人很喜欢它。这里有一个很好的概述,举例说明当你使用单数表名,在你的关系中添加动作动词,并为每一种关系形成好句子时,你的模型是多么可读。对于一个20表的数据库来说,这有点过分了,但是如果您有一个包含数百个表的数据库,并且设计复杂,如果没有一个可读性好的图表,您的开发人员将如何理解它?

http://www.aisintl.com/case/method.html

至于表和视图的前缀,我绝对讨厌这种做法。在给一个人提供可能不好的信息之前,不要给他任何信息。任何浏览数据库查找对象的人都可以很容易地将表与视图区分开来,但如果我有一个名为tblUsers的表,出于某种原因,我决定在将来将其重组为两个表,并使用一个视图统一它们,以防破坏旧代码,那么我现在有一个名称为tblUser的视图。此时,我只剩下两个没有吸引力的选项:留下一个带有tbl前缀的视图,这可能会让一些开发人员感到困惑,或者强制重写另一个层(中间层或应用程序),以引用我的新结构或名称viewUsers。这否定了IMHO视图的大部分价值。

其他回答

我也会使用复数形式,对于前面提到的用户困境,我们确实采用了方括号方法。

我们这样做是为了在数据库体系结构和应用程序体系结构之间提供一致性,基本上理解为用户表是用户值的集合,就像代码工件中的用户集合是用户对象的集合一样。

让我们的数据团队和开发人员使用相同的概念语言(尽管不总是相同的对象名称),可以更容易地在他们之间传达想法。

我通过将表命名为“雇员”(实际上是“雇员”)来解决同样的问题。我尽量避免与可能保留的单词发生冲突。即使是“用户”对我来说也很近。

我有同样的问题,在阅读了这里的所有答案后,我肯定会选择SINGULAR,原因如下:

原因1(概念)。你可以把装苹果的袋子想象成“苹果袋”,不管是装0个、1个还是100万个苹果,都是同一个袋子。表只是容器,表名必须描述它包含的内容,而不是它包含多少数据。此外,复数概念更多地是关于口语的一个(实际上是为了确定是否有一个或多个)。

原因2。(方便)。用单数名字比用复数名字更容易。对象可以有不规则的复数形式,也可以完全没有复数形式,但总是有单数形式(新闻等少数例外)。

顾客顺序使用者地位消息

原因3。(美学和秩序)。特别是在主细节场景中,这读起来更好,按名称排列更好,逻辑顺序更高(主细节优先,细节第二):

1.订单2.订单详情

对比:

1.订单详情2.订单

原因4(简单)。把所有这些放在一起,表名、主键、关系、实体类。。。最好只知道一个名称(单数),而不是两个名称(单一类、复数表、单数字段、单数复数主细节…)

顾客客户.CustomerID客户地址公共类客户{…}从客户选择CustomerID=100

一旦你知道你是在和“客户”打交道,你就可以确定你会对所有的数据库交互需求使用同一个词。

原因5。(全球化)。世界越来越小,你可能有一个不同国籍的团队,但不是每个人都以英语为母语。对于非英语母语的程序员来说,想到“存储库”比想到“存储”更容易,或者想到“状态”而不是“状态”。使用单数名称可以减少因拼写错误导致的错误,不必思考“是孩子还是孩子?”,从而节省时间,从而提高生产力。

原因6。(为什么不呢?)。它甚至可以节省你的写作时间,节省你的磁盘空间,甚至让你的电脑键盘更耐用!

选择客户.CustomerName FROM Customer WHERE Customer.CustomerID=100选择Customers.CustomerName FROM Customers WHERE Customers.CustomerID=103

您已保存了3个字母、3个字节和3次额外的键盘点击:)

最后,你可以说出那些用保留名搞乱的名字,比如:

用户>LogiUser、AppUser、SystemUser、CMSUser,。。。

或者使用臭名昭著的方括号[User]

我只是说说我为什么用单数名。

例如,我需要从用户处获取所有字段:

-- Select every fields from 'user' table
SELECT * FROM user

我需要21岁用户的姓名:

-- Select every fields from 'user' table which have 21 years old
SELECT * FROM user WHERE age = '21'

当然,复数形式也可以用同样的方式,但对于我的大脑来说,我真的认为这是正确的方式。

TABLE名称是表结构的一个定义。VIEW或QUERY名称是(一个或多个)表的视图或查询的一个定义。表格、视图或查询可能包含以下内容之一:

0条记录1条记录许多记录。

你到底为什么要在一个对象名称的末尾加一个“s”?将“s”放在对象名称的末尾,表示什么意思?

如果要区分,请添加“_tbl”。视图是“_vew”(而不是愚蠢的“_v”约定)。

最少3个字符的后缀-这会使讨论停止。

表是一个DB对象,与其他对象没有区别。

保存3个字符只会使意思清晰。

红色;-)