Fork me on GitHub

数据库系统工程师(软考中级)

大二下学期考过了软考中级证书。趁自己还记得,写点东西记录一下。

写在前面的几句废话

这个是软考中级证书的一门,含金量还行吧,现在还没在什么招聘要求上看到它。听师兄说国企会在工资考评上算上它,有它能加几百块钱,不知道是不是真的。考它的主要原因是大二上学了数据库原理。大二下学期又比较闲,想以考带学,查漏补缺。
简单介绍一下吧。数据库系统工程师资格(水平)考试,一年一次,大概在3 4月份网上报名,5月份考试。考试上午一场,下午一场。两场满分75,45分通过。上午题全是选择题,内容是理论知识,下午5道大题填空或者回答。
没考试之前,我对于数据库的学习主要是大二一学期都按习题敲代码。对于增删查改,条件查询,视图、储存过程、触发器的代码比较熟悉。期末考虽然也有理论,但就是死记硬背,没有深入学透。
考取这门证书,让我收获许多理论知识。诸如范式、关系代数。还有可怕的计算机专业知识的考查(ಥ_ಥ)比如校验码,补码,磁盘容量计算,流水线,计算机网络。。。
敲代码以后可以搬砖。而学习这些理论知识比如范式、关系代数有什么用,我之前也有一些困惑。在知乎上有相似的问题,下面有一些不错的回答。https://www.zhihu.com/question/273489729
总之,经过这次考证最初加强数据库理论知识的目的达到了。不过,越学越觉得自己知识漏洞越多。。。

首先

这门考试仅仅需要准备两本书,这两本都是考试官方指定用书。
《数据库系统工程师2012至2017年试题分析与解答》这本是历年真题有超详细的解析,需认真刷完。
《数据库系统工程师考试全程指导》第二本大砖头用于对理论查漏补缺,不买也行,我就没买。by图书馆有的借。

当时对我有帮助的博文。

对于三级模式( 外模式,内模式,模式)刘慰老师的回答让我有种恍然大悟的感觉,推荐阅读!。
https://www.zhihu.com/question/38737183/answer/93294527

列了一些常见的概念 https://blog.csdn.net/BI_25_RED/article/details/52564110

我的软考之路 https://www.cnblogs.com/clnchanpin/p/7358003.html

我个人做的一小部分笔记

上午题常见的概念

  • s读锁(共享) 任何人只能读
    x写锁(排他) 只有那个人可以读或写

  • 并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。
    串行:喂完一个再喂第二个。

  • 脏读 修改之后 被别人读到 但这个修改又被撤回作废 别人读到就是脏数据。简单来说就是读到的数据是人家不要的。
    幻读 一个事务两次查询,第二次比第一次多了或者少了几行几列数据
    不可重复读 和幻读差不多 不过幻读重点在insert
    更新丢失 回滚多了

  • undo 撤销 完成之后
    rollback 未全部完成
    redo日志 数据修改后的
    undo日志 数据修改前的

  • 集成测试[在概要设计阶段]:接口,通信 黑
    确认测试[需求设计阶段]:最终用户
    系统测试
    恢复测试即容错测试

  • 瀑布模型(理想)一个个阶段过,不回头
    原型(动态定义需求)
    螺旋模型 结合瀑布和演化并加入风险 小系统一圈一圈走阶段
    喷泉模型 (迭代)各阶段交叉‼️对风险进行识别和分析

  • 标记耦合和控制耦合的区别:标记耦合传递不是简单的变量而是数据结构

  • 人耳可听到的范围是20hz-20khz
    日常说话300-3400hz
    乐器20hz-20khz

  • 共享性是指各结点数据共享。
    自制性是指每个节点对本地数据都能独立管理。
    可用性是指当某一场地故障时,系统可以使用其他场地上的副本,而不至于使整个系统瘫痪。
    分布性是指数据在不同场地上的储存。

  • 笛卡尔积 的个数 等于两个个数相乘
    π投影 垂直 就一个表中只需要姓名和成绩,其他过滤
    ∂选择 水平

  • 中继器(转发器) 物理层
    网桥 数据链路层
    路由器 网络层
    网关(协议转换,交换机) 高层
    集线器 物理层

  • 超健:唯一标识(知道学号姓名就可以知道她的年龄班级)
    候选健:超健基础上,不含多余属性(学号姓名知道一个就行了,但加一个课程名才知成绩)
    主键:候选健中随意挑一个
    候选健都是主属性

  • 需求分析:数据流图和数据字典。
    逻辑设计:设计关系模式及相关视图。
    物理设计:设计数据的物理组织如索引。

  • 将所有对象进行分类,然后确定各类的实体,找出属性,这一过程称为聚集。
    从实体中抽象出子类和父类这一过程称作概括。

  • 事物的永久性是指事物一旦提交,其对数据库的影响是永久的,即使系统发生故障也不受影响,提交可以看作是系统对用户的承诺。

说说下午题中一些油腻腻的套路。

  • 第一大题(数据流图)
    加工的输入数据流和输出数据流要平衡,保证加工的输出数据流都有对应的输入和输出数据流。
    绘制过程中可能出现的错误:
    数据黑洞:只进不出
    数据奇迹:只出不进
    数据灰洞:加工不出输出流

  • 第二大题(sql代码)
    一个信息点一个信息的标记出来,别漏了。
    尤其喜欢让你补写GROUP BY。查询了多少个表,group by后面就要跟多少个表。当然函数比如avg(工资)不用。
    补写where。查询多少个表,where是表数减一条。

  • 第三大题(设计实体)
    实体的关系不止于两个实体。喜欢考三个实体的关系。

  • 第四大题(范式)
    第二范式:消除了非主属性对主属性的部分依赖。缺点是数据冗余,修改、删除、插入异常
    第三范式:消除了非主属性对主属性的传递依赖。缺点是删除、插入异常。
    BNF:消除了主属性对码的部分传递函数依赖。

  • 第五大题,略。