三、数据库系统
3.1、数据库模式
3.1.1、三级模式-两级映射
- 内模式:
- 和物理层次的数据库直接关联,负责我们如何存储这一系列数据,以何种格式去存储以及如何优化数据的存储。
- 主要关注点在数据的存放这一块
- 概念模式:
- 数据库表的这一级别,这一级别相当于把数据库分为了若干张表,这些表是根据我们的业务,我们的应用来划分出来的,表与表之间会有相应的关联
- 外模式:
- 外模式所对应的是数据库里面的视图,让我们对数据有了灵活的控制方式。
3.1.2、数据库设计过程
3.2、ER模型
我们应区分析每一个局部的ER图应该如何绘制,因为从整体的角度考虑一次性画整体的ER图难度较高风险较大, 所以,我们先从局部的去合成ER图,画完局部的然后在一步一步的去合成,集成全局的ER图。把局部的ER图合成全局的ER图的时候又会有两种不同的形式,如下:
- 集成方式:
- 多个局部E-R图一次集成。(不推荐)
- 逐步集成,用累加的方式一次集成两个局部的E-R图(推荐)
- 集成产生的冲突以及解决方法
- 属性冲突:
- 包括属性域和属性取值冲突
- 男女的取值有些用0或1 有些用T或F, 取值冲突
- 包括属性域和属性取值冲突
- 命名冲突
- 同名异义
- 异名同义
- 在一张表中叫教师,另一张表中叫职工
- 结构冲突
- 包括同一对象在不同的应用中具有不同的抽象,以及同一实体在不同局部ER图中所包含的属性个数和属性排列次序不完全相同
- 有些内容例如教师,在一个表中是一个 列,在另一个ER图中他是一张表
- 包括同一对象在不同的应用中具有不同的抽象,以及同一实体在不同局部ER图中所包含的属性个数和属性排列次序不完全相同
- 属性冲突:
ER模型转关系模式的两个原则
- 一个书体型转换为一个关系模式
- 1:1 联系
- 转成关系模式最少转成两个关系模式,把联系放在任何一个实体里面记录下来
- 1:n 联系
- 可以把联系单独转化成一个关系模式(即为一张表)
- 也可以把联系记录在n也就是多的那一端
- m:n 联系
- m 转化成一个关系模型
- n 转化成一个关系模型
- 他们之间的联系也必须转化成一个单独的模型
- 1:1 联系
- 三个以上实体间的一个多元联系
一个多对多的实例
多对多例题
3.3、关系代数与元祖演算
关系代数(上午题必出题)
关系代数基本的运算包括
- 并
- 交
- 差
- 笛卡尔积
- 投影
- 选择
- 联接
主要考察的是笛卡尔积和联接的运算得到相同的结果但是运算过程不同
-
笛卡尔积
- 就是两个表的拼接,例如图中的S1和S2进行拼接,得到的结果就是一张表留六个字段,列的数量就是S1的列数乘以S2的列数
-
投影
- 实际就是查询不同字段的过程
-
选择
- 就是通过where查询的结果
-
联接
- 将两个表通过一定的条件进行拼接,并去掉相同的列
3.4、规范化理论
规范化理论(上午题必出题)
函数依赖
函数依赖是规范化理论当中的一个基础知识,后边的键(超键、候选键、主键),三大范式等都需要利用到函数依赖这个体系。
简单理解: 例如y = x2这个函数,我们可以通过通过确定的X来得到与之对应的Y吗,但是通过Y不能确定唯一的X, 这就说明了Y依赖于X
两个基础的依赖关系:
部分函数依赖:
传递函数依赖;
规范化理论–价值与用途
非规范化的关系模式,可能存在的问题包括:数据冗余,更新异常、插入异常、删除异常
- 数据冗余
- 通过DNO就可以确定DNAME,那么系名就是冗余数据,并且location也是一个冗余数据
- 更新异常
- 如果我们想要更新DNO中的D01叫做计算机科学系,但是我们只更新了前两条数据,那么这样就会产生更新异常,因为第三个学生的系名仍然是计算机系
规范化理论–键
- 超键:
- 概念:能够唯一标识元祖的键
- 特点:
- 可以是单个属性也可以是多个属性的组合
- 可能存在冗余的情况
- 例如:
- 图中学号和姓名组合可以确定性别,那么他们的组合可以称之为超键
- 当我们只保留学号的时候也可以确定性别,那么学号就可以称之为候选键
- 候选键:
- 概念:可以确定唯一元祖
- 特点: 再超键的基础上消除冗余属性,即为候选键
- 主键:
- 与候选键的区别
- 候选键可以有多个
- 主键只能有一个
- 案例
- 一个国家,总统的候选人可以有多个,但是选出来的总统只有一个
- 在数据库当中,我们可以有学号和身份证号可以作为候选键,但是我们只能选择一个当主键
- 与候选键的区别
- 外键:
- 别的表的主键
求候选键–图示法
- 将关系模式的函数依赖关系用“有向图”的方式表示
- 找到入度为0 的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中的所有节点,则该属性集纪委关系模式的候选键
- 若入度为0的属性不能遍历图中所有的节点,则尝试性的将一些中间节点(即有入度,也有出度的节点)并入入度为0的属性集中,直至该集合能遍历所有节点,集合为候选键
例题
例二中需要注意的是,我们在画 ABD ->E的组合键的时候不能
这么画,因为这样画的画代表着A、B、D 中的任何一个都可以用来确定E,而我们需要的是通过ABD的组合键才能确定E,所以只能按照题中的那个画法来画,所以第二题的候选键是
ABCD
例三选B
规范化理论–三大范式
- 第一范式(1NF):
- 属性值都是不可分割的原子值
- 在关系模式R中,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称R是第一范式
- 第二范式(2NF):
- 消除非主属性对候选键的部分依赖
- 当且仅当R是1NF,且每一个非主属性完全依赖主键(不存在部分依赖)时,则称R是第二范式
- 第三范式:
- 消除非主属性对候选键的传递 依赖
- 当且仅当R是第一范式,且E中没有非主属性传递依赖与码时,则称R是第三范式
- BCNF:
- 消除主属性对候选键的传递依赖
- 设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中的每个依赖的决定因素必定包含R的某个候选码
第一范式例题
不满足,去掉高级职称人数就满足了
第二范式例题
这张表当中SNO和CNO共同构成主键来确定课程分数,但是学分又部分依赖于课程编号,所以学分就是部分依赖于候选键,显得冗余了
单主属性不肯能存在部分函数依赖,只有在多属性的时候才存在部分函数依赖
第三范式例题
BC范式例题
规范化理论例题
答案CDA
模式分解
例题
表格法进行无损分解
因为有函数依赖 学号 -> 姓名,并且在学生和成绩表中都有学号,所以在b12的部分皆可以替换为a2
同理课程号 - > 课程名 则b14可以替换为a4,替换之后如下图
第二种方式(局限性强)
该方式只适合一分为二的方式,不适合一个表拆分成三个表的形式
先取得交集,然后在R1和R2相互去减,最后获得 B 或者C
然后将取得的交集指向R1减R2获得的结果即为: A- > B 、 A -> C
获得的这两个函数依赖之后要有一个和F相同,那么就说明是无损分解,如果两个都不满足则是有损分解
3.5、并发控制
封锁协议
3.6、数据库完整性约束
数据完整性: 就是主键约束
参照完整性: 外键约束
用户自定义完整性: 用户自己定义 如年龄 > 0 ,年龄 <200
高级约束通过触发器来实现(但是实际好像用的不多)
数据库安全性
数据备份
冷备份是以文件为单位的,不能单独备份一张表,难度低
热备份以表为单位进行备份,难度高
数据备份的其他方式
关于增量备份和差量备份的解释
3.7、分布式数据库
3.8、数据仓库与数据挖掘
数据仓库的建立要经历以下几个阶段
OLAP服务器:联机分析服务器