首页 百科知识 数据冗余和更新异常

数据冗余和更新异常

时间:2022-10-17 百科知识 版权反馈
【摘要】:数据冗余是指同一数据在一个或者多个数据文件中重复存储。系统中如果有数据冗余出现,不仅会大量占用和消耗系统资源,造成不必要的开销,更严重的是会带来各种数据操作的异常现象,对数据库性能的正常发挥造成极大的影响。在关系系统中数据冗余产生的原因就在于数据依赖的处理,也就是在于关系模式本身的结构设计。在数据管理中,数据冗余一直是影响系统的重大问题,所以规范化理论是关系数据库设计中最重要的部分。

2.4.1 数据冗余和更新异常

数据冗余是指同一数据在一个或者多个数据文件中重复存储。系统中如果有数据冗余出现,不仅会大量占用和消耗系统资源,造成不必要的开销,更严重的是会带来各种数据操作的异常现象,对数据库性能的正常发挥造成极大的影响。

例2-10 设有一个关系模式R(U),其中U为学号、课程号、任课教师、任课教师所在系和成绩组成的属性集合,给定关系R的如下语义:

① 一个学生只有一个学号,一门课程只有一个课程编号;

② 每一位学生选修的每一门课程都有一个成绩;

③ 每一门课程只有一位教师任课,但一位教师可以担任多门课程;

④ 教师姓名中不存在重名问题,每一位教师只属于一个系。

从上述可知,R的候选键有以下三组:{学号,课程号}、{课程号,任课教师}、{任课教师,任课教师所在系}。选定{学号,课程号}作为主键。通过分析关系R(U),我们可以发现下面两类问题:

(1)数据大量冗余

每一门课程的任课教师姓名必须对选修该门课程的学生重复一次。

每一门课程的任课教师所在系名必须对选修该门课程的学生重复一次。

(2)出现更新异常

修改异常:修改一门课程的任课教师,或者一门课程由另一位教师开设,就需要修改多个元组。如果部分修改,部分不修改,就会出现数据不一致性。

插入异常:由于主码中元素的属性值不可能为空,如果某系的一位教师不开课,则这位教师的姓名和所在系名就不能插入;如果一位教师所开的课程无人选修或者一门课程列入计划而目前不开,也无法插入。

删除异常:如果所有学生都退选一门课,则有关这门课的其他数据(任课教师和任课教师所在系)也将删除;同样,如果一位教师因故暂时不开课,则这位教师的其他信息(任课教师所在系,课程号)也将被删除。

数据冗余的产生有着较为复杂的原因,从数据结构的角度考察,如果对多个文件之间和同一个文件之间的联系考虑不周或者处理不当,就有可能导致数据冗余发生。在关系系统中数据冗余产生的原因就在于数据依赖的处理,也就是在于关系模式本身的结构设计

在关系数据的设计中,不是随便一种关系模式设计方案都合适,更不是任何一种关系模式都可以投入应用的。解决关系数据库冗余问题的基本方案就是分析研究属性间的联系,也就是按照属性间联系所处的规范等级来构造关系。由此产生一整套有关理论称之为关系数据库的规范化理论。在数据管理中,数据冗余一直是影响系统的重大问题,所以规范化理论是关系数据库设计中最重要的部分。下面将分别讨论函数依赖和规范化以及多值依赖等问题。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈