引言
- 从这部分开始,我们就开始进入数据库设计与应用开发篇,具体知识网络如下
- 第四章和第五章作为理解内容,之后看情况补充
问题的提出
- 关系数据库的逻辑设计
- 数据依赖
- 数据依赖是完整性约束的表现形式,数据内在的联系
- 数据依赖类型
- 函数依赖
- 多值依赖
- 数据依赖对关系模式的影响
- 关系模式中的问题
-
-
- 数据冗余太大(次要)
- 更新异常:例如新插入刚成立的系,系里面没有主任,因此不能确定系主任
- 插入异常
- 删除异常
- 通过分解关系模式来消除其中不适合的数据依赖
-
规范化(范式)
- 用规范化看关系模式好坏与否
- 函数依赖
- 定义:在X中一个行给一个a,能确定一个y,在另一个行中a仍能确定y,记作X—>Y
- 函数依赖来源于现实世界,可能会多加约束条件
- 函数依赖分类★
- 非平凡函数依赖和平凡函数依赖
-
-
- 完全函数依赖与部分函数依赖★
-
-
-
- 传递函数依赖★
-
- 码
- 定义:设K为R<U,F>中的属性或属性组合。若K完全依赖U, 则K称为R的侯选码
- 主属性:候选码中的属性
- 非主属性:非候选码中的属性
- 全码:整个属性组是码
- 外码
- 范式★
- 范式是一个标准,符合某一级别的关系模式的集合
- 范式种类
- 范式基础:函数依赖
- 使用范式步骤:确定码,确定主属性和非主属性,确定函数依赖
- 各种范式之间的联系:
- 规范化:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合
- 1NF★
- 定义:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
- 关系数据库必须满足1NF
- 2NF★
- 定义:若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF
- 有单码的关系模式一定满足第二范式
- 在分解的若干个关系模式中必须保证有公共属性
- 2NF并不能完全消除关系模式数据冗余和异常
- 3NF★
- 定义:在2NF基础上非主属性不能有传递依赖,则R∈3NF
- 3NF并不能完全消除关系模式数据冗余和异常
- BCNF★
- 定义:在3NF基础上一个关系依赖里面每一个决定因素都包含码,即没有其他决定因素
- 实际中很难到达BC范式,已经解决了操作异常问题
- BCNF实际上是对第三范式的修正和补充
- 4NF(了解性)
- 第四范式是多值依赖的问题,函数依赖的问题之前已经解决
- 4NF之前是函数范式范畴,4NF是多值依赖范畴
- 多值依赖
- 有数据冗余问题的时候,对数据操作访问的元组比较多
- 定义:对于给定的(X,Y)值,决定的Z的值仅仅与X有关,而与Y无关
- 多值依赖分类
- 平凡多值依赖:Z为空集,平凡多值依赖无意义
- 非平凡多值依赖
- 多值依赖是对三个属性的操作
- 多值依赖具有对称性,传递性
- 函数依赖是多值依赖的特殊情况
- 多值依赖导致数据冗余
- 4NF定义:不能有非平凡且非函数依赖的多值依赖,允许的是左部必须包含码的函数依赖
规范化小结
- 规范化是数据库逻辑设计的工具
- 目的是尽量消除操作异常和冗余