三、数据库系统
1、数据库模式
1.1、三级模式两级映射:
外模式:一般是和用户级的数据库表打交道
外模式—概念模式映射
概念模式:一般是数据库的维护人员使用,它里面是一张一张的表格
概念模式—内模式映射
内模式:内模式和操作系统打交道
2、数据库设计:
2.1、ER模型
ER模型探索实体和实体之间的关系一对一、一对多、多对多。以及实体的属性。它是独立与实际的数据库的,是一种概念性的图示。最终都将会转换成关系模式。在一对一的情况下,至少转换两个关系模式联系可以任意加在一个实体上也可以单独转换,在一对多的情况下,联系可以独立转换成一个关系模式(但一般不这么干),也可以加在多的那一方实体。在多对多的情况下必须把联系单独转换成一个关系模式
2.2、关系代数与元组演算
运算 | 描述 |
---|---|
并:s1∪s2 | 将两个表格合并到一起,共同部分只显示一次 |
交:s1∩s2 | 显示两个表格的共同部分 |
差:s1-s2 | 将s1和s2中的共同部分去掉,然后展示s1 |
笛卡尔积:s1×s2 | 将s1和s2中的每一条记录拼接组合 |
投影:π no,name(s1) | 选择列,可以是列号也可以是列名 |
选择:σ no=001(s1) | 选择行,下标参数可以是列名=值,也可以是列号=值 |
连接:s1▷◁s2 | 这里有等值连接和自然连接。自然连接:是没有符号的。将两个表中相同的字段做等值连接。等值连接:加上参数s1.no=s2.no |
2.3、规范化理论
2.3.1、函数依赖
部分函数依赖
传递函数依赖
2.3.2、价值与用途
数据冗余、更新异常、插入异常、删除异常
2.3.3、键
键 | 描述 |
---|---|
超键 | 能够唯一标识一个元组的键,可以是一个字段也可以是字段的组合 |
候选键 | 其实就是主键的候选,候选键每一个单独都可以成为主键 |
主键 | 能够唯一标识一个元组的键,只能是一个。 |
外键 | 用来对表做关联,是其他表的主键 |
求候选键:
首先,找出这个关系中所有入度(入度请参考离散数学)为0的节点,让后看这个节点能否遍历整个关系图,能就是候选键。如果没有找到入度为0的节点,就找既有入读也有出度的节点,看能不能遍历全图
2.3.4、范式
1NF:所有属性都是不可再分的原子值
2NF:消除部分函数依赖,就是将组合键的主键提取到只剩一个
3NF:用外键做关联
BCNF:候选键能偶确定非候选键
2.3.5、模式分解
保持函数依赖分解:分解之后的模式任然能够得到函数依赖
无损分解:分解模式之后能够通过运算还原成原来的关系模式就是无损的
判断无损分解,通过函数依赖将一个表的内容集合到另一个表上,最后看是否为原始表。
或者,表格法通过相同的列值将列集成。看最后是否有一行全为a
或者,公式法只适用于一分为二,首先将两个子模式做交集运算,然后互相做差运算,得出交集运算的结果——>差运算的结果在函数依赖中有,就是无损
3、并发控制数据库完整性约束
3.1、并发控制
封锁协议:
就是类似于Java对某个对象加锁,只有操作完成之后释放锁,别的程序才能操作这个对象
一级封锁:在修改之前加锁,事物结束释放
二级封锁:在一级封锁基础之上,读取之前加锁,读取完成释放
三级封锁:在一级封锁基础之上,读取之前加锁,事物结束后释放
两段锁协议:可串行化的,可能发生死锁
3.2、数据库完整性约束
- 实体完整性约束:约束主键
- 参照完整性约束:约束外键
- 用户自定义完整性约束:设置年龄不能为负数等
- 触发器:可以使用脚本来进行约束
3.3、数据库安全
3.4、数据备份
- 冷备份:在数据库停止运行的时候进行备份
- 热备份:在数据库运行的过程中进行备份
完全备份:将整一个数据库备份下来
增量备份:将相对于上一次备份来说的,变化的部分备份下来
差量备份:将相对于上一个完整备份来说,将变化的部分备份下来
3.5、数据库故障与恢复:
4、分布式数据库
5、数据仓库与数据挖掘
数据挖掘
反规范化