在下面的连接(http://www.quanwen.com.cn/doc/863412/)中可查得刘志镜之如下论述:
1.1.范式级别越高,存贮同样数据就需要分解成更多张表.范式级别越高,存贮同样数据就需要分解成更多张表.
2.2.随着范式级别的提高,数据的存储结构与基于问题域的结构随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降.因此,在需求变化时数据的稳定性越间的匹配程度也随之下降.因此,在需求变化时数据的稳定性越差.
3.3.范式级别提高则需要访问的表增多,性能(速度)将下降
上面的论述刚好同2009年下半年信息系统项目管理师上午第9题内容相应:
● 以下关于数据库设计中范式的叙述,不正确的是(9)。
(9)A.范式级别越高,数据冗余程度越小
B.随着范式级别的提高,在需求变化时数据的稳定性越强
C.范式级别越高,存储同样的数据就需要分解成更多张表
D.范式级别提高,数据库性能(速度)将下降
因此依据这些论述及第9题内容,相信软考办会给出第9题答案为B的情况,现论证第9题中D选项(范式级别提高,数据库性能(速度)将下降)与3.3(范式级别提高则需要访问的表增多,性能(速度)将下降.范式级别提高则需要访问的表增多,性能(速度)将下降.)的含义不等价及刘志镜关于B选项(2.2随着范式级别的提高,在需求变化时数据的稳定性越强)的论述错误,请软考办修正正确答案停止错误传播。
一、D选项与3.3论述的不同
"范式级别提高则需要访问的表增多,性能(速度)将下降."指的是满足一定条件下的查询性能而非数据库性能。范式级别提高只有在需要同时访问多张表的时候才要访问多张表,不必然表示所有操作都需要访问多张表。恰恰相反,由于减少了数据冗余(同一份数据的多处存储),对于表的维护操作是减少了表的访问而不是增加了表的访问,因为数据冗余的情况下,维护一个数据需要同时维护其冗余数据,而在规范化后减少了冗余数据的维护从而提高了维护性能。即在数据库的四种主要操作CRUD(增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写)中,范式级别提高后R的性能在多表访问时会下降,但CUD的操作性能提高,数据库性能一般在OLTP(以事务处理为主)中会提高,在OLAP(以查询分析为主)中会下降。因此D是不正确的选项,即D为答案。
二、B选项的正确及刘2.2的错误
B为什么正确:
随着范式级别的提高,数据冗余减少,则需求变化时需要维护的数据量和范围减少,因此数据稳定性越强。相反,随着范式级别的降低,数据冗余增加,即同一份数据会存储多份,则需要变化时,需要维护数据的量和范围就会增加,数据的稳定性就越差。
2.2为什么错误
第一.基于问题域的结构不是一个唯一确定的结构
基于问题域的结构和基于解域的结构一样,都是没有固定的唯一的确定的结构,都是取决于人的不同认知而作出的无数可能的结构的集合。同一个问题,我们基于结构化的认知角度可以认为其是实体关系,基于对象化的认知角度可以认为其是对象关系;而每种不同的认知之下更有千差万别的无数不同结果。
第二.数据的稳定性取决于问题空间到解空间的映射关系而非两者间结构的匹配。
当问题空间的多个点映射为解空间的一个点时有较好的稳定性,这就如同万能钥匙可以开多种锁;当问题空间的一个点映射为解空间的一个点时的稳定性次之,如同一把钥匙开一把锁。当问题空间的一个点映射为解空间的多个点时的稳定性最差,因为问题空间变化一个点需要在解空间变化多个点,这正是低范式级别中多数据冗余的情况。
三、关于第9题的实证举例
满足第二范式(2NF)
单位表(单位ID,单位名,单位属性1,单位属性2,机构名,机构属性1,机构属性2)
员工表(员工ID,员工名,员工属性1,员工属性2,单位ID,机构名,机构属性1,机构属性2)
满足第三范式(3NF):
机构表(机构ID,机构名,机构属性1,机构属性2)
单位表(单位ID,单位名,单位属性1,单位属性2,机构ID)
员工表(员工ID,员工名,员工属性1,员工属性2,单位ID)
A.范式级别越高,数据冗余程度越小
机构数据由2份变为一份,数据冗余减少
B.随着范式级别的提高,在需求变化时数据的稳定性越强
比如增加机构的属性时只变更一个表,非规范化要变更2个表
C.范式级别越高,存储同样的数据就需要分解成更多张表
2张变3张
D.范式级别提高,数据库性能(速度)将下降
同时查询员工和机构信息时,需要关联员工和机构表,此种查询性能一般会下降。
但是,修改机构属性时减少了修改表的数量,性能上升。因此数据库的性能影响不能确知。