7

非规范化企业应用程序数据库的优点/缺点是什么,因为它会使编写报告更容易?

Pro - 在 SSRS 中设计报告可能会“更容易”,因为不需要连接。

由于数据重复和同步,开发/维护应用程序以处理非规范化数据将变得更加困难。

其他的?

4

6 回答 6

19

为了报告而进行的非规范化是不好的,好吧。

创建视图或非规范化数据仓库都很好。

Views 解决了我的大部分报告相关需求。当用户几乎不断地生成报告或您的视图开始变慢时,数据仓库非常有用。

这就是您想要规范化数据库的原因

  1. 将关系集合从不需要的插入、更新和删除依赖中解放出来;
  2. 减少随着新类型数据的引入而重新构建关系集合的需要,从而增加应用程序的生命周期;
  3. 使关系模型为用户提供更多信息;
  4. 使关系的收集对查询统计信息保持中立,这些统计信息可能会随着时间的推移而变化。

—EF Codd,“数据库关系模型的进一步规范化”,来自维基百科

于 2009-11-20T18:37:29.940 回答
6

您应该考虑去规范化的唯一时间是生成报告所花费的时间是不可接受的。反规范化将导致有时无法确定的一致性问题,尤其是在大型数据集中

于 2009-11-20T18:37:15.177 回答
4

不要仅仅为了摆脱报告中的复杂性而进行非规范化,它可能会在应用程序的其余部分中导致巨大的问题。要么你不强制执行导致错误数据的规则,要么如果你这样做了,那么对于每个人来说,插入、删除和更新都会严重减慢,而不仅仅是运行报告的两三个人。

如果报告确实不能很好地运行,则创建一个非规范化的数据仓库,并将其填充到每晚或每周的订阅源中。通常需要这种报告的类型通常不关心数据是否是最新的,因为它们通常是在事后处理(尤其是汇总)大量数据的月度、季度或年度报告。

于 2009-11-20T18:48:52.083 回答
2

你可以同时做...让应用程序的规范化数据库。然后为报告创建一个非规范化数据库,并创建一个应用程序,定期将数据从一个数据库复制到另一个数据库。

毕竟,报表并不总是需要有最新的更新数据,大多数情况下,您可以轻松地在报表数据库上每 1 小时启动一次更新,并且每天只更新一次。

于 2010-01-07T16:40:12.383 回答
1

除了其他答案中提供的数据仓库和视图解决方案,这在某些方面很好,如果您愿意牺牲一些性能来获得最后一秒的数据,但仍然想要一个规范化的数据库,您可以在 Oracle 上使用提交时具有快速刷新的物化视图,或者在 Sql Server 中,您可以对视图使用聚集索引。

于 2010-01-07T16:49:42.893 回答
0

另一个缺点是数据可能不是实时的,因为数据需要一段时间才能从规范化形式变为非规范化形式。如果有人希望报告在请求的那一秒内完成,在这种情况下可能很难做到。

如果这是原始帖子中同步的重复,抱歉我没有这么看。

于 2009-11-20T18:42:10.267 回答