5.1 基本概念
5.1.1 三级模式结构
- 概念模式(基本表):也称模式,是数据库中全体数据的逻辑结构和特征的描述,它由若干个概念记录类型组成,只涉 及行的描述,不涉及具体的值;
- 外模式(视图):也称用户模式或子模式,是用户与数据库系统的接口,是用户用到的那部分数据的描述,由若干个 外部记录类型组成;
- 内模式(存储文件):也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的 内部记录类型、索引和文件的组织方式以及数据控制方面的细节。
5.1.2 两级映像
- 模式/内模式映像(物理独立性):该映像存在于概念级和内部级之间,实现了概念模式到内模式之间的相互转换;为了保证物理独立性,需要修改概念模式与内模式之间的映像。
- 外模式/模式映像(逻辑独立性):该映像存在于外部级和概念级之间,实现了外模式到概念模式之间的相互转换;为了保证逻辑独立性,需要修改外模式与概念模式之间的映像。
5.1.3 关系相关术语
- 候选码(候选键):若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码;
- 主码(主键):若一个关系有多个候选码,则选定其中一个为主码;
- 主属性:包含在任何候选码中的属性称为主属性,否则为非主属性;所有候选码都是主属性,其他都是非主属性;
- 外码(外键):如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码;
- 全码:关系模式的所有属性组是这个关系模式的候选码,称为全码;
- 超码:一个包含主码的属性集称为超码。
5.1.4 关系模型的定义
5.1.4 完整性约束
- 实体完整性:关系中主码不能为空或部分空值;
- 参照完整性:如果关系R2的外码X与关系R1的主码相对应,则外码X的每一个值必须在关系R1中主码的值中找到,或为空值;
- 用户定义完整性
5.1.5 关系代数
- 投影:从关系的垂直方向进行运算,在关系R中选择出若干属性列A组成新的关系。记作投影A(R)= {t[A],t∈R};
- 选择:从关系的水平方向进行运算,是从关系R中选择满足给定条件的诸元素,记作选择F(R)= {t | t∈R∧F(t) = true },式中,F中的运算对象是属性名(或列的序号)或常数,运算符是算术比较符和逻辑运算符。
- θ连接:
- 等值连接:
- 自然连接:
- 左外连接,右外连接,全外连接:
左外连接同数据库操作LEFT JOIN;右外连接同RIGHT JOIN;全外连接同FULL JOIN,是左外连接和右外连接结果的并集并去重。
5.1.6 安全性控制机制
权限机制,视图机制,数据库加密
5.2 关系数据库
5.2.1 数据库基本操作
5.2.2 函数依赖
5.2.3 求关系的闭包
计算过程:
(A)+ -> (ABC)+ -> (ABCD) = U
计算过程:
(A1)+ -> (A1) ≠U
(A1A2)+ -> (A1A2A3) =U
(A1A3)+ -> (A1A2A3) =U 两个候选码(键)
5.2.4 范式
5.2.4.1 第一范式(1NF)
定义:设R是一个关系模式,R属于第一范式当且仅当R中每一个属性A的值域只包含原子项,即不可分割的数据项。
第一范式不能排除数据冗余和更新异常等问题,因为其中可能存在部分函数依赖。
5.2.4.2 第二范式(2NF)
定义:设R是一个关系模式,R属于第二范式当且仅当R是第一范式,且每个非主属性都完全依赖于候选码。
第二范式也可能存在数据冗余和更新异常等问题,因为其可能存在传递函数依赖。
5.2.4.3 关系模式分解消除部分函数依赖
5.2.4.4 第三范式(3NF)
定义:设R是一个关系模式,R属于第三范式当且仅当R是第二范式,且每个非主属性都非传递函数依赖于候选码。
属于第三范式的关系模式R可能存在主属性对码的部分依赖和传递依赖。
5.2.4.5 关系模式分解消除传递函数依赖
5.2.4.6 巴克斯范式(BCNF)
定义:设R是一个关系模式,F是他的依赖集,R属于BCNF,当且仅当其F中的每个依赖的决定因素比包含R的某个候选码。
一个满足BCNF的关系模式,应具有以下性质:
- 所有非主属性对每一个码都是完全函数依赖;
- 所有非主属性对每一个不包含它的码,也是完全函数依赖 ;
- 没有任何属性完全函数依赖于非码的任何一组属性。
5.2.4.7 消除主属性部分函数依赖和传递函数依赖
5.2.4.8 第四范式(4NF)
设有一关系模式R<U,F>是1NF,如果对于R的每个非平凡多值依赖X->->Y(Y不含于X),X包含了R的一个候选码,则称R是第四范式。
5.2.4.9 判断部分函数依赖技巧
当存在多个属性组的候选码,确定是否存在部分候选码决定其他非主属性的情况;
eg:
候选码为:EM 但是部分候选码E和M决定其他非主属性,即E->N,M->L;
5.2.4.10 判断传递函数依赖技巧
PS:注意候选码的依赖关系。
eg:
候选码:时间,学生
非主属性:课程,教师,成绩,教室
根据伪传递率:若X->Y,WY->Z,则XW->Z为F所蕴含;
时间,学生 -> 教室 => 时间,教室 -> 课程 => 时间,学生,时间 -> 课程 => 课程 -> 教师,即X -> Y => WY -> Z => XW -> Z => X -> Z => Z -> A,则存在传递函数依赖X -> Z => Z -> A,不满足第三范式
5.2.4.11 范式总结
- 判断关系模式中的主键,根据依赖集判断哪些属性没有在依赖集的右侧出现过,即他不能由其他属性所决定,那么主键必须包含此些属性;
5.2.4.12 无损连接和保持函数依赖
无损连接:对关系模式分解时,原关系模式下任一合法的关系实例在分解之后应能通过自然连接运算恢复起来。
保持函数依赖:
5.2.5 数据库设计
5.2.5.1 需求分析阶段
逻辑设计是以需求分析的结果为依据;需求分析阶段的工作以及形成的相关文档作为概念结构设计阶段的依据。
输出成果:需求说明文档、数据字典、数据流程图(数据流图);
5.2.5.2 概念结构设计阶段
E-R图:实体(矩形)、联系(菱形)、属性(椭圆)
联系类型:一对一(1:1)、一对多(1:m)、多对多(m:n)
输出成果:基本E-R图
5.2.5.3 逻辑结构设计阶段
E-R图转为数据模型
一对一联系的转换:
- 方式一(不常用):
厂长 (姓名,性别,年龄)
工厂 (厂号,厂名,地点)
管理 (姓名,厂号,任期)
- 方式二:
厂长 (姓名,性别,年龄,厂号,任期)
工厂 (厂号,厂名,地点)
厂长 (姓名,性别,年龄)
工厂 (厂号,厂名,地点,姓名,任期)
一对多联系转换:
- 方式一:
仓库 (仓库号,地点,面积)
商品 (货号,商品名,价格)
仓储 (仓库号,货号,数量)
- 方式二(将联系归并到多的一方):
仓库 (仓库号,地点,面积)
商品 (货号,商品名,价格,仓库号,数量)
多对多联系的转换:
方式一:
学生 (学号,姓名,性别,年龄)
课程 (课程号,课程名,学时)
选修 ((学号,课程号),成绩)
5.2.6 数据库的控制功能
5.2.6.1 事务管理
特性:
- 原子性:事务是原子的,要么做,要么不做;
- 隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交整个过程,对其他事务都是不可见的;
- 一致性:事务执行的结果必须保证从一个一致性状态编导另一个一致性状态;
- 持久性:事务一旦提交,即使数据库崩溃,对数据库的更新操作也会永久保留。
5.2.6.2 数据库备份与恢复
备份方式:静态存储和动态存储、海量转储和增量转储、日志文件。
恢复的步骤:反向扫描文件日志、对事务的更新操作执行逆操作、继续反向扫描日志文件,查找事务做的其他操作,并做同样处理,直到事务开始的标志。
5.2.6.3 并发控制
- 排他锁(X锁、写锁):其他事务不能对其加任何锁;
- 共享锁(S锁、读锁):其他事务只能对其加共享锁;
5.2.6.4 分布式数据库
分片透明:指用户或应用程序不需要知道逻辑上访问的表具体是怎么分块存储的;
复制透明:指采用复制技术的分布方法,用户不需要知道数据是复制到哪些节点,如何复制的;
位置透明:指用户无须知道数据存放的物理位置;
逻辑透明:指用户或应用程序无需知道局部场地使用的是哪种数据模型;
共享性:指数据存储在不同的结点数据共享;
自治性:指每结点对本地数据都能独立管理;
可用性:指当某一场地故障时,系统可以使用其他场地上的副本而不至于使整个系统瘫痪;
分布性:指数据在不同场地上的存储。
5.3 其他
- 数据模型的三要素为:数据结构、数据操作、完整性约束;