求最小依赖集、求候选码和判断满足第几范式

求最小依赖集

  1. F中任一函数依赖的右部仅含有一个属性
  2. F中不能存在 函数依赖X->A(此时F与F-{X->A}等价)
  3. F中不能存在 函数依赖X->A(此时A的真子集Z使得F与F-{X->A}∪{Z->A}等价)(左侧单一化)

例题:关系模式R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集。
第一步:得到{A->B,A->C,ABD->C,ABD->E,E->D}
第二部:得到{A->B,A->C,ABD->E,E->D}
第三步:得到{A->B,A->C,AD->E,E->D}

求候选码

  1. 仅在函数依赖集F中的依赖左边出现的属性必定属于候选码;
  2. 仅在函数依赖集F中的依赖右边出现的属性必定是非主属性;
  3. 函数依赖集F中的依赖两边均不出现的属性必定属于候选码;
  4. 函数依赖集F中的依赖两边均出现的属性 与1.3选出的属性进行闭包运算,如果闭包结果为U,即候选码。

判断满足第几范式

  1. 1NF是关系型数据库的基本的要求,如果连这个都不满足的话,就不能称为关系型数据库。
    1NF:所有的属性都不可再分。

  2. 2NF:在1NF的基础上,每一个非主属性完全函数依赖于任何一个候选码
    例子:
    例一:U={A,B,C,D,E},F={AD->E,A->B,AD->B,A->C,AD->C,B->C},那么主码为AD,非主属性为BCE,B、C并不完全依赖于码,不满足2NF。
    例二:U={A,B,C,D,E},F={AB->C,A->D,B->E},那么主码为AB,但是A->D,D仅仅依赖于主码的部分属性A,所以不满足2NF.
    如果所有的候选码都只有一个属性,那么他起码是2NF

  3. 3NF:每一个非主属性既不传递依赖与码,也不部分依赖于码。
    如果非主属性之间存在依赖关系,那么就不是3NF
    例子:
    F={X->Y,X->Z,Y->Z};可以看出,主码为X,但是存在非主属性Z对非主属性Y的依赖,所以不满足3NF.

  4. BCNF:每一个决定因素都包含码
    例子:
    U={S,T,J},F={(S,T)->T,(S,T)->J,T->J}。这里(S,J)和(S,T)都是候选码,但是在函数依赖T->J中,左边没有包含任一候选码(是(S,J)或者(S,T))。所以,该模式不能称为BCNF

例题:设有关系R(A,B,C,D),其函数依赖集F={B->C,C->D,D->A},则关系r至多满足(3NF)。
第一步:求候选码
找出B只在左侧,C,D两侧都有,A只在右侧,对B进行闭包运算,发现不需要(C,D)就可以得到U。得到候选码B。
第二部:判断范式
不满足非属性间得传递性,所以是2NF。

  • 3
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值