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

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

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

我该留下还是该走?


当前回答

两个网站都有不同的论文,我认为你只需要选择你的一方。就我个人而言,我更喜欢Plular来命名表,当然,单数来命名列。

我喜欢你怎么读这个:

SELECT CustomerName FROM Customers WHERE CustomerID = 100;

的确,我们有OOP,这很好,但大多数人仍然使用关系数据库,而不是对象数据库。关系数据库不需要遵循OOP概念。

另一个例子是,您有一个表Teams,它保存了TeamID、TeamColor和PlayerID,并且对于一定数量的PlayerID将具有相同的TeamID和TeamColor。。。

该球员属于哪支球队?

SELECT * FROM Teams WHERE PlayerID = X

X队的所有球员?

SELECT * FROM Players INNER JOIN Teams ON Players.PlayerID = Teams.PlayerID WHERE Teams.TeamID = X

你觉得这一切都好吗?

无论如何,还可以看看W3Schools使用的命名约定:

http://www.w3schools.com/sql/sql_join_inner.asp

其他回答

我总是使用单数,因为这就是我所学到的。然而,在最近创建一个新的模式时,这是很长一段时间以来的第一次,我积极地决定保持这种惯例,因为。。。它更短。对我来说,在每个表名的末尾添加“s”和在每个表的前面添加“tbl_”一样无用。

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

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

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

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

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

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

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

红色;-)

如果您使用对象关系映射工具,或者将来会使用,我建议您使用Singular。

一些工具(如LLBLGen)可以自动更正多个名称(如用户到用户),而无需更改表名本身。为什么这很重要?因为当它被映射时,你希望它看起来像User.Name而不是User.Name,或者更糟糕的是,我的一些旧数据库表命名为tblUsers.strName,这在代码中令人困惑。

我的新经验法则是判断它转换成对象后的外观。

我发现一个不适合我使用的新命名的表是UsersInRoles。但总会有一些例外情况,即使在这种情况下,它看起来也很像UsersInRoles.Username。

我们运行类似的标准,在编写脚本时,我们要求[]围绕名称,并在适当的情况下使用模式限定符-主要是为了防止SQL语法将来夺取名称。

SELECT [Name] FROM [dbo].[Customer] WHERE [Location] = 'WA'

这在过去拯救了我们的灵魂——我们的一些数据库系统从SQL 6.0到SQL 2005已经运行了10多年——远远超过了预期寿命。

我个人更喜欢用复数来表示一个集合,这对我的关系思维来说“听起来”更好。

此时此刻,我正使用单数名称为我的公司定义一个数据模型,因为大多数工作人员都觉得它更舒服。有时候,你只需要让每个人的生活更轻松,而不是强加你的个人喜好。(这就是我在本主题中的结尾,以确认什么是命名表的“最佳实践”)

在阅读了这篇文章中的所有争论之后,我得出了一个结论:

不管每个人最喜欢的口味是什么,我都喜欢我的蜂蜜煎饼。但如果我为其他人做饭,我会尝试为他们提供他们喜欢的东西。