我目前正在做某种报告系统。数字,表格,图表都是基于查询的结果。不知怎的,我发现复杂的查询不容易维护,特别是在有大量过滤时。这使得查询很长并且不容易理解。而且,有时,执行具有类似过滤器的查询,从而产生大量冗余代码,例如,当我要选择'2010-03-10'和'2010-03-15'之间的位置并且位置是'US'时,客户组是“ZZ”,我需要在每次查询时重写这些条件在这个范围内。 dbms(在我的情况下,mysql)是否支持任何“范围/上下文”以使编码更易于维护以及速度更快?
此外,是否有设计此类应用的行业标准或最佳实践? 我想我正在做的是数据挖掘,对吗?
答案 0 :(得分:1)
了解如何创建视图以消除查询中的冗余代码。 http://dev.mysql.com/doc/refman/5.0/en/create-view.html
不,这不是数据挖掘,它只是陈旧的报道。有时被称为“决策支持”。信息技术的面包和黄油。最终,玩旧报告是我们编写软件的原因。有人需要信息来做出决定并采取行动。
数据挖掘更加专业化,因为关系尚未定义。有人试图发现这些关系,以便他们可以编写一个正确的查询来利用他们找到的关系。
答案 1 :(得分:0)
如果您手动编码查询,则不会制作非常灵活的报告工具。每当一个要求发生变化时,你就会在试图满足它的繁琐代码中挣扎 - 这种方式就是疯狂。
相反,您应该开始考虑查询基础结构上方的元层,并根据用户表达的标准生成sql。您可以为它们提供一组选项,您可以从中生成查询。如果您考虑使这些选择具有可扩展性,那么您将很好地沿着已经存在的许多BI和报告产品的路径前进。
您可能还想开始寻找已经执行此操作的基础架构,例如Crystal Reports(被Business吞并,被SAP吞并)或Eclipse BIRT。根据您是在进行编程练习还是解决用户报告问题的解决方案,您可能只想获得已经有数万年开发成本的现成产品,例如上述其中一种甚至是Cognos(由IBM吞并)或Hyperion(由Oracle吞并)。
祝你好运。