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

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

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

我该留下还是该走?


当前回答

这可能有点多余,但我建议谨慎行事。重命名表不一定是坏事,但标准化就是这样;一个标准——这个数据库可能已经被“标准化”了,无论多么糟糕:)——我建议一致性是一个更好的目标,因为这个数据库已经存在,而且它可能不仅仅由两个表组成。

除非您能够标准化整个数据库,或者至少计划为此目的而努力,否则我怀疑表名只是冰山一角,专注于手头的任务,忍受命名不好的对象的痛苦,可能符合您的最大利益--

实际一致性有时是最佳标准…:)

my2内容---

其他回答

表格:复数

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

型号:单数

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

控制器:复数

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

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

举个简单的例子:

SELECT Customer.Name, Customer.Address FROM Customer WHERE Customer.Name > "def"

vs.

SELECT Customers.Name, Customers.Address FROM Customers WHERE Customers.Name > "def"

后者中的SQL比前者听起来更奇怪。

我投票支持单数。

正如其他人在这里提到的,约定应该是一种工具,可以增加易用性和可读性。不是用来折磨开发者的枷锁或俱乐部。

也就是说,我个人倾向于对表和列使用单数名称。这可能来自我的编程背景。类名通常是单数,除非它们是某种集合。在我的脑海中,我正在存储或读取相关表中的单个记录,所以单数对我来说是有意义的。

这种做法还允许我为那些在对象之间存储多对多关系的表保留多个表名。

我也尽量避免在表和列名中使用保留字。在这里所讨论的情况下,违背用户的单一约定更有意义,以避免需要封装使用User的保留字的表。

我喜欢以有限的方式使用前缀(tbl表示表名,sp_表示进程名等),尽管许多人认为这会增加混乱。与下划线相比,我更喜欢CamelBack名称,因为我在键入名称时总是按+而不是_。许多人不同意。

下面是命名约定指南的另一个好链接:http://www.xaprb.com/blog/2008/10/26/the-power-of-a-good-sql-naming-convention/

请记住,您的惯例中最重要的因素是,它对与所讨论的数据库交互的人来说是有意义的。在命名惯例方面,没有“一个戒指来统治所有人”。

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

如果我们查看MS SQL Server的系统表,Microsoft指定的表名是复数。

Oracle的系统表以单数形式命名。尽管其中有几个是复数。Oracle建议用户定义的表名使用复数。他们推荐一件事而遵循另一件事,这没有多大意义。这两个软件巨头的架构师使用不同的约定来命名他们的表,这也没有多大意义。。。毕竟,这些家伙是什么。。。博士学位?

我记得在学术界,这项建议是独一无二的。

例如,当我们说:

select OrderHeader.ID FROM OrderHeader WHERE OrderHeader.Reference = 'ABC123'

也许b/c每个ID都是从特定的单行中选择的。。。?