全国计算机等级考试四级数据库论述题真题(2-3)5 为学校中学生选课管理这个现实问题进行数据库模式设计。根据调查分析,拟定它的属性集合为: U={S#,C#,SNAME,CNAME,TEACHER,GRADE, 5 为学校中学生选课管理这个现实问题进行数据库模式设计。根据调查分析,拟定它的属性集合为: U={S#,C#,SNAME,CNAME,TEACHER,GRADE,SD} 下面给出两种拟定的模式设计方案: 方案一:只有一个关系模式: R(S#,C#,SNAME,CNAME,TEACHER,GRADE,SD) 方案二:假如根据属性之间存在的联系或相关性,建立如下三个关系: S(S#,SNAME,SD),C(C#,CNAME,TEACHER),SC(S#,C#,GRADE) (1).试分析这两种模式设计方案各自的优缺陷。(26 分) (2).通常情况下你认为哪种方案更“好”些?请说明理由。(4 分) 答案: 对一个现实问题,进行关系数据库模式设计,通常其设计结果不是唯一的。每个方案有各自的优缺陷。对本题可以得到如下的分析结果: 对方案一:这个关系模式存在如下问题:(每个问题 4 分,共 16 分。若只给出问题,没有说明得 2.5分) (1).数据存在大量冗余。例如:(至少给出 1 项) S#,SNAME,SD 要反复“每个学生选修的课程数” C#,CNAME,TEACHER 要反复“学生选修这门课的人数” (2).更新异常。由于数据存在大量冗余,容易引起更新异常。例如,当更新某门课程的老师时,由于数据存在大量冗余,也许导致与这门课程有关的元组中,一部分元组的 TEACHER 的值被更新,而另一部分元组的 TEACHER 的值未被更新。 (3).插入异常。显然,这个关系的主键是 S#和 C#。由于主键属性值不能为空值,当登记学生信息时,由于该学生尚未选课,C#未拟定,该学生的其他信息也无法登入,这不是我们的意愿。 (4).删除异常。假如某些课程因故删除了,则只选修这些课程的学生信息也被删除了,这往往也不是我们的本意,我们并不希望删除这些学生的信息。 对方案二:假如根据属性之间存在的联系或相关性,建立了三个关系,则方案一中存在的异常现象被消除了。(得 5 分) 但对诸如“查找张三的数据库技术课程的成绩”之类的问题时,这需要连接这三个关系才能完毕,这个查询代价高并且会影响效率。(得 2.5 分) 相比之下,第一个方案则可直接投影、选择就可以完毕这类查询,不需要连接操作,显然代价低并且效率高。(得 2.5 分) 比较这两种设计方案:本人认为第二种设计方案虽然对某...