1. 基础概念
- 关系数据库模式:在一个关系数据库应用系统中,构成该系统的关系数据库的全局逻辑结构(逻辑模式)的基本表的全体
- 关系模式由五部分组成,即它是一个五元组:
R(U, D, DOM, F)
R: 关系名
U: 组成该关系的属性名集合
D: 属性组U中属性所来自的域
DOM: 属性向域的映象集合
F: 属性间数据依赖的集合
1.1 码的概念
- 超码:标识一个元组所用的属性集
- 候选码: 标识一个元组所用最少属性的集合
- 主码:候选码中的一个
- 主码和候选码都可以简称为码
- 主属性:包含在任何一个候选码中的属性
- 非主属性:不包含在任何一个候选码中的属性
- 全码:候选码是整个属性集
1.2数据依赖
-
数据依赖:一个关系内部属性与属性之间地一种约束,这种约束关系是通过属性之间地值是否相等体现出来的
-
数据依赖中最重要地两部分:
- 函数依赖
- 多值依赖(这里不讲)
-
函数依赖:设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X.记做X->Y.
-
若X——>Y, Y——>X , X<——>Y
-
若X→Y且X不包含Y称,则此X→Y为非平凡函数依赖
-
若X→Y且X包含Y,则此X→Y为平凡函数依赖
-
完全函数依赖:若X——>Y,X’是X的真子集,存在X——>Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
-
部分全函数依赖:若X——>Y,X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
-
传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y⊈X and Y !→X),Y→Z,则称Z传递函数依赖于X。
2. 范式(NF)
一范式:符合1NF的关系中的每个属性都不可再分
二范式:在1NF的基础上,非主属性必须完全依赖于候选码
三范式:在1NF基础上,任何非主属性不依赖于其它非主属性
BC范式:在1NF基础上,如果对于R的每个函数依赖X→Y,X必含有候选码,那么R是BCNF。即在3NF基础上,R只有一个候选码
3. 规范化
- 为什么要规范化设计数据库模式,因为一个不好的数据库模式容易出现以下问题:
- 数据冗余:信息被重复存储,导致浪费大量存储空间。
- 更新异常:当一个副本被修改,所有副本都必须修改。当更新数据时,系统要付出很大的代价来维护数据的完整性,否则会面临数据不一致的危险。
- 插入异常:只有当一些信息事先已经存放在数据库中时,另外一些信息才能存入数据库中
- 删除异常:删除某些信息时可能丢失其它信息。
而一个好的模式要尽可能地少出现这些问题。因此我们需要通过规范化来改造数据库模式,一个办法:分解原有的模式来使得分解后的模式范式级别提高并减少不合适的数据依赖