Java教程

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

本文主要是介绍求最小依赖集、求候选码和判断满足第几范式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

求最小依赖集

  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->CAD->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。

这篇关于求最小依赖集、求候选码和判断满足第几范式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!