2015下半年计算机四级数据库工程师精选论述真题

标签:2015下半年计算机四级数据库工程师精选论述真题发布时间:2015/12/14 21:34:00

第一题:

设某商品-销售数据库中的信息有:员工员、员工名、工资、销售组名、销售组负责人、商品号、商品价、单价、销售日期、销售量、供应者号、供应者名、供应者地址。假定:一个员工仅在一个销售组;一个销售组可销售多种商品,一种商品只能由一个组销售;一种商品每天有一个销售量;一个供应者可以供应多种商品,一种商品可以多渠道供货。

要求完成下列各题:

(1)根据以上信息,给出E-R图。(10分)

(2)按规范化要求设计出3NF的数据库模式。(10分)

(3)给出数据库模式中每个关系模式的主键和外键。(5分)

(4)在所设计的数据库模式上,检索累计销售总额超过50000元的商品号、商品名、销售总额,并按商品号排序。(5分)

答案:

(1)E-R模型(10分;每个实体1分,包括属性;每个联系2分,包括联系类型.)

(2)3NF的关系模式:(10分)

R1(员工号,员工名,工资,销售组名);(2分,没有销售组名扣1分)

R2(销售组名,销售组负责人);(1分)

R3(商品号,商品名,单价,销售组名);(2分,没有销售组名扣1分)

R4(商品号,销售日期,销售量);(2分)

R5(供应者号,供应者名,供应者地址);(1分)

R6(商品号,供应者号).(2分)

注:若R1,R3分为二个模式,也要扣1分.

(3)主键(3分)外键(2分)

R1员工号

R2销售组名

R3商品号销售组名

R4商品号,销售日期商品号

R5供应者号

R6商品号,供应者号商品号,供应者号

(4)(5分)

SelectR3.商品号,商品名,sum(销售量)*单价(1分)

FromR3,R4whereR3.商品名=R4.商品名(1分)

GroupbyR3.商品名havingsum(销售量)*单价>50000(2分)

OrderbyR3.商品名(1分)

第二题:

为学校中学生选课管理这个现实问题进行数据库模式设计。根据调查分析,确定它的属性集合为:

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分)

比较这两种设计方案:本人认为第二种设计方案虽然对某些查询问题连接操作较多,但它仍比第一种方案“好”,因为它不存在上述异常问题。(得4分)

免责声明:本文仅代表作者个人观点,与本网无关。
Ctrl+D

按Ctrl+D键将文章加入收藏夹

下次需要直接打开+收藏