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

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

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

我该留下还是该走?


当前回答

如果你去那里会有麻烦,但如果你留下来,麻烦就会加倍。

我宁愿违背一些假定的非复数命名惯例,也不愿用可能是保留词的名称来命名我的表。

其他回答

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

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

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

例如,当我们说:

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

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

什么约定要求表具有单数名称?我一直以为是复数。

用户将添加到“用户”表中。

本网站同意:http://vyaskn.tripod.com/object_naming.htm#Tables

本网站不同意(但我不同意):http://justinsomnia.org/writings/naming_conventions.html


正如其他人所提到的:这些只是指导方针。选择一个适合你和你的公司/项目的惯例,并坚持下去。在单数和复数之间切换,或者有时缩写词,有时不缩写词,这会让人更加恼火。

服务器本身的系统表/视图(SYSCAT.tables、dbo.sysindexes、ALL_tables、information_schema.columns等)几乎总是多个。我想为了保持一致,我会追随他们的脚步。

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

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

-- 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'

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

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