ER图相比前几年要更复杂一些
一、简答题
1. SQL 查询优化与语法树
给出SQL 语句,要求画出该查询的语法树,并直接给出优化后的语法树。(忘了,反正很简单)
2. 多值依赖
给定关系模式R(A, B, C),已知多值依赖:
A ->> B现已知关系中包含以下 3 个元组:
(a, b1, c1) (a, b2, c2) (a, b3, c2)问:根据多值依赖的定义,表中至少还应包含哪些元组?
3. SQL 中的 NULL 判断
找出age > 20的人。如果age属性存在NULL,这些元组是否会出现在查询结果中?请说明理由。
4. 时间戳
考察时间戳相关内容。有两个事务T1和T2,时间戳分别为:
TS(T1) = 10 TS(T2) = 20T1先写某数据项X,T2再读数据项X。此后如果T1回滚,T2需要做什么?原因是什么?
5. 组合索引的使用
现有顺序索引:
index(userid, time)请判断以下查询条件能否使用该索引,并说明原因。
WHEREuserid+1=100;WHEREuserid=100ANDtimeLIKE'2006-12%';6. 两阶段封锁协议
有两个事务T1和T2:
T1: read(X), read(Y), X = Y + 1, write(X) T2: read(Y), read(X), Y = X + 1, write(Y)请使用两阶段封锁协议(2PL),使这两个事务能够并发执行,并避免冲突。
二、E-R 图设计(约 11 分)
某学校有如下实体和关系。要建立一个科研数据库,请根据描述绘制 E-R 图并转换为关系模式。
原题中各个实体给了非常非常多的属性,最后画的全是气球((,回忆不清了,但是都是无关属性,核心都在下面。在试卷上根本画不开,总之最后画的ER图非常丑陋且奇怪
这个题难点我认为在于ISA,也就是教师和学生,虽然老师似乎明确说过不考ISA,但是这个题如果不给教师和学生建一个父类的话,会非常丑陋,而且我觉得真实数据库也不可能这样设计,所以我在考试中为教师和学生建了一个父类,人员表,优雅多了。至于科研成果,我觉得就没有必要去建父类了。
- 教师:属性包括工号、姓名、年龄、所属学院。
- 学生:属性包括学号、姓名;每个学生只有一位导师,导师为教师。
- 项目:属性包括项目编号、项目名称、起止日期;每个项目有一个负责人(教师),有多个参与人员(教师或学生),参与时需要记录角色,如主持人、成员、骨干等。
- 科研成果:科研成果包括论文和专利;一个项目可以关联多个科研成果,一个科研成果也可以由多个项目产出。
- 论文:属性包括 DOI 号、期刊名称;论文可由教师或学生共同创作,需要记录作者排序、是否为通讯作者。
- 专利:属性包括专利号、类型、起始日期、截止日期;发明者可以是教师或学生,需要记录发明者排名。
三、规范化(10 分)
给定关系模式:
R(A, B, C, D)函数依赖集:
F = { A -> C, C -> A, B -> AC, D -> AC, BD -> C }1. 3NF 判断与分解
判断R是否属于第三范式(3NF)。
- 如果属于 3NF,请给出理由。
- 如果不属于 3NF,请将其分解为 3NF,并要求分解保持无损连接且保持依赖。
2. BCNF 判断与分解
判断R是否属于 BCNF。
- 如果属于 BCNF,请给出理由。
- 如果不属于 BCNF,请将其分解为 BCNF,并要求分解保持无损连接。
四、关系代数与 SQL 语句(25 分)
给定以下关系模式:
customer(cid, cname, city, gender, age) route(rid, rname, agency, price) cr(cid, rid, opid)说明:
customer表示游客。route表示旅游路线。cr表示游客选择或购买旅游路线的记录。agency表示旅行社。opid表示销售员编号。
1. 查询同价路线
请找出所有路线名称,其价格与“北京三日游”这条路线相同。
要求给出:
- 关系代数表达式
- SQL 语句
2. 统计销售员在各路线上的游客量
请求出各个销售员针对每条旅游路线成功销售的游客数量。
要求:
- 给出关系代数表达式和 SQL 语句。
3. 查询未被特定游客选择的路线
请给出所有没有被以下游客选择的旅游路线:
居住在北京,年龄大于 30,男性要求给出:
- 关系代数表达式
- SQL 语句
4. 查询购买中青旅路线的游客
请求出所有购买了旅行社为“中青旅”的全部旅游路线的游客编号。
要求给出:
- 关系代数表达式
- SQL 语句
5. 查询购买路线最少的游客
请给出所有游客中购买旅游路线最少的游客编号,并按游客编号降序排序。
要求给出 SQL 语句。
6. 更新购买人数少于 10 的路线价格
对所有少于 10 个顾客购买的旅游路线,其价格下调 10%。
要求给出 SQL 语句。
复习提示
这份回忆版覆盖的重点比较集中,主要包括:
- SQL 查询优化与语法树优化。
- 多值依赖、3NF、BCNF 与规范化分解。
- NULL 参与比较运算时的三值逻辑。
- 时间戳协议、回滚与级联回滚。
- 组合索引的最左前缀、表达式条件与范围匹配。
- E-R 图中的多对多关系、弱/强约束、联系属性和继承/分类建模。
- 关系代数、分组聚合、反查询、最值查询和更新语句。
本文为回忆整理版,适合复习时查缺补漏。祝好运~