数据库规范化大全

ER图是一种关系数据库逻辑设计的一种方法。
Normalization(正规化): 是另一种 关系型数据库的逻辑设计的方法。
normal forms(范式):  1NF---> 2NF---->3NF---->BCNF---->4NF---->5NF

1.不好的数据库会出现的问题:
a.修改异常(anomaly)    b.删除异常           c.插入异常          d.数据冗余(redendant Data)

2.函数依赖:Functional Dependencies
对在R中的属性  a->b 来说,函数依赖就是:一旦a的值确定了,那么就一定能唯一确定b的值
即使不知道b的确切值,但可以明确b只能取一个值

3.阿姆斯特朗公理 :大写字母表示属性集
a.包含规则:若Y属于X,那么X->Y;
b.传递规则:若X->Y,Y->Z,那么X->Z;
c.增广规则:if X->Y then XZ-YZ;
d.合并规则:if X->Y,X->Z,  then X-YZ;
f.分解规则:if X->YZ,  then X->Y,X->Z

4.closure(闭包):

R<U,F>:    R 表示一个关系(表格),F 是函数依赖的集合(有这个的->),U表示属性集合
闭包就是已经上面的一个R,利用阿姆斯特朗公里,通过已知的F函数依赖,推导出所有的函数依赖关系F+

例子:对于关系模式R(ABC),F={A→B,B→C},求F+。

根据FD的定义,可推出F+={φ→φ,A→φ,A→A,A→B,A→C,A→AB,A→BC,A→ABC,…},共有43个FD。其中,φ表示空属性集。

5.属性集的闭包:closure of attributes
 对F中所有X→A的A的集合称为X的闭包,记为X+  .这个就是属性集X的闭包
属性集闭包就是属性集X可以决定的属性。 (通过函数依赖关系F推导)

应用:
a.当X+包含R的所有属性,则X是超键(超码)
b.利用这个还可以验证函数依赖:   验证X->Y是否是F可以推导出来的。若利用F,求X得闭包中,不包含Y,那么不是F推导出来的。
例: 对于关系模式R(ABC),F={A→BC,BC→A},求其候选键。
(1)      求属性的闭包。
A+=ABC,B+=B,C+=C。
(2)      求属性集的闭包。
由BC→A,则(BC)+=ABC,其余属性集闭包为属性闭包的并集。
(3)      求其候选键。
显然,R的候选键为A和BC。


6.函数依赖集的覆盖   cover
有函数依赖集F,G。若说F 覆盖了G,那么也就是说,G属于F+;
若说,F和G等价,也就是说,F+ 与G+相同;

7.求最小的函数依赖集(minamal FD集)的步骤
FD:X->Y

a. 对FD而言,右边的化为单一属性(利用分解定理
b. 对每个FD而言,去掉左边的冗余属性.(利用部分属性可能就可以退出右边了)
c.去掉多余的函数依赖:有些依赖可以通过其他的推导出来


8.正则覆盖:canonical cover  ---FD的左部不重复
在求最小的函数依赖的基础上增加一步:合并函数依赖(利用合并规则)


9.superkey  超码: 超码中的属性可以决定唯一的元组(一行记录),但是可能包含多余属性
candidate key   :  最小的超码,不存在多余属性
primary key:  候选码中选为当主键的就是主码

10.主属性:出现在候选码中的属性
      非主属性 :没有出现在任何候选码中的属性

11.对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:
    L类  仅出现在函数依赖左部的属性。
    R 类  仅出现在函数依赖右部的属性。
    N 类  在函数依赖左右两边均未出现的属性。
    LR类  在函数依赖左右两边均出现的属性。
若X(X∈R)是L类属性,则X必为R的任一候选码的成员。 
若X(X∈R)是N类属性,则X必包含在R的任一候选码中。 
若X(X∈R)是R类属性,则X不在任何候选码中。


12. 根据DF求解候选码的算法:






1.范式:
1NF:属性不可分解,都是原子属性
2NF:完全依赖(去除非主属性对码的部分依赖):就是说去除左边的多余属性。
3NF:去除非主属性对非主属性的依赖  若a->b,  b为非主属性,那么a不是是非主属性
BCNF:去除主属性对主属性的依赖
4NF:去除多值依赖


多值依赖:multivaluted dependency


2.无损分解  Lossless Decompositions
设ρ={R1,R2}是关系模式R的一个分解,F是R上成立的FD集,那么分解ρ相对于F是无损分解的充分必要条件是:
R1∩R2->R1或R1∩R2->R2,即:  R1和R2的属性集的交集,能够在F中推导出R1或R2的属性集

3.依赖保持 dependency preservation
设关系模式R具有属性集U和函数依赖集F,ρ=(R1,...,Rk)是R的一个分解,Ui是Ri的属性集,Fi是F在Ui的投映。
若F+=F1 ∪F2∪..∪FK ,则称分解ρ具函数依赖保持性.


4.函数依赖分类:
完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值