![]() |
1
19
为了报告而非规范化是不好的,M'kay。 创建视图或非规范化的数据仓库是很好的。 视图解决了我大部分与报告相关的需求。当用户几乎经常生成报告或者当您的视图开始变慢时,数据仓库是非常好的。 这就是您希望规范化数据库的原因。
|
![]() |
2
6
您应该考虑的唯一时间是当生成报告所用的时间不可接受时进行非正规化。去规范化会导致一致性问题,这些问题有时无法确定,尤其是在大型数据集中。 |
![]() |
3
4
不要仅仅为了消除报告的复杂性而取消规范化,否则会在应用程序的其余部分造成巨大的问题。或者你不执行导致坏数据的规则,或者如果你这样做了,那么插入、删除和更新对于每个人(不仅仅是运行报表的两三个人)来说都会严重减慢。 如果报表真的不能很好地运行,那么创建一个非规范化的数据仓库,并将其填充到夜间或每周的提要中。通常需要这样做的报告类型通常不关心数据是否是最新的,因为它们通常是处理(尤其是汇总)事后大量数据的月度、季度或年度报告。 |
![]() |
4
2
你可以两个都做…让应用程序的规范化数据库。 然后为报表创建一个非规范化的数据库,并创建一个应用程序,定期将数据从一个数据库复制到另一个数据库。 毕竟,报表并不总是需要有最新的更新数据,大多数情况下,您可以轻松地在报表数据库上每1小时启动一次更新,并且每天只能更新一次。 |
![]() |
5
1
除了在其他答案中提供的数据仓库和视图解决方案(在某些方面是好的)之外,如果您愿意牺牲一些性能来获得好的到最后一秒的数据,但仍然需要一个规范化的数据库,则可以在Oracle上使用提交时具有快速刷新功能的物化视图,或者在SQL Server中,可以使用聚集索引是一种观点。 |
![]() |
6
0
另一个缺点是,数据可能不是实时的,因为有一些时间在数据周围移动,使其从规范化的形式变为非规范化的形式。如果有人希望报告能在收到请求的那一秒之内完成,那么在这种情况下就很难做到。 如果这是原始日志中同步的副本,很抱歉我没有完全看到这种情况。 |
![]() |
Dane · Acumatica-将报告下拉列表添加到套件组装屏幕 6 年前 |
![]() |
LEBoyd · 测试报表的表中是否存在行 6 年前 |
|
Alghamdi Abdulaziz · 使用RDLC限制矩阵中的列数 7 年前 |
![]() |
Talib · 使用count函数时报表中的空行 7 年前 |
![]() |
forvas · 如何创建具有动态高度的paperformat记录? 7 年前 |
![]() |
NormX · 在窗体访问上打印预览到当前记录 7 年前 |
|
MAH · 用php显示逐月报表 7 年前 |