数据模型。 ¿Pluralize or not pluralize the names of the tables?

Data model. ¿Pluralize or not pluralize the names of the tables?

大家好。每当我开始为任何应用程序开发新数据模型时,我都会遇到同样的问题:

table的名字复数方便吗?

存储table的地方,例如users;您会调用“Users”还是“User”?

我没有复数化,因为使用这个数据模型,然后我为 ORM 生成了实体,似乎更正确实例化一个new 'User' 即一个新的 'Users'.

想知道考虑一下

大家好!

我认为这里最好采用类似 Rails 的约定。 ORM 中的单数模型名称,数据库中的复数名称 table。原因是因为他们有不同的责任。 table 存储多个用户的记录,而 - 正如您所指出的 - 您通常实例化一个用户。

我想这完全取决于您实际使用数据库的目的:

I do not pluralize, because with this data model, I then generated entities for ORM and it seems more correct to instantiate a new 'User' that a new 'Users'.

但是除了sql、哪个框架、哪个工具之外,你没有提供太多关于你使用哪种语言的信息。

我一般说最好是符合框架或ORM的标准,比如.NET中Entity Framework数据库中table是generated with a singular notation and class names that map to these tables are singular as well, whereas in Ruby on Rails ActiveRecord they are generated pluralized但是mapping classes 是单数。

我认为没有更好的方法,但是,如果您的应用程序的数据比应用程序本身更重要(例如,我们最终可能会从该框架或语言迁移到完全不同的东西)或如果有其他人直接在数据库上工作(做报告的人、DBA、分析师等),那么我建议你将 table 设为复数形式 database people 更热衷于以这种方式使用它。

如果您认为在数据库级别复数化有意义,那么 users table 可能会有多个用户,依此类推。如果您不打算存储多个具有相同结构的记录,为什么要以 table 方式存储数据?比多元化更有意义。

如果你用X语言创建一个数组类型的数据,比方说,对于用户来说,你不叫它user你叫它users 可能,因为它可能包含多个,即使您最初只在上面存储一件东西。

这就是我为什么将 table 名称复数化是一个好方法的原因,此外,如果复数化打破了惯例,您几乎总是可以在 ORM 中设置映射,这样您就可以设置例如,User class 映射到 users table。

更新: here is another good discussion 在 StackExchange 的 DBA 上,他们提出了关于联合协会的观点