关于sql:单数或复数数据库表名?

Singular or plural database table names?

本问题已经有最佳答案,请猛点这里访问。

完全复制

Table Naming Dilemma: Singular vs. Plural Names

使用单数或复数数据库表名更好吗?有公认的标准吗?

我听过支持和反对的论据,你们觉得呢?


单数,所以你可以有:

  • 客户
  • 客户地址
  • 客户跟踪

等。


imho,表名应该像客户一样是复数。

如果类名映射到customers表中的一行,则类名应该像customer一样是单数。


我喜欢单数,但似乎是少数。


我的个人理念是使用复数数据库表名是多余的,除非您只计划表包含一行。


我喜欢使用像agentid这样带有pk名称的agent这样的单数名称。

但那只是我:o)


我喜欢使用复数形式,只是因为一个表包含多个实体,所以我觉得这更自然。

在创建数据实体时,Linq to SQL将复数形式的表名转换为单数形式。我假设,如果微软认为表名的复数形式是错误的做法,他们就不会实现这个功能。


在我现在的公司里,我们用复数形式表示表名。原因是:如果我们有一个客户表,我们将每一行视为客户,那么表本身就是客户的集合。


显然,您的数据库表名必须以一种"标准"的方式命名,到目前为止我将任意定义这种方式。

首先,所有表名都应加上前缀"T"。在此之后,studlycaps中的单一实体名称,例如"客户"。随后,应立即包含模式第一版中为历史目的创建的列数,后跟下划线,以及数据的精确正常形式;对于BCNF,可以是"1"、"2"、"3"或"b"。任何较高的正常形式均应以"P"表示。

可接受名称的一些示例包括:

1
2
3
t_Customer_6_3
t_Order_5_B
t_OrderLine_4_2

我想我的观点是,只要名字是合理的描述性的,并且命名是一致的,这真的没关系。


最重要的是在使用中保持一致。记住哪些表是复数,哪些表不是复数,这很烦人。和你的域名一样,选择一个体育场并使用它。不要让贫穷的开发人员决定这个表是否使用person-id或personid或peopleid或person$id等。当您没有标准试图记住哪个表使用什么时,您可以浪费大量的时间,这是令人惊讶的。


没有应该或必须这样或那样的正确答案这个问题。这取决于数据库和软件的设计者。

对于我来说,当我做E-R图时,我通常使用单数形式的名称,因为我有一个实体客户,而不是客户,所以我保持不变,以免混淆。

当然,有些框架确实支持某种样式,所以当您注意到它们时,最好遵循这些实践。


每个问题都有很多论据,但归根结底就是你觉得舒服的地方。两者都不是错的。

真正重要的是你要始终如一。选择一个标准并坚持下去,你选择的那个标准不那么重要。


像许多这样的问题一样,最好的答案往往是"一致的"。您可以争辩表代表一个单独的实体,因此它应该有一个单独的名称,或者它包含一个实体的多个实例,所以它应该是复数。我的建议是抛开一个硬币,并将其用于整个数据库(或坚持已经占多数的惯例)。


imho这并不重要,只要做你和那些使用数据库的人都觉得舒服的事情就行了。

我想我下意识地用s和"选择列表"或外键表和单数形式列出了主要数据表。