当前位置:首页 > 20161223 - 数据库系统 - 2016(样卷)参考答案
考试科目名称 数据库系统(2016样卷参考答案)
一、填空题 (略)
二、单项选择题
(略)
三、多项选择题(每小题都有两个选项是符合题目要求的,请将其全部选出并填入题后的圆括号中。) (略)
四、(关系代数)
设有一个公司产品销售数据库,其关系模式如下:
顾 客C ( 编号cid, 姓名cname, 城市city, 折扣discnt ) 供应商A ( 编号aid, 名称aname, 城市city )
商 品P ( 编号pid, 名称pname, 库存数量quantity, 单价price )撒啊啊啊啊啊啊请·
订 单O ( 编号ordno, 订单日期orddate, 顾客编号cid, 供应商编号aid,
商品编号pid, 订购数量qty, 销售金额dols )
其中:订单日期是一个‘日期’类型的属性,其值可以进行大小比较。日期值越大,离现在的时间越近。请用关系代数和关系演算表示下述的操作请求。
1) 查询‘南京市’的顾客所购买过的商品的编号和名称。
((C join O join P) where city?'南京') [pid, pname]
?cid,cname,city,dis,quan,pri,no,ordd,aid,qty,dols( C(cid,cname,南京,dis)?P(pid,pname,quan,pri)? O(no,ordd,cid,aid,pid,qty,dols))
2) 查询没有购买过商品的顾客的编号和姓名。
C[cid,cname] - (C join O)[cid, cname] 或者 ((C[c -i Od[]ci dj]o)iCn) [c icdn,am e]
?city,dis(C(cid,cn,city,dis))??(?no,d,aid,pid,qty,dols(O(no,d,cid,aid,pid,qty,dols)))
3) 查询仅仅通过’a001’号供应商购买过商品的顾客的编号。 O[cid] - (O where aid??'a001')[cid]
?no1,d1,p1,qty1,dols1(O(no1,d1,cid,'a001',p1,qty1,dols1))??(?no2,d2,aid,p2,qty2,dols2(O(no2,d2,cid,aid,p2,qty2,dols2)?aid??'a001'))
错误的表示方法如下:
?no(?d,aid,pid,qty,dols(O(no,d,cid,aid,pid,qty,dols))?aid?'a001'))
4) 查询每一个客户的最后一份订单的订单编号。
令 O1 := O, O2 := O
O[cid,ordno]-((O1?O2) where O1.cid?O2.cid ?O1.orddate?O2.orddate)[O1.cid,O1.ordno]?ordd,aid,pid,qty,dol(O(ordno,ordd,cid,aid,pid,qty,dol)?
?(?no1,ordd1,aid1,pid1,qty1,dol1(O(no1,ordd1,cid,aid1,pid1,qty1,dol1)?ordd?ordd1五、(SQL语言)
设有一个公司产品销售数据库,其关系模式如下:
顾 客C ( 编号cid, 姓名cname, 城市city, 折扣discnt ) 供应商A ( 编号aid, 名称aname)
商 品P ( 编号pid, 名称pname, 库存数量quantity, 单价price )
订 单O ( 编号ordno, 订单日期orddate, 顾客编号cid, 供应商编号aid,
商品编号pid, 销售数量qty, 销售金额dols ) (注:可以用SQL函数YEAR(orddate)返回订单的年份,用SQL函数MONTH(orddate)
返回订单的月份) 1、请用SQL语言创建一个用于统计每个顾客在2015年度的累计购买金额的视图,视图名为CustSum,视图中的属性包括:顾客的编号aid,顾客的姓名cname, 购买总金额total_dols。
Create view CustSum(aid, cname, total_dols) As select cid, cname, sum(dols) From O, C
Where O.cid=C.cid and year(orddate)=2015 Group by cid, cname;
2、请用SQL语言表示下述的查询操作。
1) 查询销售金额超过10000元的订单,结果返回该订单客户的编号和名称。 (略)
2) 查询只向‘南京’市的顾客销售过商品的供应商的编号。
Select aid From O, C
Where O.cid=C.cid and C.city=’南京’ and O.aid not in (
Select O2.aid From O O2, C C2
Where O2.cid=C2.cid and C2.city<>’南京’ );
3) 统计查询每一个供应商的累计销售金额,结果返回供应商编号及其累计销售金额,并按
照累计销售金额从高到低降序输出查询结果。
Select aid, sum(dols) from O group by aid order by sum(dols) DESC;
4) 查询在2014年1月份到6月份累计购买金额超过100000元的顾客的编号和名称。
Select cid, cname From C, O
Where C.cid=O.cid and year(orddate)=2014 and
month(orddate) between 1 and 6
Group by cid, cname
Having sum(dols)>100000;
5) 查询每一个顾客的最后一份订单,结果返回顾客的编号、订单编号、订单日期。
Select X.cid, X.ordno, X.orddate From O X
Where X.orddate >= ALL (select Y.orddate from O Y where Y.cid=X.cid )
6) 查询向所有顾客都销售过商品的供应商的编号。
Select aid from A
Where not exists ( select *
From C
Where not exists ( select *
From O
Where O.aid=A.aid and O.cid=C.cid));
六、(规范化设计)
设关系模式 R(A,B,C,D,E,F) 上的函数依赖集是:F = { AB?C,B?DE,BD?F,E?F,AC?B }
1. 请计算F的最小覆盖(与F相等价的最小函数依赖集),写出每一步的计算结果,不需要
给出详细的计算过程。
AB?C,B?DE,E?F,AC?B (详细分步结果略)
2. 请找出关系R的所有关键字。
两个关键字: AB 和 AC
3. 请将关系R分解到3NF,且满足无损联接性和依赖保持性。
R1(A, B, C) R2(B, D, E) R3(E, F)
4. 上述的设计结果是否满足BCNF?如果不满足,请给出到BCNF的分解结果。
都能满足BCNF。
共分享92篇相关文档