数据库表名:Plural或Singular

Joh*_*ert 11 sql database sql-server database-design sql-server-2008

SQL数据库表最常见的命名约定是什么?它在历史上是一种方式,现在以另一种方式做得更好吗?现在最常见的做法是什么?

Bil*_*eal 13

我总是对表名使用复数,对列名使用单数.并不是说它有任何真正的技术原因,这正是我喜欢的.

只要你保持一致,没关系.

+========+       +==========+
| Posts  |       | Users    |
+--------+       +----------+
| idPost |   |-> | idUser   |
| Poster | <-|   | Name     |
+========+       +==========+

我的理由是在编写实际查询时会发生什么:

SELECT idPost, Name FROM Posts
INNER JOIN Users ON Poster = idUser
Run Code Online (Sandbox Code Playgroud)

如果你使用单数,看起来你正在从帖子中选择,而不是从所有帖子的集合中选择,并加入单个用户,而不是所有用户.

  • 如果您习惯于那样看,它只会“看起来那样”。如果你使用单数一段时间,它看起来就不再那么有趣了。这就是万物之道。 (3认同)
  • @Emtucifor:我认为这就是"无所谓,只要你是一致的".这对我来说最有意义,所以这就是我的用途.如果你更喜欢单数,请使用它.但是不要混淆n'匹配. (2认同)

duf*_*ymo 11

不,对我而言是单数.这是"用户"表.

  • 好吧,多年前我从复数转变为单数,我认为它一般来说更具可读性.这有点像把'tbl'放在桌子前面.这是一种冗余.我的投票+1 (2认同)
  • "名称列中有许多名称".不,不.这是一行的属性.它具有该对象的一个​​属性值.没有"过渡".这是奇异的.除非您有1NF违规,并且有重复的组.如果您没有声明列是单数,则无法检测到1NF违规.列名是单数.除非你有1NF违规,否则thery是复数. (2认同)

Tom*_*zyk 8

表名称的复数 - 因为表存储用户,产品,项目等.模型的单数名称,因为它们是单项 - 用户,产品,项目.对于表字段,我符合mysql命名约定 - user_id,product_price,item_count.

使用它们中的任何一个,但始终如一地使用 - 毕竟这将是我的答案.