在数据库设计这个圈子里,有个老生常谈的问题:给表命名的时候,是该用单数形式,还是复数形式呢?比如,一个存储用户信息的表,我们是叫它 user 还是 users 呢?
为啥有人喜欢用复数?
支持用复数的名字,理由其实挺直接的:
-
表里装的是不止一个用户嘛。
-
写 SQL 查询的时候,读起来顺:
SELECT id, name FROM users;这看起来确实挺自然的,对吧?
单数派
不过,坚持用单数名字的朋友们,他们的理由就稍微有点“技术含量”了:
-
从严格意义上说,我们命名的不是“表”,而是“关系”。 我们是在描述用户ID、姓名、地址等等之间的关系。关于用户数据,其实只有一个“用户关系”。一旦我们定义了这个
user关系,就可以用它来处理很多用户的数据了。 -
在 SQL 查询的其他地方,单数读起来更舒服:
SELECT id, name FROM user JOIN country ON user.country_id = country.id WHERE country.name = 'Canada';如果这里写成
users.country_id,是不是感觉有点怪怪的? -
你程序里存储数据的类名,通常是单数(比如
User)。 如果表名是复数,就会产生不匹配。在很多 ORM(比如 Rails)里,它们会自动帮你把表名变成复数,结果就是你可能会看到像addresss这种有点奇怪的表名。 -
有些关系本身就是复数。 比如,你有一个叫
UserFacts的类,用来存储用户的各种杂项信息(年龄、喜欢的颜色等等)。那这个数据库表该叫什么呢?
哪个更好?
我觉得第四个理由是最有说服力的。因为只要出现一个例外,整个数据库的命名一致性就可能被打破。而用单数命名,无论现在还是将来,都不会给你带来麻烦。
所以,下次给数据库表命名的时候,不妨考虑一下用单数形式,让你的设计更简洁、更一致!
你觉得呢?在你的项目里,表名是怎么命名的?有没有遇到过什么有趣的命名故事,欢迎在评论区分享你的看法!
评论 0 条
暂无评论,来种下第一颗种子。