首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库数据库数据库基础

设计不好的关系模式存在的问题

减小字体 增大字体 作者:biye5u.com  来源:本站原创  发布时间:2017-05-26 09:48:46

在讨论如何设计一个好的关系模式之前,我们先来了解一下设计不好的关系模式会出现什么问题。

假定有如下关系SCD:

SCD(Sno,Sname,Ssex,Sdept,Sdean,Cno,Cname,Grade)

其中,SCD表示学生关系,对应的各属性依次为学号、姓名、性别、院系、系主任、课程号、课程名称和成绩。关系的主码为(Sno,Cno)。

这个关系模式存在如下问题。

1.数据冗余

当一个学生选修多门课程就会出现数据冗余。假如某个学生(“2010050101”,“丁天波”,“男”,“管理学院”,“张胜”)共选了20门课程,则该学生的学号、姓名、性别、院系、系主任信息要重复存储20次,如果全校有一万名学生都要选修多门课程,则这样的冗余就会造成大量的空间上的浪费。同时,同一门课程如果有多名学生选修,课程名称要重复存储多次,这样进一步增加了存储空间的开销。

2.更新异常

由于存在大量的数据冗余,当更新数据库中的数据时,系统要付出很大的代价来维护数据库的完整性。否则会面临数据不一致性的危险。例如,某院系要换系主任,或某门课程要修改名字,必须要修改每一个相关的元组,如果一部分修改了,而另外一部分未修改,则造成了数据的不一致性。

3.插入异常

如果刚开出一门课程,但是这样的课程还没有学生选修,则无法把课程信息插入到该数据库中;如果一个学生刚刚入学,还没有选修任何课程,则这样的学生无法插入到该数据库中;如果一个院系刚刚成立,还没有招收任何学生,则这个院系信息也无法添加到数据库中。

4.删除异常

如果选修某门课程的学生都毕业了,在删除学生信息时,则相关的课程信息业会跟着被删除。

鉴于以上种种问题,可以得出结论:设计的该关系模式SCD并不是一个好的关系模式。一个好的关系模式应该不会发生插入异常、删除异常和更新异常,数据冗余也会降到最小。

一个关系模式之所以会产生上述问题,是由于关系模式中存在着不良的函数依赖关系引起的。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3