编辑: yn灬不离不弃灬 | 2019-12-19 |
4 模式分解 6.4 模式分解 ?模式分解的定义 定义:关系模式R的一个分解 ρ={ R1,R2,…,Rn} ? n i Ui
1 ? 其中:① U= ,并且不存在 Ui ? Uj,1? i, j ?n,i ≠ j;
② Fi为与函数依赖集 { X→Y | X→Y?F+∧XY?Ui} 等价的 一个函数依赖集,称为 F在Ui 上的投影. 范式是通过数据依赖(函数依赖和多值依赖)对关系模式 进行规范,范式间关系:4NF?BCNF?3NF?2NF?1NF. 规范化的过程就是对关系模式进行分解,使其达到更高 一级的范式,来减少和避免更新异常和数据冗余. 满足BCNF的关系模式可以在函数依赖的范畴内解决更 新异常和数据冗余;
如果关系模式中存在多值依赖,则分解 应达到4NF.
2 6.4 模式分解 6.4 模式分解 模式分解应考虑的问题: ? 分解不能丢失信息 如学生关系S(Sno, Sname, Ssex, Sage, Sdept),它 的一个实例 r 如下: sno sname ssex sage Sdept
95001 李勇 男20 CS
95002 刘晨 女19 IS
95003 王敏 女18 MA 其中的每条记录都是一个学生实体的描述,如(95001, 李勇,男,20, CS),表示:学号为95001的同学名叫李勇, 男性,今年20岁,在CS系学习. 如果将该关系模式分解为ρ={S1(Sno), S2(Sname), S3(Ssex), S4(Sage), S5(Sdept)},则任一关系实例都被分解为 一些离散的值,不再表示原关系中的意义,即分解丢失了 信息.
3 6.4 模式分解 6.4 模式分解 ? 分解应该能够被还原 模式的分解是为了更好地存储,在使用中通过自然连 接还原为分解前的关系模式,如下表为一银行的存款记录: R: 客户 帐号 存款 李勇 a01
80 李勇 a02
100 将其分解为右上图的两个关系R1和R2: R1: 客户 帐号 李勇 a01 李勇 a02 R2: 客户 存款 李勇
80 李勇
100 还原后的关系模式如右图:
100 a01 李勇
80 a02 李勇 存款 帐号 客户
80 a01 李勇
100 a02 李勇 R1 R2: 多出了两条记录!这是绝对不允许 的. ? 分解应保持函数依赖 函数依赖是属性间自身具有的性 质,通常的查询与此有关,故应保持.