上海交通大学试卷 ( 2011 至 2012 学年第 _2_ 学期 ) 班级号 学号 姓名 课程名称数据库原理成绩 一 选择题 ( 每题 1 分, 共 20 分, 有且只有一个正确答案 ) 1. 关系数据库用 ( ) 实现数据之间的联系 A. 关系 B. 指针 C. 表 D. 公共属性 ( 或外码 ) 2. 根据关系模型的完整性规则, 一个关系中的主码 ( ) A. 不能有两个 B. 不可作为其他关系的外部码 B. 可以取空值 D. 不可以是属性组合 3. SQL 中, 谓词 unique 可以测试一个集合是否 ( ) A. 只存在一个元组 B. 所有元组都不相同 C. 所有列的值都不相同 D. 存在一个空元组 4. 下列聚合函数中不忽略 NULL 值的是 :( ) A. SUM B. AVG C. COUNT(*) D. MAX 5. 属于 BCNF 的关系模式 A. 已消除了插入 删除异常 B. 已消除了插入 删除异常和数据冗余 C. 仍然存在插入 删除异常 D. 在函数依赖范畴内, 已消除了插入和删除的异 常 6. 在关系演算中, 元组变量的变化范围是 ( ) A. 某一命名的关系 B. 数据库中的所有关系 C. 某一个域 D. 数据库中的所有域 7. 在视图上不能完成的操作是 ( ) A. 更新视图 B. 查询 C. 在视图上定义新的表 D. 在视图上定义新的视图 1
我承诺, 我将严 格遵守考试纪律 题号 得分 批阅人 ( 流水阅卷 教师签名处 ) 8. 对由 SELECT--FROM WHERE GROUP--ORDER 组成的 SQL 语句, 其在被 DBMS 处理 时, 各子句的执行次序为 ( ) A. SELECT FROM GROUP WHERE ORDER B. FROM SELECT--WHERE GROUP ORDER C. FROM WHERE GROUP SELECT ORDER D. SELECT FROM WHERE GROUP ORDER 9. 在关系代数运算中, 最费时间和空间的是 ( ) A. 选择和投影操作 B. 笛卡尔积和连接操作 C. 除法操作 D. 差操作 10. 学生选课数据库系统包括三个表 : 学生 S(S#,SN,SEX,AGE,DEPT), 课程 C(C#,CN), 学生选课 SC(S#,C#,GRADE), 若查询至少选修了 王丽 选修的 全部课程的学生的学号, 如下 SQL 语句中空白处的谓词应该是 ( ) select distinct S# from SC SCX where (select * from SC SCY ); where SCY.SN= 王丽 and (select * from SC SCZ where SCZ.S#=SCX.S# and SCZ.C#=SCY.C#) A. EXISTS NOT EXISTS B. NOT EXIST NOT EXIST C. NOT EXIST EXIST D. NOT EXISTS NOT EXISTS 11. 有关系 S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#, GRADE) 其中 S# 是学生号,SNAME 是学生姓名,SAGE 是学生年龄, C# 是课 2
程号,CNAME 是课程名称 要查询选修 ACCESS 课的年龄不小于 20 的全体学生姓 名的 SQL 语句是 SELECT SNAME FROM S,C,SC WHERE 子句 这里的 WHERE 子句 的内容是 ( ) A. S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME= ACCESS ; B. S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in ACCESS ; C. SAGE in>=20 and CNAME in ACCESS ; D. SAGE>=20 and CNAME= ACCESS ; 12. 假设有学生关系 ( 学号, 姓名, 课程号, 系号, 系名, 成绩 ), 为了消除数据冗 余, 需要将学生关系表分解为 ( ) A.1 个表 B. 2 个表 C.3 个表 D. 4 个表 13. 对于关系表 R(A, B, C),S(C, D, E) 和 T(E, F) R 的主键为 C;T 的主键为 E;S 的主键为 C 和 E; 关系表 R 有 1000 条记录 ; 纪录 S 有 1500 条记录 ; 纪录 T 有 750 条记录 ; 那么, 进行连接操作 R S T 时, 最佳的连接顺序应该是 ( ) A. R ( S T) B. ( R S) T C. ( R T) S D. 全部都一样 14. 下列说法正确的是 ( ) A. 不遵守两段锁协议的并发调度一定是不可串行化的 B. 两段锁协议可以保证数据的可重复读 C. X 锁可由 UNLOCK 操作解除 D. 遵守两段锁协议的并发事务一定不会发生死锁 15. 假设 A 是关系表 R 的所有者,B,C,D 是其他 3 个数据库普通用户, 权限 P 是对于 关系表 R 的某特定操作权限, 经过下列步骤后 步骤 用户 动作 1 A GRANT P TO B WITH GRANT OPTION 2 A GRANT P TO D WITH GRANT OPTION 3 B GRANT P TO C WITH GRANT OPTION 4 C GRANT P TO B WITH GRANT OPTION 5 D GRANT P TO C 6 A REVOKE P FROM B CASCADE 3
7 A REVOKE P FROM D RESTRICT 除了 A 以外, 还有哪些用户对 R 具有权限 P? A. 全部用户 B. C,D C. 只有 C D. 只有 D 16. 关系表 stock 中包含以下字段 : 股票代码 股票名称 单价 交易所, 对于 SQL 语句 : create view view_stock as select 股票名称 as 名称, 单价 from stock; 执行该语句后产生的视图含有的字段名是 ( ) A. 股票 名称 单价 B. 名称 单价 C. 名称 单价 交易所 D. 股票名称 单价 交易所 17. 日志文件主要用来记录 :( ) A 程序执行的结果 C 数据操作 B 程序的运行过程 D 对数据的所有更新操作 18. 在 ER 模型中, 如果有 6 个不同实体, 有 9 个不同的二元联系, 其中 3 个 1:N 联系,3 个 1:1 联系,3 个 M:N 联系, 根据 ER 模型转换成关系模型的规则, 转换成关系的数目是 :( ) A. 6 B. 9 C.12 D. 15 19. 下列说法不正确的是 :( ) A 事务之间不可以嵌套 B 脏 数据的读出是并发控制遭到破坏的表现 C ROLLBACK 表示事务之间可以嵌套 D 排他型锁也称为 X 锁或写锁 20. 设有事务 T1 和 T2, 其并发操作如下图所示, 下面说法正确的是 :( ) A 该操作不存在问题 B 该操作丢失数据 4
C 该操作不能重复读 1 2 3 4 D 该操作读 脏 数据 T1 READ C=10 WRITE C=C-5 T2 READ C=10 WRITE C=C-8 二 填空题 ( 每空 1 分, 共 20 分 ) 1. 数据约束条件是完整性规则的集合, 在关系模型中, 任何关系必须满足 与 两个条件 2. 事务具有四个特性 : 它们是 和, 简称为 ACID 特性 3. 如果正在运行 MySQL, 可以使用 命令执行 SQL 脚本文件 ;MySQL 中查看执行效率的命令是 4. 声明游标的语句是 declare ; 创建存储过程的语句是 create 5. 嵌入式 SQL 语句中使用的主语言程序变量称为主变量, 一个主变量可以附带一个 变量, 当该变量为负值时, 不管主变量为何值, 均认为主变量值为 6. 在数据库恢复时, 对已经 COMMIT 但更新未写入磁盘的事务执行 处理 7. 在事务等待图中, 如果在图中, 那么系统就会出现死锁现象 8. 数据库角色是被命名的一组与 相关的权限, 角色是 的集合 9. 触发器按照所触发动作的间隔尺寸可以分为 触发器和 触发器 5
10. 对一个效率低下的查询计划, 常用的处理方法主要包括和等 三 判断题 ( 每题 1 分, 共 10 分 ) 1. 一个数据库可以建立多个聚簇, 一个基本表上只能建立一个聚簇索引 ( ) 2. 多个事务的并发执行是正确的, 当且仅当其结果与按某一次序串行地执行它们时的 结果相同 ( ) 3. 数据库物理设计与具体 DBMS 的类型无关 ( ) 4. SQL 中, 与谓词 <=some 等价的是 <=min ( ) 5. 主码 (primary key) 是唯一码 (unique key) 的特例, 而唯一码不一定是主键码 ( ) 6. 存在大量的 update 操作的情况下屏蔽索引能够大大提高性能 ( ) 7. SQL 查询中采用 WHERE 语句和相应的 HAVING 在本质上没有区别 ( ) 8. 可串行化的调度是正确的调度, 冲突可串行化调度是可串行化调度的充分必要条件 ( ) 9. 遵守两段锁协议的事务不可能发生死锁 ( ) 10. 在登录日志文件时, 应该先写数据库的更新, 后登录日志文件 ( ) 四 简答题 ( 每题 5 分, 共 10 分 ) 1. 在基本类型锁的基础上为什么要引入意向锁, 列出包括意向锁在内的锁的相容矩阵. 6
2. 请从用户权限管理的角度试述如何加强数据库的安全性 7
五 问答题 ( 共 40 分 ) 1. 对于公司员工关系数据库, 给出 SQL 表达式来表示下列查询要求 : ( 共 15 分, 每个 小题 3 分 ) employee(person_name, street, city) works(person_name, company_name, salary) company(company_name,city) manages(person_name,manager_name) 1) 找出所有为 First Bank Corporation 工作且薪金超过 1 万美元的雇员名字 居住街道和城市 2) 找出数据库中工资比 Small Bank Corporation 的每一个雇员都高的所有雇员 3) 假设一个公司可以在好几个城市有分部, 找出位于 Small Bank Corporation 所有所在城市的所有公司 4) 找出平均工资高于 First Bank Corporation 平均工资的所有公司 5) 为 First Bank Corporation 所有工资不超出 100000 美元的经理增加 10% 的工资, 对工资超出 100000 美元的只增加 3% 8
2. 设某汽车运输公司数据库中有三个实体集 一是 车队 实体集, 属性有车队号 车 队名等 ; 二是 车辆 实体集, 属性有牌照号 厂家 出厂日期等 ; 三是 司机 实体 集, 属性有司机编号 姓名 电话等 设车队与司机之间存在聘用联系, 每个车队可 以聘用若干司机, 但每个司机只能应聘于一个车队, 车队聘用司机有个聘期 ; 车队与 车辆之间存在拥有联系, 每个车队可拥有若干车辆, 但每辆车只能属于一个车队 ; 司 机与车辆之间存在使用联系, 每个司机可使用多辆汽车, 每辆汽车可被多个司机使 用 请根据上述要求, 1) 用 ER 图描述此汽车运输公司的数据模型, 并在图中注明联系的类型 ;(5 分 ) 2) 把 ER 图转换为关系表, 指明每一张表的主码和外码 (5 分 ) 9
10
3. 现在有一个蛋白质相互作用数据库, 其中有一个非冗余表 PPI( 我们假设蛋白相互 作用是无向的, 所以 A/B 相互作用完全等同于 B/A 相互作用 ), 列出了某种生物 目前已知的蛋白质相互作用, 其结构为 pro1_id pro1_name pro2_id pro2_name pro1_goid pro2_goid pro1_gocat pro2_gocat # 蛋白 1 的编号 # 蛋白 1 的名称 # 蛋白 2 的编号 # 蛋白 2 的名称 # 蛋白 1 对应的 GO 编号 # 蛋白 2 对应的 GO 编号 # 蛋白 1 的 GO 功能分类 # 蛋白 2 的 GO 功能分类 (1) 在图论中, 无向图中与每个节点相连的节点的数目称之为该节点的度 (degree), 我们可以利用上面的数据表构建蛋白相互作用网络 请用 SQL 查询计算每种蛋白在这个蛋白相互作用网络中的度 (5 分 ) (2) 请写出上面 (1) 中 SQL 查询语句对应的关系代数式 (5 分 ) (3) PPI 表是否符合第三范式? 如果不符合, 该如何修改使其符合第三范式?( 要求写出合格的 SQL 语句并辅以文字说明 ) (5 分 ) 11
12
13