前言
数据库是疫情期间第一次参加的考试,由于原本考察形式是开卷考试,因此区别并不显著。
已经将课程相关的学习资料上传至GitHub仓库:https://github.com/easilylazy/2020spring/tree/master/database
过程
因为考试时间的屡次调整,并未将备考列入日程。一来是对知识快速复习的把握较大,二来防止备考占用过多精力(彼时专注写verilog仿真程序)
在周末才意识到考试时间就在本周四,而舍友在这周也开始与我讨论问题,客观督促了我开展复习——周二试着做完了一套真题试卷。周三与周四将课件从头到尾过了一遍,并练习了一套关系代数的试题。
资源总结
1. 真题*1
2.考试题型(部分题目)
3.课件
4.关系代数题目
考试题型
- 数据库设计(40′)
- ODL
- E/R
- RM
- 关系范式(20′)
- 关系代数(10′)
- SQL语句(30′)
数据库设计
这部分是基础的建模工程,因此题目有一定灵活性。对题目要求分析得到对象并不难,主要对ODL中涉及到的类型进行学习——attribute与relationship的类型,包括基本(basic)类型和聚集(collection)类型,理解了如何将collection转换为RM中的属性。
ODL的子类在转化为RM时继承超类的全部属性,而E/R中子类(subclass)和弱实体集(weak entity sets)只继承键码即可;并且ODL是面向对象类型,要对每个对象建模;而E/R可以不对同时属于两个子类的对象建立新的实体集。
关系范式
这部分是关系数据库的理论部分,因此需要严谨的定理推导。
关键词
函数依赖,最小基,闭包
熟悉1NF/2NF/3NF/BCNF/4NF的定义
核心题目:
- 对不满足某关系范式(Normal Form)的关系进行分解
- 对分解R得到的某关系R1利用投影法则(Projection Rule)进行函数依赖的求解
关系代数
了解基本的语法规则后,刷完上面的题目,绝对稳!
SQL语句
SQL语句很丰富,但考察很有限——SELECT语句,因此只需要将SELECT语句涉及到的相关子句的用法掌握。由于实践性强,推荐亲自敲语句实现各种用法。
SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
考试中
题目依然是常规题型
- 数据库设计:按照最基础的需求设计,自己的设计看起来很简单。
- 关系范式:过程已经熟练
- 关系代数:只有两道题,而且很简单——但是第1小题有个重名Name的坑,最初没有注意到
- SQL语句:比较有难度,但能够解决
还有最终的附加题:总结期末大作业的出题和答题过程,这个措施不错,有效打发提前答题结束的时间。