计算机等级三级数据库历年真题论述题详解[5]
文章作者 100test 发表时间 2007:08:13 11:49:17
来源 100Test.Com百考试题网
在"学生-选课-课程"数据库中有三个关系:S(S#,SNAME,SEX,AGE,SD),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)。它们的主码分别是S#,(S#,C#),C#,并且其他属性都允许为空值(NULL)。用下面的SQL语句创建了两个视图:
createviewCS_Sas0selectS#,SNAME,AGEfromS
whereSD=’计算机系’;
createviewS_G(S#,GAVG)as0selectS#,avg(GRADE)
fromSCgroupbyS#;
若用下面的SQL语句对上述视图进行修改,它们能被成功执行吗?为什么?
(1)0updateCS_SsetSNAME=’WANGPING’whereS#=’200301001’;
(这里假定在表S中存在学生号S#=’200301001’的行。)
(2)insertintoCS_Svalues(’200302189’,’YANGXIN’,21);
(这里假定在表S中不存在学生号S#=’200302189’的行。)
(3)0updateS_GsetGAVG=85whereS#=’200301001’;
(这里假定在表SC中存在学生号S#=’200301001’的行。)
要求:
首先回答这三个SQL语句中哪个(些)能被成功执行,哪个(些)不能被成功执行(12分),再进一步说明能被成功执行或不能被成功执行的理由(18分)。
答案:
(1).第(1)和(2)两个SQL语句能被成功执行;第(3)个SQL语句不能被成功执行。
(2).因为对视图的修改最终要转换为对基本表的修改。
Ⅰ对于第(1)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:
0updateSsetSNAME=’WANGPING’
whereSD=’计算机系’andS#=’200301001’;
Ⅱ对于第(2)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:
insertintoSvalues(’200302189’,’YANGXIN’,NULL,21,’计算机系’)
或insertintoS(S#,SNAME,AGE,SD)values(’200302189’,’YANGXIN’,21,’计算机系’)
转换后的这两个SQL语句,在本题意的假定下是能够被成功执行的。所以第(1)和(2)个SQL语句能被成功执行。
Ⅲ对于第(3)个SQL语句不能被成功执行的理由是:由于视图S_G中的一个行是由表SC中若干行经过分组求平均值得到的,因此对视图S_G的更新就无法转换成对基本表SC的更新。所以第(3)个SQL语句不能被成功执行。
(2004年)
设某商品-销售数据库中的信息有:员工员、员工名、工资、销售组名、销售组负责人、商品号、商品价、单价、销售日期、销售量、供应者号、供应者名、供应者地址。假定:一个员工仅在一个销售组;一个销售组可销售多种商品,一种商品只能由一个组销售;一种商品每天有一个销售量;一个供应者可以供应多种商品,一种商品可以多渠道供货。
要求完成下列各题:
(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分)
src="/ncre/js/wxgg.js">