数据库备考总结

前言

数据库是疫情期间第一次参加的考试,由于原本考察形式是开卷考试,因此区别并不显著。

已经将课程相关的学习资料上传至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语句:比较有难度,但能够解决

还有最终的附加题:总结期末大作业的出题和答题过程,这个措施不错,有效打发提前答题结束的时间。

Leave a comment

Your email address will not be published. Required fields are marked *