数据库备考总结

前言 数据库是疫情期间第一次参加的考试,由于原本考察形式是开卷考试,因此区别并不显著。 已经将课程相关的学习资料上传至GitHub仓库:https://github.com/easilylazy/2020spring/tree/master/database 过程 因为考试时间的屡次调整,并未将备考列入日程。一来是对知识快速复习的把握较大,二来防止备考占用过多精力(彼时专注写verilog仿真程序) 在周末才意识到考试时间就在本周四,而舍友在这周也开始与我讨论问题,客观督促了我开展复习——周二试着做完了一套真题试卷。周三与周四将课件从头到尾过了一遍,并练习了一套关系代数的试题。 资源总结 1. 真题*12.考试题型(部分题目)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… Continue reading 数据库备考总结

我正思考呢

在讲完并发事务的不一致问题后,我继续介绍解决的办法。 办法主要基于两类: 预防问题:加锁 撤销问题 时间戳 有效性检验 为增强互动效果,我邀请老妈选择一个类型开启。但她已经昏昏欲睡,没有兴致。我便自顾自按顺序讲来: 锁有多种类型: 排它锁 exclusive 共享锁 shared 更新锁 update 增量锁 increment 也给它们临时想了一些例子作为佐证: x锁虽然解决了刚才购票的问题。但如果遇到了许多人只需要读取数据,比如很多人查看股市的情况,这就不需要更改数据,所以可以使用s锁 还有呢,虽然购票的修改数据需要排它锁避免出现问题,但是有一些情况并不会出错,比如:小区缴纳水电费,很多人在排队,但谁先交谁后交并没有什么区别。因为结果是向上累积增加的,这就可以用到增量锁:没有必要等待其他人都交完,所有人都可以把原数据增加新数据,提高效率。 之后,涉及概念更多的时间戳和有效性检验我没有讲太深入,大脑中结合图像,思考更多。 告一段落后,老妈迷迷糊糊醒来,我想逗逗她,故作严肃: ‘考考你啊,刚才讲了哪几种锁?’ ‘emm,安全锁’ ‘嗯!接着说’我没有表现,想等最后再告诉她答案。 ‘还有……’显然,她默认刚才说对了,/(ㄒoㄒ)/~~ 沉默半晌,我催促她:’快说!‘ ‘呃,正思考呢’我看向她,眼睛闭紧,眉头紧皱,确实是在用力思考的样子。‘刚才睡着了一会,听到有两种锁是呗,就记得你讲得那个例子,什么,什么来着?’ 她的样子,活像一个犯了错的小学生,我的心中生出了一丝爱怜。‘嗯,那个分析股市的’…… 不再戳破她第一个的错误了,这样还能得50分呢!

加速!

为了加深学过知识的印象,我兴致勃勃按照自己的理解把知识传授给老妈,当然了,讲错也不至于误人子弟。 学到了数据库的并发事务,有三种典型的不一致情况: 丢失修改 不可重复读 脏读 讲第一点时,我利用更易明白的实例: 12306抢票,只有一张余票了,但小红和小明同时读取到还有1张,于是都决定,赶快抢票,结果是:小红买到一张,修改票数为0;小明也买到一张,修改票数为0.你看,票数减少了一张,但两个人买到了票,这可怎么办?—— ——‘给他加速!’,老妈兴奋地抢答,我差点没反应过来,‘是不是要在微信朋友圈给他加速了,只有自己加速没用对吧……‘ 我哭笑不得,老妈说的的确不假,但显然考虑的问题和我不在同一层面上,我尽量回到原话题:‘没错,这个加速的动作其实就在后台影响到了人们这个并发购票的先后次序……