数据依赖使关系规范化的基础
逻辑蕴含
定义:
对于满足一组函数依赖F的关系模式R<U,F>,其任何一个关系r,若函数依赖X->Y都成立,(即r中任何里任何个二元组t,s,若t[X]=s[X],则t[Y]=s[Y]),则称F逻辑蕴含X->Y)
显示的逻辑蕴含(直接的函数依赖)与隐式的逻辑蕴含(推导的函数依赖)
ArmStrong公理系统
自反律:若Y<X<U,则X->Y为F所蕴含
增广律:若X->Y为F所蕴含,且Z<U,则XZ->YZ为F所蕴含
传递律:若X->Y及Y->Z为F所蕴含,则X->Z为F所蕴含
ArmStrong公理系统三条推理规则
合并规则:由X->Y,X->Z,有X->YZ
伪传递规则:由X->Y,WY->Z,有XW->Z
分解规则:由X->Y及Z<Y,有X->Z
根据合并规则和分解规则:
X->A1A2…Ak成立的充分必要条件使X->Ai成立(i=1,2,3,…,k)
闭包问题
已知关系模式R<U,F>,其中
U={A,B,C,D}
F={AB->C,B->D,C->E,EC->B,AC->B}
求(AB)F+
第一次(AB)F(0)={A,B}
第二次(AB)F(0)={A,B,C,D}
第三次(AB)F(0)={A,B,C,D,E}
所以(AB)F+={A,B,C,D,E}
等价函数依赖集
如果G+=F+,就称函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价
极小函数依赖集
极小函数依赖集F需满足如下条件
(1)F右部仅包含一个属性
(2)F不存在函数依赖X->A,使得F与F-{X->A}等价
(3)F不存在这样的函数依赖X->Z,X有真子集Z使得F-{X->A}U{Z->A}与F等价
构造过程
(1)被决定因素最小化
(2)函数依赖数目最小化
(3)决定因素最小化
求解极小函数依赖的方法,去掉当前函数依赖,判断被决定属性是否能被(决定因素)推导出来或是是否属于决定因素构成的闭包,如果成立,返回看之前去掉的函数依赖是否成立,如果成立则去掉,不成立则不去掉
求F={A->B,B->A,B->C,A->C,C->A}的极小函数依赖
第一个函数依赖A->B:(A)F+={A,C},B不属于(A)F+,A->B不能被去掉
第二个函数依赖B->A:(B)F+={A,B,C},A属于(B)F+,B->A能去掉
第三个函数依赖B->C:(B)F+={B},C不属于(B)F+,B->C不能被去掉(第二个函数依赖
已经被去掉)
第四个函数依赖A->C:(A)F+={A,B,C},C属于(A)F+,A->C能被去掉
第五个函数依赖C->A:(C)F+={C},A不属于(C)F+,C->A不能被去掉(第二个函数依赖
第三个函数依赖已经被去掉)
所以极小函数依赖为{A->B,B->C,C->A}
极小函数依赖集不唯一,每个极小函数依赖集中的函数依赖个数也不一定都是相同,
就像我在求极小函数依赖集的时候,后面的函数依赖受到前面的函数依赖的影响,
如果从后往前看得到的函数依赖集可能与我们得到的极小函数依赖集不同,但是按
照相同的顺序得到的极小函数依赖集肯定是相同的