日期:2014-01-22  浏览次数:20516 次

          关系数据库设计是对数据进行组织化和结构化的过程,核心问题是关系模型的设计。关系模型是数学化的、用二维表格数据描述各实体之间的联系的模型;它是所有的关系模式、属性名和关键字的汇集,是关系模式描述的对象。关系模式是指一个关系的属性名表,即二维表的表框架。关系模式的设计是关系模型设计的灵魂。所以,关系模式的设计是关系数据库设计核心的核心。关系模式的设计直接决定着关系数据库的功用。目前,在指点关系模式的设计中规范化(normalization)设计占有主导地位,它是在数据库几十年的长期发展中产生并成熟的。但近年来这一领域出现了一种新的趋势,一种称为非规范化(denormalization)的关系模式设计惹起业界的关注并已在一定的范围内得到使用。对这一新的设计思想,各方反应悬殊褒贬不一,从而在相关的理论界掀起了一场不大不小的规范化与非规范化之争。本文简单引见了规范化与非规范化设计的基本思想,综述了正反双方争论的要点,供国内业界相关人员参考。一、规范化设计关系模式规范化设计的基本思想是通过对关系模式进行分解,用一组等价的关系子模式来代替原有的关系模式,消弭数据依赖(包括函数依赖和多值依赖)中不合理的部分,使得一个关系仅描述一个实体或者实体间的一种联系。这一过程必须在保证无损连接性、保持函数依赖性的前提下进行,即确保不破坏原无数据,并可将分解后的关系通过自然联接恢复至原有关系。具体地说,规范化设计的过程就是按不同的范式,将一个二维表不断地分解成多个二维表并建立表之间的关联,最终达到一个表只描述一个实体或者实体间的一种联系的目标。目前遵照的次要范式包括1 NF、 2 NF、3 NF、BCNF、4NF和5NF等几种;在工程中3NF、BCNF使用得最广泛,推荐采用 3 NF作为标准。规范化设计的优点包括可无效地消弭数据冗余,理顺数据的从属关系,保持数据库的完整性,加强数据库的稳定性、伸缩性、顺应性。通常认为规范化设计存在的次要问题是添加了查询时的连接库表运算,导致计算机时间、空间、系统及运转效率的损失。在大多数情况下,这一问题可通过良好的索引设计等方法得到处理。二、非规范化设计非规范化设计的基本思想是,理想世界并不总是依从于某一完满的数学化的关系模式。强制性地对事物进行规范化设计,方式上显得简单化,内容上趋于复杂化,更重要的是导致数据库运转效率的减低。非规范化要求适当地降低甚至抛弃关系模式的范式,不再要求一个表只描述一个实体或者实体间的一种联系。其次要目的在于提高数据库的运转效率。非规范化处理的次要技术包括添加冗余或派生列,对表进行合并、分割或添加反复表。普通认为,在下列情况下可以考虑进行非规范化处理:(1)大量频繁的查询过程所涉及的表都需求进行连接;(2) 次要的使用程序在执行时要将表连接起来进行查询;(3)对数据的计算需求临时表或进行复杂的查询。非规范化设计的次要优点是减少了查询操作所需的连接;减少了外部键和索引的数量;可以事后进行统计计算,提高了查询时的呼应速度。非规范化存在的次要问题是添加了数据冗余;影响数据库的完整性;降低了数据更新的速度;添加了存储表所占用的物理空间。其中最重要的是数据库的完整性问题。这一问题普通可通过建立触发器、使用事务逻辑、在适当的时间间隔运转批命令或存储过程等方法得到处理。三、规范化与非规范化争论的要点支持非规范化设计的一方认为,数据库规范化的程度越高,其中表的数量越多,规范化程度与表的数量直接相关;表的数量越多,表的连接运算也越多;连接运算增多,必然降低数据库执行的速度,影响数据库的功用。只要通过非规范化设计,明显减少表的数量,从而减少对连接运算的依赖,加速数据库执行的速度,才能保证数据库功用的正常发挥。例如目前流行于决策支持系统的非规范化星型模式就远胜于使用规范化设计,是非规范化设计的最好范例。非规范化设计并不意味着混乱和无视规则,它也遵照保护信息完整性等软件工程的基本准绳。支持规范化设计的一方认为,规范化与非规范化只是一个逻辑概念,强调非规范化设计者混淆了逻辑与物理的关系。数据库的功用是由物理水平决定的,即硬件、数据库的大小和物理设计、数据存储和访问的方法、数据库管理系统的优化程度、并发访问的数量等;非规范化设计并未改变数据库的物理水平,因此不可能提高数据库的功用。规范化并不只是为了避免数据冗余,更重要的是为了确保数据库的完整性。非规范化设计的最大问题是难以保证数据库中数据的分歧性,存在着破坏数据的危险。此外,非规范化使一个表中存在多个实体,不同实体混合在一同强化了数据库的复杂性,提高了用户理解的难度,并导致描述问题上的困难,添加了正确呼应的风险。只要规范化设计才是处理这些问题的基本途径。如果不摒弃非规范化设计理念,为了获得所谓的功用的提高而漠视数据库完整性被破坏的风险,就无法激励开发商去研讨真正的完全规范化而高功用的关系数据库管理系统,其后果必然影响数据库的健康发展。从某种意义上说,数据库的规范化与非规范化设计并不是对立的、非此即彼的关系。也许其中一方会逐渐消亡,也许二者存在一条两头道路可走。认识事物本来存在一个螺旋式上升的过程。这场争论尚未结束,也无法对最终的结果进行预测。但可以肯定的是,无论结果如何,都将对未来数据库的发展方向产生深远的影响。