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

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

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

我该留下还是该走?


当前回答

表的SQL定义实际上是表的一个潜在行的定义,而不是集合。因此,该定义中使用的名称必须指定行的类型,而不是集合的名称。那些喜欢复数的人,因为它在他们的英语语句中读起来很好,他们需要开始更逻辑地思考,并查看实际使用表所涉及的所有逻辑和编程代码。这些注释中提到了使用单数表名的几个很好的理由。其中包括不使用多个表名的充分理由。“好好读书”根本不应该是任何理由,尤其是因为有些人可能会以不同的方式来理解这个想法。

其他回答

实际上,我一直认为使用多个表名是一种流行的习惯。到目前为止,我一直使用复数。

我可以理解单数表名的论点,但对我来说,复数表名更有意义。表名通常描述表包含的内容。在标准化数据库中,每个表都包含特定的数据集。每一行都是一个实体,表中包含许多实体。因此,表名的复数形式。

一张汽车表上会有汽车的名字,每一排都是一辆汽车。我承认,以table.field的方式指定表和字段是最好的做法,使用单一的表名更容易阅读。然而,在以下两个例子中,前者更有意义:

SELECT * FROM cars WHERE color='blue'
SELECT * FROM car WHERE color='blue'

老实说,我将重新思考我在这件事上的立场,我将依赖于我正在开发的组织所使用的实际惯例。然而,我认为出于个人习惯,我将坚持使用复数表名。对我来说,这更有意义。

两个网站都有不同的论文,我认为你只需要选择你的一方。就我个人而言,我更喜欢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

可能的替代方案:

重命名表SystemUser使用括号保留多个表名。

IMO使用括号从技术上来说是最安全的方法,尽管它有点麻烦。IMO是一个6个,另一个6打,您的解决方案实际上只是归结为个人/团队偏好。

表格:复数

用户表中列出了多个用户。

型号:单数

可以从用户表中选择单个用户。

控制器:复数

http://myapp.com/users将列出多个用户。

无论如何,这是我的看法。

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

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

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

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