BDu*_*elz 3 database normalization aggregation
在像SO这样的网站上,我确信绝对有必要存储尽可能多的聚合数据,以避免在每个页面加载时执行所有那些复杂的查询/计算.例如,存储每个问题/答案的投票计数的运行记录,或存储每个问题的答案数,或者查看问题的次数,以便不需要经常执行这些查询.
但这样做是否违反了数据库规范化或任何其他标准/最佳实践?这样做的最佳方法是什么,例如,每个表是否都有另一个聚合数据表,如果它存储在它所代表的同一个表中,何时应该更新聚合数据?
谢谢
要记住的一句话是“归一化直到痛苦,反归一化直到起作用”
这意味着:规范您所有的域关系(至少为第三范式(3NF))。如果您测量到缺乏性能,请调查(并测量)非规范化是否会带来性能优势。
所以,是的。存储聚合数据“违背”规范化。
没有标准化的“最佳方法”。这取决于您对数据的处理方式。
非规范化应该与过早优化一样对待:除非您已经测量到性能问题,否则不要这样做。
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |