我有两张桌子:
"sites" has_many "users"
"users" belongs_to "sites"
每当用户添加到网站时,最好是在网站表中添加名为 users_count 的列并将其递增1。或者是以最佳方式对用户表进行条件计数?
答案 0 :(得分:2)
“更好”是一个主观的术语。
但是,我会坚持这一点。数据库中不应该有两个相同信息的来源,只是因为它们可能不合时宜。
发现有多少用户属于某个网站的明确方法是使用count
对其进行统计。
第三范式要求每个非关键属性都取决于密钥,整个密钥,除了密钥之外什么都没有(所以请帮助我,Codd)。
如果您向网站添加用户数,那么不仅依赖于sites
键值,它还取决于其他表中的信息。
如果您了解其含义并减少数据不一致的可能性(例如使用触发器),可以 从第三范式恢复以获得性能,但绝大多数情况应保持3NF。