|||
非规范化设计
规范化的最终产物是一系列相关的表,这些表构成了数据库。但是,有时为了得到简单的输出,得连接多个表,这就影响查询的性能。在这种情况下,更明智的做法是引入一定程度的冗余,包括引入额外的列或额外的表。为了提高性能,在表中故意引入冗余的做法称为非规范化。
非规范化设计的基本思想是,现实世界并不总是依从于某一完美的数学化的关系模式。强制性地对事物进行规范化设计,形式上显得简单,内容上趋于复杂化。更重要的是,导致数据库运行效率的降低。非规范化要求适当地降低甚至抛弃关系模式的范式,不再要求一个表只描述一个实体或者实体间的一种联系。其主要目的在于提高数据库的运行效率。
非规范化处理的主要技术包括增加冗余或派生列,对表进行合并、分割或增加重复表。一般认为,在下列情况下可以考虑进行非规范化处理。
①大量频繁的查询过程所涉及的表都需要进行连接。
②主要的应用程序在执行时要将表连接起来进行查询。
③对数据的计算需要临时表或进行复杂的查询。
非规范化设计的主要优点是减少了查询所需的连接;减少了外键和索引的数量;可以预先进行统计计算,提高了查询时的相应速度。
非规范化存在的主要问题是增加了数据冗余;影响数据库的完整性;降低了数据更新的速度;增加了存储表所占用的物理空间。其中最重要的是数据库的完整性问题。这一问题可以通过建立触发器、应用事物逻辑、在适当的时间间隔运行屁处理命令或存储过程等方法得到解决。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 06:31
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社