E.F.Codd在1970年提出关系模型,是关系数据库的教父
DBMS:支持用户对数据库进行定义、创建、维护、访问控制的软件系统
三级模式:对数据库的整体描述,保证数据独立性。外模式、模式、内模式
两级映像:外模式和模式-保证逻辑数据独立性,外模式不受概念模式变化影响。模式和内模式-保证物理数据独立性,概念模式不受内部模式变化的影响
关系代数基本运算:选择、投影、笛卡尔积、并、差
数据库是
数据模型三要素:
数据模型:一组集成的概念,用于描述和操纵组织机构内的数据、数据间的联系以及对数据的约束
三组件:结构部分-由一组创建数据库的规则组成、操纵部分、一组完整性约束
关系表的一行称作记录/元组
二段锁:事务中所有加锁操作都出现在第一个解锁操作之前,分为两阶段
扩展阶段:可获取,不可释放锁
收缩阶段:可释放,不可获取锁
关系是由行列组成的表
视图:对一个或多个基本关系进行关系操作得到的动态结果。无需存在于数据库当中,可根据用户需要生成的虚关系
维数是属性个数,基数是元组个数
事务:由单个用户或应用程序执行的,完成读取或更新数据库内容的一个或一串操作
事务的ACID:
原子性:全部或都不的性质
一致性:事务必须将数据库从一种一致的状态转换到另一种一致的状态
隔离性:事务的执行是相互独立的,未完成事务的中间结果对其他事务不可见
持久性:完成提交事务的结果要永久记录,不能因故障丢失
超键:一个属性或属性集合能唯一标识出关系中每个元组
Query Processing的目的:高级语言表示的查询 -> 低级语言表达的执行策略,并执行该策略以获取需检索的数据
数据库处理请求的过程
高级语言表达查询 -> (查询分解) -> 关系代数表达式 -> (查询优化) -> 执行规划 -> (代码生成) -> 生成的代码 -> (运行时查询执行) -> 查询结果
关系代数
选择(Selection):
投影(Projection):
笛卡尔积(Cartesian product):
并(Union):
差(Set Difference):
存在于R但不存在于S的元素的集合
交(Intersection)
连接(join):
除(division):
SQL语句
DDL:
改表名:alter table [table_name] rename [new_name]
数据库设计
数据库设计流程:
概念模型设计:与所有物理因素无关
逻辑模型设计:与具体的DBMS与其他物理因素无关
物理模型设计:产生数据库在辅存上的实现描述的过程
第一范式:列不能够再分成其他几列
第二范式:1NF + 必须有主键,每个非主键完全函数依赖于任一主键(不能是一部分)
第三范式:1NF+2NF + 非主键不传递依赖
备份与恢复
备份:周期性的将数据库、日志文件、(程序)复制到脱机的存储媒介
若事务串行执行,当故障发生时找到最近一个检查点前启动的最后一个事务,重做在检查点时刻活跃以及在该事务之后启动并且开始、提交记录出现在日志中的事务。
当故障发生时,若一个事务仍处于活跃状态,则撤销该事务。
若事务并发执行,重做所有在最近检查点之后提交的事务,撤销故障发生时所有活跃的事务
恢复:
严重损毁(磁头损坏并破坏了数据库):利用数据库最近副本恢复,利用日志重做已提交事务所做的更新
无物理损毁,处在不一致状态:撤销引发不一致的修改操作,重做某些事务,该过程只需使用日志文件中的前像和后像
延迟修改:事务提交后,修改被写入数据库
立即修改:更新一旦发生,立即添加到数据库
影像页:当前页表和影像页表
日志:记录对数据库所有更新信息:事务记录、检查点记录。追踪事务执行进度,帮助进行恢复,性能检测,审计
检查点:数据库与事务日志文件之间的同步点,在该点上所有的缓冲区都被强制写到二级存储器