下面给出两种确定的模式设计方案:
方案一:只有一个关系模式:
r(s#,c#,snameame,teacher,grade,sd)
方案二:如果根据属性之间存在的联系或相关性,建立如下三个关系:
s(s#,sname,sd),c(c#ame,teacher),sc(s#,c#,grade)
(1).试分析这两种模式设计方案各自的优缺点。(26分)
(2).通常情况下你认为哪种方案更“好”些?请说明理由。(4分)
答案:
对一个现实问题,进行关系数据库模式设计,通常其设计结果不是唯一的。每个方案有各自的优缺点。对本题可以得到如下的分析结果:
对方案一:这个关系模式存在如下问题:(每个问题4分,共16分。若只给出问题,没有说明得2.5分)
(1).数据存在大量冗余。例如:(至少给出1项)
s#,sname,sd要重复“每个学生选修的课程数”
c#ame,teacher要重复“学生选修这门课的人数”
(2).更新异常。由于数据存在大量冗余,容易引起更新异常。例如,当更新某门课程的教师时,由于数据存在大量冗余,可能造成与这门课程有关的元组中,一部分元组的teacher的值被更新,而另一部分元组的teacher的值未被更新。
(3).插入异常。显然,这个关系的主键是s#和c#。由于主键属性值不能为空值,当登记学生信息时,由于该学生尚未选课,c#未确定,该学生的其他信息也无法登入,这不是我们的意愿。
(4).删除异常。如果某些课程因故删除了,则只选修这些课程的学生信息也被删除了,这往往也不是我们的本意,我们并不希望删除这些学生的信息。
对方案二:如果根据属性之间存在的联系或相关性,建立了三个关系,则方案一中存在的异常现象被消除了。(得5分)
但对诸如“查找张三的数据库技术课程的成绩”之类的问题时,这需要连接这三个关系才能完成,这个查询代价高而且会影响效率。(得2.5分)
相比之下,第一个方案则可直接投影、选择就可以完成这类查询,不需要连接操作,显然代价低而且效率高。(得2.5分)
比较这两种设计方案:本人认为第二种设计方案虽然对某些查询问题连接操作较多,但它仍比第一种方案“好”,因为它不存在上述异常问题。(得4分)
+《计算机等级考试三级数据库历年真题解析[4]》相关文章
- 计算机等级考试三级数据库历年真题解析[4]
- › 2013-2009年9月计算机等级考试二级笔试真题-Java
- › 2003|2009年4月全国计算机等级考试二级visualBasic笔试试卷(含答...
- › 2002年9月全国计算机等级考试二级VB试卷(含答案)(1)
- › 2008年9月全国计算机等级考试二级java程序设计参考答案
- › 08年4月计算机等级考试二级JAVA试题(1)
- › 2006-2009年计算机等级考试二级Java样题(1)
- 在百度中搜索相关文章:计算机等级考试三级数据库历年真题解析[4]
- 在谷歌中搜索相关文章:计算机等级考试三级数据库历年真题解析[4]
- 在soso中搜索相关文章:计算机等级考试三级数据库历年真题解析[4]
- 在搜狗中搜索相关文章:计算机等级考试三级数据库历年真题解析[4]