数据库系统
三级模式 - 两级映射
数据库设计过程
E-R模型
椭圆表示属性
矩形表示实体
菱形表示联系
集成的方法:
- 多个局部 E-R 图一次集成。
- 逐步集成,用累加的方式一次集成两个局部 E-R 。
集成产生的冲突及解决办法:
- 属性冲突:包括属性域冲突和属性取值冲突。
- 命名冲突:包括同名异义和异名同义。
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
一个实体型转换为一个关系模式
- 1: 1 联系至少转换为 2 个关系模式(有2个实体型,转换为 2 个关系模式)
- 1: n 联系至少转换为 2 个关系模式(有2个实体型,转换为 2 个关系模式)
- m: n 联系至少转换为 3 个关系模式(有2个实体型,转换为 2 个关系模式。有 1 个多对多联系,转换为 1 个关系模式。所以有三个关系模式)
三个以上实体间的一个多元联系
有3个实体型,故转换为3个关系模式。
有1个多对多联系,故转换为1个关系模式。
所以最少转化为4个关系模式。
关系代数
- 并(合并,重复的值只出现一次)
- 交(找公共部分)
差(去掉公共部分)
笛卡尔积
- 投影(选列)(sno可以用1代替,依次类推)
- 选择(选行)(sno可以用1代替,依次类推)
- 联接
规范化理论
函数依赖
设 R(U) 是属性 U 上的一个关系模式,X 和 Y 是 U 的子集,r 为 R 的任一关系,如果对于 r 中的任意两个元组 u,v ,只要有 u[X] = v[X],就有 u[Y] = v[y],则称 X 函数决定 Y ,或称 Y 函数依赖于 X ,记为 X → Y。
部分函数依赖:设 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 (学号 ,宿舍, 费用)中,(学号)->(宿舍), 宿舍 != 学号,(宿舍) -> (费用),费用 != 宿舍,所以符合传递函数的要求。
价值与用途
非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常、插入异常、删除异常。
键
超键:唯一标识元组(可能存在多余属性)(一般不考)
候选键:唯一标识元组(已消除多余属性)
主键:任选一个候选键
外键:其他关系的主键
求候选键
- 将关系模式的函数依赖关系用”有向图”的方式表示。
- 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
- 若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一-些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键。
例题1:给定关系R(A1, A2, A3, A4) 上的函数依赖集F={A1→A2,A3→A2, A2→A3, A2→A4}, R的候选关键字为
==A. A1== B. A1A3 C. A1A3A4 D. A1A2A3
例题2:关系模式P(A,B,C,D,E,F,G,H,I,J)满足下列函数依赖: FD={ABD→E, AB→G, B→F, C→J, CJ→I,G→H},求候选码?(ABD→E:ABD的组合键确定E(不等于A→E,B→E,D→E))
==ABCD==
例题3:关系R (A, B, C)满足下列函数依赖:F {B→C,B→A, A→BC},关系R的候选关键字为?
A. AB ==B. A和B== C. A和BC D. AC和AB
范式
主属性:属于候选键的一部分。
非主属性:不属于候选键的一部分。
第一范式(1NF) :在关系模式R中,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称R是第一范式。
例题:下表所示的关系R是否满足1NF,如果不满足,应如何调整?
调整后:
系名称 | 教授 | 副教授 |
---|---|---|
计算机系 | 6 | 10 |
电子系 | 3 | 5 |
第二范式(2NF) :当且仅当R是1NF,且每一个非主属性完全依赖主键(不存在部分依赖)时,则称R是第二范式。
思考题:请思考该关系模式会存在哪些问题(从数据冗余、更新异常、插入异常、删除异常这几个方面来考虑),解决方案是什么?
SNO:学号 CNO:课程号 GRADE:成绩 CREDIT:绩点
拆分为两个表(简略):
- 表1
SNO | CNO | GRADE |
---|---|---|
S01 | C01 | 75 |
S02 | C01 | 92 |
- 表2
CNO | CREDIT |
---|---|
C01 | 4 |
C02 | 2 |
第三范式(3NF) :当且仅当R是1NF,且E中没有非主属性传递依赖于主键时,则称R是第三范式。
思考题:请思考该关系模式会存在哪些问题(从数据冗余、更新异常、插入异常、删除异常这几个方面来考虑),解决方案是什么?
拆分为两个表(简略):
- 表1
SNO | SName | DNO |
---|---|---|
S01 | 张三 | D01 |
S02 | 李四 | D01 |
- 表2
CNO | DNAME | LOCATION |
---|---|---|
D01 | 计算机系 | 1号楼 |
D02 | 信息系 | 2号楼 |
BC范式(BCNF) :设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
==C D A==
模式分解
- 保持函数依赖分解
设数据库模式ρ={R1, R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,ρ 中每个模式Ri上的FD集是Fi。如果{F1, F2,…,Fk} 与F是等价的(即相互逻辑蕴涵),那么称分解ρ保持FD。
- 无损分解
什么是有损,什么又是无损?
有损:不能还原。
无损:可以还原。
无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式。
思考题:
有关系模式:成绩(学号,姓名,课程号,课程名,分数)
函数依赖:学号→姓名,课程号→课程名,(学号,课程号)→分数
若将其分解为:
成绩(学号,课程号,分数)
学生(学号,姓名)
课程(课程号,课程名)
请思考该分解是否为无损分解?
由于有:学号→姓名,所以:
成绩(学号,课程号,分数,姓名)
由于有:课程号→课程名,所以:
成绩(学号,课程号,分数,姓名,课程名)
并发控制
基本概念
存在的问题
封锁协议
- 一级封锁协议。事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。==可防止丢失修改==
- 二级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。==可防止丢失修改,还可防止读“脏”数据==
- 三级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。==可防止丢失修改、防止读“脏”数据与防止数据重复读==
- 两段锁协议。可串行化的。可能发生死锁
数据库完整性约束
- 实体完整性约束
- 参照完整性约束
- 用户自定义完整性约束
- 触发器
数据库安全
数据备份
- 冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份下来。
- 热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
- 完全备份:备份所有数据
- 差量备份:仅备份上一次完全备份之后变化的数据
- 增量备份:备份上一次备份之后变化的数据
星期一 | 星期二 | 星期三 | 星期四 |
---|---|---|---|
完全备份 | 增量备份 | 增量备份 | 差量备份 |
备份星期一备份之后变化的数据 | 备份星期一备份之后变化的数据 备份星期二备份之后变化的数据 |
备份星期一备份之后变化的数据 |
- 静态海量转储:在系统中无运行事务时进行,每次转储全部数据库。
- 静态增量转储:在系统中无运行事务时进行,每次只转储上一 次转储后更新过的数据。
- 动态海量转储:转储期间允许对数据库进行存取或修改,每次转储全部数据库。
- 动态增量转储:转储期间允许对数据库进行存取或修改,每次只转储上一次转储后更新过的数据。
日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。
数据库故障与恢复
数据仓库与数据挖掘
- 面向主题
- 集成的
- 相对稳定的(非易失的)
- 反映历史变化(随着时间变化)
数据挖掘方法:
- 决策树
- 神经网络
- 遗传算法
- 关联规则挖掘算法
数据挖掘方法分类:
- 关联分析:挖掘出隐藏在数据间的相互关系。
- 序列模式分析:侧重点是分析数据间的前后关系(因果关系)。
- 分类分析:为每一个记录赋予-个标记再按标记分类。
- 聚类分析:分类分析法的逆过程。
反规范化
由于规范化会使表不断的拆分,从而导致数据表过多。这样虽然减少了数据冗余,提高了增、删、改的速度,但会增加查询的工作量。系统需要进行多次连接,才能进行查询操作,使得系统效率大大下降。
技术手段:
- 增加派生性冗余列
- 增加冗余列
- 重新组表
- 分割表
大数据
大数据处理系统应该具有的重要特征:
- 高度可扩展性
- 高性能
- 高度容错
- 支持异构环境
- 较短的分析延迟
- 易用且开放的接口
- 较低成本
- 向下兼容性