数据库

数据库模式

三级模式-两级映射

外模式

概念模式

内模式

关注于如何存储数据

ER模型

一个实体型转换为一个关系模式。

关系代数与元组演算

并:
设有兼容关系R、S(即R、S具有相同的关系模式),则二者的并运算定义为:

式中“∪”为并运算符,t为元组变量,结果R∪S为一个新的与R、S兼容的关系,该关系是由属于R或属于S的元组构成的集合。

交:
设有兼容关系R、S,则二者的交运算定义为:

式中“-”为差运算符,t为元组变量,结果R-S为一个新的与R、S兼容的关系,该关系是由属于R而且不属于S的元组构成的集合,即在R中减去与S中不相同的那些元组。
差:
设有兼容关系R、S,则二者的差运算定义为:

式中“-”为差运算符,t为元组变量,结果R-S为一个新的与R、S兼容的关系,该关系是由属于R而且不属于S的元组构成的集合,即在R中减去与S中相同的那些元组。
笛卡尔积:
直观的说就是
集合A{a1,a2,a3} 集合B{b1,b2}
他们的 笛卡尔积 是 A*B ={(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)}
列也要有变化,数据也会有变化。
投影
选择
联接

规范化理论

函数依赖

完全依赖

设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号)

部分依赖

设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级)

传递依赖

设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
例子:在关系R(学号 ,宿舍, 费用)中,(学号)->(宿舍),宿舍!=学号,(宿舍)->(费用),费用!=宿舍,所以符合传递函数的要求

非规范化的关系模式,可能存在的问题包括:数据冗余、更新一场、插入异常、删除异常

超键

唯一标识元组的键,可以是单个属性,也可以是属性的组合。

候选键

在超键的基础上消除了冗余属性,也能够唯一标识元组。候选键可以有多个,主键只能有一个。

主键

主键只有一个

外键

其他关系的主键

求候选键

  1. 将关系模式的函数依赖关系用“有向图”的方式表示
  2. 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历途中所有结点,则该属性即为关系模式的候选键
  3. 若入度为0的属性集不能遍历途中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度0的属性集中,直至该集合能遍历所有结点,集合为候选键。

范式

第一范式

消除非主属性对候选键的部份依赖。
在关系模式R中,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称R是第一范式。解决:插入异常

第二范式

消除非主属性对候选键的传递依赖
第二范式建立在第一范式的基础上,即满足第二范式一定满足第一范式,第二范式要求数据表每一个实例或者行必须被唯一标识。除满足第一范式外还有两个条件,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
解决:

第三范式

消除主属性对候选键的传递依赖

第四范式

BC范式

并发控制

封锁协议

数据库完整性约束

实体完整性约束

参照完整性约束

用户自定义完整性约束

触发器

分布式数据库

数据仓库与数据挖掘

数据备份

冷备份

热备份

动态备份,在数据正常运行的情况下备份。

完全备份

差量备份

增量备份