logo资料库

2019-2020_南京大学计算机系数据库期末考试_参考答案.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
数据库概论(AI-2019.12)复习参考答案 一、(单项选择题)红色字体为参考答案 1. 区分不同类型数据库管理系统的依据是………………………………………………( ) [A] 数据模型 [B] 数据库语言 [C] 数据库厂商 [D] 数据库用户 2. 在关系模型中,约束规则‘First Normal Form Rule’的含义是 ………………( ) [A] 属性值的原子性 [C] 元组的唯一性 [B] 关键字值的唯一性 [D] 属性值的唯一性 3. 设有两个关系模式 R(A,B,C)和 S(C,D),在下述关系代数表达式中,能够正确运算的是( ) [A] R∪S [B] R∩S [C] R join S [D] R÷S 4. 在下列关系代数的二元运算中,属于基本运算的是………………………………………( ) [A] 自然联接 [B] 笛卡尔乘积 [C] θ-联接 [D] 外联接 5. 设有关系模式 R(A, F),A 为关系 R 的属性集合,F 为关系 R 上的函数依赖集。如果 R1(A1,F1) 和 R2(A2,F2)构成关系 R 的一个分解,该分解具有无损联接性的含义是……………( [A] R = R1 JOIN R2 [D] F+ = (F1 ∪ F2)+ [B] A = A1 ∪ A2 [C] F = F1 ∪ F2 ) 6. 在使用游标(cursor)实现数据交换的过程中,获取下一条结果元组的命令是 ………( ) [A] DECLARE [B] OPEN [C] CLOSE [D] FETCH 7. 在视图(view)定义命令中,在视图对应的子查询中不能使用的是…………………( ) [A] 统计函数 [B] GROUP BY 子句 [C] HAVING 子句 [D] ORDER BY 子句 8. 在基表创建命令中,如果要定义约束“当存在外键引用关系时,不允许删除主键对应表中的元 组”,则在外键定义子句中需要使用如下的约束定义成分……………………………( ) [A] ON DELETE ALL [C] ON DELETE RESTRICT [B] ON DELETE CASCADE [D] ON DELETE SET NULL 9. 在扩充实体联系(EER)模型中,如果一个实体 E 必须依赖于另一个实体才能存在,那么实体 E 被称为…………………………………………………………………………………( [A] 子实体 [D] 组合实体 [B] 超实体 [C] 弱实体 ) 10. 用于撤销一个事务的事务控制命令是……………………………………………………( ) [A] CHECKPOINT [B] COMMIT [C] ROLLBACK [D] SAVEPOINT 二、(多项选择题)红色字体为参考答案,每小题有且仅有 2 个正确选项。 1. 在下述情况中,查询结果集中肯定不会出现重复元组的是…………………( ) [A] 在 SELECT 子句中使用 DISTINCT 保留字 [C] 多表连接查询 [D] 使用 GROUP BY 子句 [B] 单表查询 [E] 使用 ORDER BY 子句 5-1
2. 在一条不含子查询的 SQL 查询命令中,可以使用 SQL 统计函数的子句是--( ) [A] SELECT [B] FROM [C] WHERE [D] GROUP BY (E) HAVING 3. 在 SQL 语言中,与谓词‘IN’相等价的比较运算是 -------------------------------( ) [A] =SOME [B] =ALL [C] =ANY [D] <>SOME (E) <>ALL 4. 对关系数据库进行规范化设计的目的是 --------------------------------------------( ) [A] 减少关系个数 [D] 减少每个关系中的元组个数 (E) 提高数据库系统的安全性 5. 根据关系数据库规范化设计理论,在下列描述中,正确的有------------------( [B] 降低数据冗余 [C] 消除操作异常 ) [A] 如果关系 R 能够满足 BCNF,那么该关系一定满足 3NF; [B] 如果关系 R 能够满足 3NF,那么该关系一定满足 BCNF; [C] 如果关系 R 中的非主属性集为空,那么该关系一定满足 BCNF; [D] 如果关系 R 中的非主属性集为空,那么该关系一定满足 3NF; [E] 如果关系 R 中的函数依赖集为空,那么该关系最高只能满足到 1NF; 三、(关系代数) 设有一个公司产品销售数据库,其关系模式如下: 顾 客 C ( 编号 cid, 姓名 cname, 城市 city, 折扣 discnt ) 供应商A ( 编号 aid, 名称 aname, 城市 city ) 商 品P ( 编号 pid, 名称 pname, 城市 city , 单价 price) 订 单O ( 编号 ordno, 顾客编号 cid, 供应商编号 aid, 商品编号 pid, 订购数量 qty, 销售金额 dols ) 其中:可以根据订单编号 ordno 的大小来区分订单的前后,编号小的订单在前。 请用关系代数表示下述的查询操作请求。 1) 查询满足下述条件的商品的编号和名称:被‘南京’市的顾客购买过 ((C where city ' ' 南京 )[cid] join O join pname] P)[pid, 2) 查询满足下述条件的供应商的名字:仅仅向供应商所在城市中的顾客销售过商品 (((O[aid] (((C   A) C.city where  A.city)[ai d, cid] join ) O)[aid] join A)[aname] 3) 查询满足下述条件的供应商的编号和名字:向‘南京’市的所有顾客销售过所有单价超过 1 元的商品 A)[aid, join (O aname, cid, pid]  ((C where city  ' 南京 )'  (P where price  1))[C.cid, P.pid] 4) 查询每一个客户的最后一份订单,结果返回客户 cid 及其最后一份订单的 ordno 令 R := O O[cid, ordno]  ((R  O) where R.cid  O.cid R.ordno   O.ordno)[R .cid, R.ordno] 5)查询满足下述条件的供应商的编号和名字:向自己所在城市中的所有顾客都销售过商品 (A join (O[aid]  ((A join C)[aid, cid]  O[aid, 5-2 cid])[aid] ) )[aid, aname]
四、(SQL) 设有一个公司产品销售数据库,其关系模式如下: 顾 客 C ( 编号 cid, 姓名 cname, 城市 city, 折扣 discnt ) 供应商 A ( 编号 aid, 名称 aname, 城市 city ) 商 品 P ( 编号 pid, 名称 pname, 库存数量 quantity, 单价 price ) 订 单 O ( 编号 ordno, 订单日期 orddate, 顾客编号 cid, 供应商编号 aid, 商品编号 pid, 销售数量 qty, 销售金额 dols ) (注:可以用 SQL 函数 YEAR(orddate)返回订单的年份) 1、请用 SQL 语言创建一个用于统计顾客的年度累计购买金额的视图,视图名为 CustSum,视图 中的属性包括:顾客的编号 cid,顾客的姓名 cname, 购买年份,年度累计购买金额 total_dols。 ①先创建第一个视图 custyear,将订单中的订单日期转换为年份: create view custyear(ordno, cid, cyear, dols) as select ordno, cid, year(orddate), dols from O ; ②再利用视图 custyear 来创建顾客年度累计购买金额视图: create view custsum(cid, cname, cyear, total_dols) as select C.cid, C.cname, y.cyear, sum(y.dols) from C, custyear y where C.cid=y.cid group by C.cid, C.cname, y.cyear ; 2、请用 SQL 语言表示下述的查询操作。 1) 查询满足下述条件的供应商的名字:仅仅向供应商自己所在城市中的顾客销售过商品 select aname from A where aid in (select x.aid from O x) and not exists(select * from O y, C where y.aid=A.aid and y.cid=C.cid and A.city<>C.city); 2) 统计查询每一个供应商的累计销售金额,结果返回供应商编号及其累计销售金额,并按照累计 销售金额从高到低降序输出查询结果。 select aid, sum(dols) from O group by aid order by sum(dols) DESC; 3) 查询在 2019 年度累计购买金额超过 100000 元的顾客的编号和名称。 select C.cid, C.cname from O, C where O.cid=C.cid and year(O.orddate)=2019 group by C.cid, C.cname having sum(O.dols)>100000; 4) 查询满足下述条件的供应商的编号和名字:向‘南京’市的所有顾客销售过所有单价超过 1 元 的商品 select aid, aname from A where not exists( select * from C, P where C.city=’南京’ and P.price>1 and not exists( select * from O where O.aid=A.aid and O.cid=C.cid and O.pid=P.pid)); 5) 查询每一个顾客的第一份订单和最后一份订单,结果返回顾客的编号、第一份订单的订单编号 和订单日期、最后一份订单的订单编号和订单日期(注:用订单编号的大小区分订单的先后, 不需要返回没有订单的客户,如果一个客户只有唯一一份订单,那么该订单既是其第一份订单 也是最后一份订单) select x.cid, x.ordno as f_ordno, x.orddate as f_date, y.ordno as l_ordno, y.orddate as l_date from O x, O y where x.cid=y.cid and x.ordno<=y.ordno and not exists(select * from O where O.cid=x.cid and O.ordnoy.ordno) ; and 5-3
五、(关系规范化设计) 1. 给定关系模式 R(A,B,C,D,E,F,G)及其上的函数依赖集 S = { ABD→AC, C→BDE, AD→BF, B→E },请完成以下的规范化设计。 1) 请直接写出与 F 等价的最小函数依赖集。 { AD→CF, C→BD, B→E } 2) 请直接给出关系模式 R 的所有候选关键字。 两个候选关键字: ACG 和 ADG 3) 请将关系模式 R 直接分解到满足 3NF,并满足无损联接性和依赖保持性。 R1(A,C,D,F) 注:也可以选择关键字 ADG 来构成分解后的关系 R4,即 R4(A, D, G) R4(A, C, G) R2(B,C,D) R3(B, E) 4) 上述的分解是否满足 BCNF?如果不满足,请将其进一步分解到满足 BCNF。 R1 不满足 BCNF,可将 R1 进一步分解为 R11(C, D) 和 R12(A, C, F) 由于 R11 的关系模式是关系 R2 的关系模式的真子集,因此可以将 R11 合并到 R2 中去, R12 作为分解后新的 R1 关系。最终到 BCNF 的分解结果如下: 关键字 函数依赖集 子关系模式 R1 ( A, C, F ) R2 ( B, C, D ) R3 ( B, E ) R4 ( A, C, G ) AC→F C→BD B→E ∕ AC C B ACG 2. 设有一个民用航空飞行实时调度关系 P,其中的属性有:飞机编号 fj_no,航班编号 hb_no,经 停机场的机场编号 jc_no、实际到达时间 arr_time 及实际起飞时间 off_time。 其中:①允许多个航班共享同一架飞机;②一架飞机在飞行过程中可以停靠多个机场,并 记录在机场的实际到达时间和实际起飞时间;③在一个机场,可以同时起飞或降落多架飞机。 1) 请写出该关系上的最小函数依赖集。 hb_no→fj_no (fj_no, arr_time)→(jc_no, off_time) (fj_no, off_time)→arr_time (hb_no, jc_no)→(arr_time, off_time) 注:这里假设每个航班只安排一架飞机,每个航班在每个机场只停靠一次。 2) 关系模式 P 最高能够满足到第几范式?并简单说明理由。 最高满足 1NF。 理由:关系 P 有三个候选关键字:(hb_no, jc_no), (hb_no, arr_time), (hb_no, off_time) 存在非主属性(fj_no)对关键字的部分函数依赖。 5-4
六、(数据库设计) 假设需要建立一个用于学校班车、行驶线路及其停靠站点管理的数据库系统,需要存储的信息 有:班车的车牌号(具有唯一性)和车型;班车驾驶员的工作证编号(具有唯一性),姓名和联系电 话;停靠站点的编号(具有唯一性),名称和地点;行驶线路的编号(具有唯一性)和名称。 其中:1)每一条行驶线路有若干个停靠站点,系统需要记录一条线路上各站点的停靠次序;2) 每条线路每次可以安排一辆或多辆班车;3)每一辆班车每次出行只安排一个驾驶员;4)驾驶员可 以驾驶的班车不固定;5)系统需要记录每一辆班车的每一次运行所安排的行驶路线、车辆、驾驶员、 从车队出发时间和结束回到车队的时间; 1.请画出该数据库系统的 ER 模型图,并标注出实体与联系之间的参与方式。 2.请将上述 ER 模型转换成相应的关系模型。 驾驶员(工作证编号,姓名,电话) 线路(线路编号,名称) 停靠(线路编号,站点编号,停靠顺序) 运行(工作证编号,车牌号,线路编号,出发时间,返回时间) 班车(车牌号,车型) 站点(站点编号,名称,地点) 3.请写出每一个关系上的最小函数依赖集,并判断每一个关系是否满足 BCNF(简单说明理由)。 所有关系都能满足 BCNF! 前五个关系比较容易判断(理由略),只有‘运行’关系中的函数依赖复杂一些,分析如下: 运行(工作证编号,车牌号,线路编号,出发时间,返回时间) 其函数依赖集为: 该关系的关键字有:(车牌号, 出发时间) (车牌号, 结束时间) 该关系中的所有函数都能满足 BCNF 的定义,所以该关系满足 BCNF。 (工作证编号, 出发时间) (工作证编号, 结束时间) 5-5
分享到:
收藏