范式优化
概念
主码:从一个关系中的候选码选出一个作为主码
候选码:表中的某个属性或/属性组可以唯一确定一个元组
1)一个关系表中可以有多个候选码,但只能有一个主码
数据字典:系统中各类数据描述的集合,用于存储和检索各种数据描述
数据字典 | 意义 |
---|---|
数据项 | 数据的最小单位(不可再分的数据单位) 组成:数据项名,数据项含义说明,别名,数据类型,长度 |
数据结构 | 数据之间的组合关系 (一个数据结果可以由若干数据项(数据结构)组成) 组成:数据结构名,含义说明,数据组成(数据项/数据结构) |
数据流 | 可以是数据项,也可以是数据结构 组成:数据流名,说明,数据流来源,数据流去向,数据组成 |
数据存储 | 处理过程中要存储的数据(手工文档或计算机文档) 组成:数据存储名,说明,编号, 输入的数据流,输出的数据流,数据组成 |
处理过程 | 处理逻辑一般用判定表或判定树来描述 过程:处理过程名,说明,输入数据流,输出数据流,处理说明 |
1)实体:客观存在、可相互区分的现实世界对象的集合
2)属性:实体所具有的某一特性(有“型”和“值”之分)
3)联系:实体内部的联系(组成实体的各属性之间的联系)
实体之间的联系(不同实体型之间的联系)
4)码(键):唯一标识实体的属性集
5)域:属性的取值范围
//联系分为:一对一、一对多、多对多(且联系也可以具有属性)
//实例:实体中每个具体的记录值
图形方式表示各个概念:
关系模型
关系模型:关系名(属性1,属性2,······属性N)
1)关系:一张表
2)元组:表中的一行
3)属性:表中的一列
4)分量:元组的一个属性值
5)域:属性的取值范围
关系的每一个分量必须是一个不可分的数据项(表中不能还有表),关系模型的三类完整性:
1)实体完整性(行完整性):主要依赖主码约束实行;
2)参照完整性:主要依赖外码约束实现(属于表间规则,涉及表之间的参照);
3)用户定义的完整性
E-R图
E-R图转换成关系模式:
1、 一个一对一联系转换为一个关系模式;
2、 转换为一个独立的关系模式;
关系的属性:与该联系相连的各实体的码以及联系本身的属性
关系的候选码:每个实体的码均是该关系的候选码 3、 与某一端对应的关系模式合并;
合并后关系的属性:加入另一端实体的码和联系本身的属性
合并后关系的码:不变
4、 一个一对多联系转换为一个关系模式;
5、 转换为一个独立的关系模式;
关系的属性:与该联系相连的各实体的码以及联系本身的属性
关系的码:N端实体的码 6、 与N端对应的关系模式合并;
合并后关系的属性:在N端对应的关系模式中加入1端关系的码和联系本身的属性
合并后关系的码:不变 7、 一个多对多联系转换为一个关系模式;
关系的属性:与该联系相连的各实体的码以及本身的属性
关系的码:各实体码的组合
数据依赖
用规范化理论改造关系模式,消除其中不合适的数据依赖
R(U,D,dom,F)
1)R:关系名;
2)U:属性集合;
3)D:属性来自的域;
4)dom:属性向域的映射;
5)F:属性间数据的依赖关系
数据依赖:关系内部属性与属性之间的一种约束关系
1)完整性约束的一种表现形式
依赖分为:函数依赖
(FD)和多值依赖
(MVD)
1)不合适的数据依赖会导致关系模型的异常
不平凡函数依赖:X→Y,且Y不是X的子集
1)反之为平凡函数依赖
完全函数依赖(F表示):(X,Z)→Y,且X和Z都不能单独确定Y
1)反之为部分函数依赖(P表示)
传递函数依赖:X→Z,Z→Y,则X→Y
1)之为直接依赖函数
范式
主属性:包含在任何候选码中的属性
非主属性:不包含在任何候选码中属性(全码没有非主属性)
范式:符合某一种级别的关系模式的集合
第一范式(1NF):所有属性都是不可分割的基本数据项
第二范式(2NF):每一个非主属性完全函数依赖于码
第三范式(3NF):不存在传递函数依赖于码
BC范式(BCNF):每个非平凡函数依赖的决定因素都含码
第四范式(4NF):不允许有非平凡且非函数依赖的多值依赖
第五范式(5NF):关系模式R中的每一个连接依赖均由R的候选码所隐含
1)2NF∈1NF,3NF∈2NF(以此类推,1NF是最大的范式)
2)范式间的转化:低→高(分解),高→低(连接)
3)分解要具有无损连接性