4、 改进的第三范式:
(1) 定义:如果关系模式R是1NF,且每个属性既不相存在部分函数依赖也不存在传递函数依赖于候选码,则称R是改进的第三范式(BCNF)。
5、 多值依赖与4NF:
(1) 多值依赖:表示关系中属性(如A、B、C)之间的依赖,对于A的每个值,都存在一个B或C的值的集合,而且B和C的值相互独立,记为:AààB、AààC
(2) 第四范式:如果关系模式R属于1NF,对于R的每个非平凡的多值依赖XàY(Y不属于X),X含有候选码,则R是第四范式。即是从BCNF范式中消除主码内的独立依赖集(非平凡多值依赖)可达4NF;
6、 连接依赖与5NF
(1) 连锁依赖:设关系模式R,R的属性子集为R1、R2、R3、R4、R5、R6、R7….,当且仅当R的每个合法值等于R1、R2、R3、R4、R5、R6、R7…的投影连接时,称R满足连接依赖;
(2) 第五范式:设R是一个满足5NF的关系模式,当且仅当R的每一个非平凡连接依赖都被R的候选码所蕴含,即从4NF中消除非候选码所蕴含的连接依赖为5NF;
7、 总结:
(1) 范式表达了关系模式满足的条件,也是衡量关系模式设计优劣的标准;
(2) 利用范式进行规范化设计的目的是消除数据冗余,避免出现异常,使结构更合理;
(3) 规范化设计的基本过程是对关系进行的分解,消除属性间不合理的数据依赖,用一组等价的子关系代替原有的关系;
(4) 数据库规范化的程序越高,其关系表就越多,从而增加了表之间连接运算的代价,影响了数据库的执行速度和性能。所以通常关系模式规范化工作仅做到3NF,这样既使关系中不合理的属性基本消除,规范化程度也不太高,保证数据库有较好的性能。
5.4 数据库模式设计
5.4.1 初始关系模式的设计
1、 把ER图转换成关系模式:
(1) 把ER模型中的每个实体集转换成一个同名的关系,实体集的属性就是关系的属性,实体集的码就是关系的码;
(2) 把ER模型中的每个联系转换成一个关系,与该联系相连的各实体集的码以及联系的属性转换成为关系的属性。
(A) 若联系为1:1,则每个实体集的码均是该关系的候选码;
(B) 若联系为1:n,则关系的码为n端实体集的码;
(C) 若联系为m:n,则关系的码为各实体集码的组合;
(3) 合并具有相同码的关系
2、 检查确认对象:检查转换后的每个关系名和属性名是否符合数据库设计关于统一命名的约定;
5.4.2 优化关系模式
1、 模式分解原则:
(1) 分解具有无损连接性:分解后的关系能够恢复成原来的关系;
(2) 分解保持函数依赖:
(A) 无损连接和保持函数依赖是用于衡量一个模式分解是否导致原有模式中部分信息丢失的两个标准;
(B) 当一个关系被分解后会出现几种结果,既有无损连接,又能保持函数依赖是较理想的分解结果,意味着在分解的过程中没有丢失原有模式的任何信息;
(C) 一般情况下,分解到3NF就足够了,但在3NF关系下,仍存在一定程度上的更新异常或不一致的隐患,但与数据库性能比较起来是可以忽略的,因为在数据库设计过程中通过增加一些数据约束,就可以解决3NF引起的数据问题了。
3、 优化属性:确定各字段的类型和长度;
4、 确认模式满足需要:
5.4.3 数据完整性设计
1、 指定义数据库中存储的数据值满足的约束条件,通过对存储的数据值的约束维护关系的完整性。
2、 数据值满足条件分为:
(1) 域约束:限制指定列的取值及范围;
(2) 主码约束:定义每个关系的主码值不空,且惟一;
(3) 引用完整性约束:定义不同模式的属性间满足的条件,及一个关系模式中属性间可能满足的条件;
5.4.4 安全模式和外模式的设计
1、 根据选定的DBMS支持的安全控制特征来确定;
2、 根据不同用户对数据库存取特点定义相关的外模式;
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |