在我建立的在线票务系统中,我需要为我的客户添加订单的实时分析报告。
重要订单数据分为多个表(客户,订单,line_items,package_types,票证)。每个表都包含对我的客户可能需要的任何报告不重要的其他数据。
我正在考虑将每个订单记录为非规范化报表中的单独订单项。我想弄清楚这是否有意义。
通常,我为报表运行的查询一次只能连接两个或三个表。每个表都添加了适当的索引。
将所有订单数据汇编到一个只包含报告所需列的表中是否有意义?
该应用程序基于Ruby on Rails 3构建,DB是Postgresql。
编辑:这样做的目的是尽可能快地为用户呈现浏览器中的数据。
答案 0 :(得分:2)
取决于您的目标。如果你想让报告输出更快地显示,那肯定会有效。权衡是通过批量更新在一定程度上维护数据。您可以编写一个触发器,在新记录进入基表时随时更新表,但这可能会增加很多开销。
在这种情况下,一个视图而不是一个新表是一个更好的解决方案吗?