本文参考了王珊和萨师煊的《数据库系统概论》,其中只是记录看书过程中需要注意的要点,完全版可以查看这篇文章:找工作笔试面试那些事儿(9)—数据库知识总结(1)
第一、二章
1、DBMS必须提供以下几方面的数据控制功能
- 数据的安全性保护
- 数据的完整性检查
- 并发控制
- 数据库恢复
2、数据模型的组成要素包括
- 数据结构
- 数据操作
- 完整性约束(实体完整性、参照完整性、用户定义的完整性)
3、数据库系统的三级模式结构
- 外模式(用户模式)
- 模式
- 内模式(存储模式)
4、关系的三类完整性约束
- 实体完整性规则:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取控制
- 参照完整性规则:若属性(或属性组)F是基本关系R的外码,他与基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
- 或者取空值(F的某个属性值均为空值)
- 或者等于S中某个元组的主码值
- 用户定义完整性:必须遵循以上两个约束
第三章
查询语句的内容请查看这篇文章:[笔试时]SQL练练手
第五章
触发器
- 定义:是用户定义在关系表上的一类由事件驱动的特殊过程
- 作用:一旦定义,任何用户对表的增删改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制
- 激活触发器执行顺序:
- 执行该表上的BEFORE触发器
- 激活触发器的SQL的语句
- 执行该表上的AFTER触发器
第六章
1、第一范式
每一个分量必须是不可分的数据项。简单的说,就是每一个列(属性)只有一个,没有重复。
如表5-5不符合第一范式,应当改为表5-6
2、第二范式
若R∈1NF,且每一个非主属性完全函数1依赖于码,则R∈2NF。
关系模式S-L-C(Sno, Cno, Sdept, Sloc, Grade)
(Sno, Cno)Grade
Sno → Sdept, (Sno, Cno)Sdept
Sno → Sloc,(Sno, Cno)Sdept
例子中,主属性是(Sno, Cno) ,但是非主属性Sno∈(Sno, Cno) ,也存在Sno→Sdept,Sno→Sloc,可知Sno部分依赖于码Sdept,Sloc,因此S-L-C∉2NF
解决方法: 将关系模式分解为两个关系模式,如下
SC(Sno, Cno, Grade)
S-L(Sno, Sdept, Sloc)
3、第三范式
关系模式R中若存在这样的码X,属性组Y及非主属性Z( Z⊈Y )使得X→Y, Y→Z成立,YX,则称R∈3NF(简单说就是不存在传递依赖)
关系模式SC(Sno, Cno, Grade)∈3NF,但是 S-L(Sno, Sdept, Sloc)∉3NF,原因是>>Sno→Sdept,Sdept→Sloc,因此有Sno→Sloc,即Sno传递依赖于Sloc
解决方法:将关系模式分解为两个关系模式,如下
S-D(Sno, Sdept)
D-L(Sdept, Sloc)
4、BCNF
关系模式R∈1NF。若X→Y且 Y⊈X 时X必含有候选码,则R∈BCNF
关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一个教师只教一门课。每门课有 若干个教师,某一学生选定某门课,就对应一个固定的教师。
由语义可得到如下函数依赖: (S,J)->T;(S,T)->j;T->J。其中 (S,J),(S,T)都是候选键。 STJ是3NF,因为没有任何非主属性对键传递依赖或部分依赖。但STJ不是BCNF关系,因为T是决定因素,而T不包含键。
**解决方法:**STJ可以分解为两个关系模式,如下
- ST(S, T)
- TJ (T, J)
5、第四范式
关系模式R∈1NF,如果对于R的每个费平凡多值依赖 2 X→→Y( Y⊈X ),X都含有码,则称R∈4NF
6、总结
- 根本方法就是对关系模式进行分解成为多个关系模式
- 模式分解的几个重要事实是:
- 若要求分解保持函数依赖,那么模式分离总可以达到3NF,但不一定能达到BCNF
- 若要求分解既保持函数依赖,又具有无损连接性,可以达到3NF,但不一定能达到BCNF
- 若要求分解具有无损连接性,那一定可达到4NF
第十章
数据库事务的四个特性:
- 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
- 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
- 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
- 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。