数据库计数列

时间:2012-04-05 04:56:36

标签: ruby-on-rails database activerecord

我有两张桌子:

"sites" has_many "users" 
"users" belongs_to "sites"

每当用户添加到网站时,最好是在网站表中添加名为 users_count 的列并将其递增1。或者是以最佳方式对用户表进行条件计数?

1 个答案:

答案 0 :(得分:2)

“更好”是一个主观的术语。

但是,我会坚持这一点。数据库中不应该有两个相同信息的来源,只是因为它们可能不合时宜。

发现有多少用户属于某个网站的明确方法是使用count对其进行统计。

第三范式要求每个非关键属性都取决于密钥,整个密钥,除了密钥之外什么都没有(所以请帮助我,Codd)。

如果您向网站添加用户数,那么仅依赖于sites键值,它还取决于其他表中的信息。

如果您了解其含义并减少数据不一致的可能性(例如使用触发器),可以 从第三范式恢复以获得性能,但绝大多数情况应保持3NF。