数据依赖对关系模式的影响(续) 属性组U上的一组函数依赖F: F={Sno→ Sdept, Sdept→ Mname, (Sno, Cname)→ grade} Sno Cname Grade Sdept Mname
数据依赖对关系模式的影响(续) 属性组 U上的一组函数依赖 F: F ={ Sno → Sdept, Sdept → Mname, (Sno, Cname) → Grade } Sno Cname Sdept Mnam e Grade
关系模式 Student<U,F>中存在的问题 1.数据冗余太大 ■浪费大量的存储空间 例:每一个系主任的姓名重复出现 2更新异常( Update anomalies) 数据冗余,更新数据时,维护数据完整性代价大。 例:某系更换系主任后,系统必须修改与该系学生有 关的每一个元组
关系模式Student<U, F>中存在的问题 ⒈ 数据冗余太大 浪费大量的存储空间 例:每一个系主任的姓名重复出现 ⒉ 更新异常(Update Anomalies) 数据冗余 ,更新数据时,维护数据完整性代价大。 例:某系更换系主任后,系统必须修改与该系学生有 关的每一个元组
关系模式 Student<U,F>中存在的问题 3插入异常( Insertion anomalies) 该插的数据插不进去 例,如果一个系刚成立,尚无学生,我们就无法把这 个系及其系主任的信息存入数据库。 4.删除异常( Deletion anoma|ies) 不该删除的数据不得不删 例,如果某个系的学生全部毕业了,我们在删除该系 学生信息的同时,把这个系及其系主任的信息也丢掉 了
关系模式Student<U, F>中存在的问题 ⒊ 插入异常(Insertion Anomalies) 该插的数据插不进去 例,如果一个系刚成立,尚无学生,我们就无法把这 个系及其系主任的信息存入数据库。 ⒋ 删除异常(Deletion Anomalies) 不该删除的数据不得不删 例,如果某个系的学生全部毕业了, 我们在删除该系 学生信息的同时,把这个系及其系主任的信息也丢掉 了
数据依赖对关系模式的影响(续) Student关系模式不是一个好的模式。 “好”的模式: 不会发生插入异常、删除异常、更新异常, 数据冗余应尽可能少。 原因:由存在于模式中的某些数据依赖引起的 解决方法:通过分解关系模式来消除其中不合适 的数据依赖
数据依赖对关系模式的影响(续) 结论: • Student关系模式不是一个好的模式。 • “ 好 ”的模式: 不会发生插入异常、删除异常、更新异常, 数据冗余应尽可能少。 原因:由存在于模式中的某些数据依赖引起的 解决方法:通过分解关系模式来消除其中不合适 的数据依赖
72函数依赖 规范化理论正是用来改造关系模式,通 过分解关系模式来消除其中不合适的数 据依赖,以解决插入异常、删除异常、 更新异常和数据冗余问题
7.2 函数依赖 规范化理论正是用来改造关系模式,通 过分解关系模式来消除其中不合适的数 据依赖,以解决插入异常、删除异常、 更新异常和数据冗余问题