现在的位置: 首页 > 综合 > 正文

SQL SERVER 2000 合理地进行逆规范化设计

2013年03月05日 ⁄ 综合 ⁄ 共 861字 ⁄ 字号 评论关闭

        逆规范化是一种在数据中加入数据冗余的技术,以便能够更加方便地检索数据。它有意识的违反了规范化(即:数据库设计三范式)。

        让我们来看几个逆规范化数据结构的例子。例如,如果在【Order】表中加入客户的姓名,那么在查询订单的时候就不需要与【Coustomer】表进行链接就能够检索到客户的名字。又如,如果在【ShipDetail】表中加入CustomerID列,那么就不必通过【OrderDetail】和【Order】表来连接【ShipDetail】和【Coustomer】表了,而是可以直接将它们两个表进行连接。上述这两种方法都违反了规范化的规则,因为新加入的属性都不依赖于其所在表的主键。

        一些开发人员经常对数据库的某些部分进行逆规范化,试图通过这种方法提供性能。虽然这种方法能够减少查询所需要的连接数目,但从整体上来看,它却降低了OLTP数据库的速度,因为必须使用更多的触发器以保证冗余数据的一致性。是否应当对数据库的某一部分进行逆规范化,取决于数据库中数据的用途:

  • 如果以OLTP的方式使用数据----也就是说,数据库中的数据是原始数据,而且数据的完整性很重要。永远不要对原始数据进行逆规范化。
  • 为了提高OLTP数据库的性能,可以对聚和数据----如帐户余额或者库存台帐中的库存数量进行逆规范化,即使这些数据都可以从库存事务表或者分户帐事务表中计算导出
  • 如果数据不是原始数据,并且主要用于OLAP或者制作报表,数据一致性不是要关注的问题。对于这些数据,为提高性能而进行逆规范化是一种明智之举。

        OLTP:联机事务处理on-line transaction processing),OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。

        OLAP:联机分析处理OLAPOn-Line Analytical Processing),OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

 

抱歉!评论已关闭.