正則覆蓋與候選碼

2021-10-05 03:24:17 字數 1783 閱讀 3796

一般用fc表示。具有如下性質:

正則覆蓋結果不唯一。

其中的乙個方法:

把右部分化為單屬性

去掉左部分的冗餘屬性

比如ab->c

假設a冗餘,那麼看是否b+包含c

假設b冗餘,…

去掉冗餘的函式依賴

合併函式依賴

簡單例子:

模式(a,b,c)上的函式依賴集f:

a->bc

b->c

a->b

ab->c

把右部分化為單屬性後

a->b

a->c

b->c

ab->c

去掉左邊冗餘屬性後,

a->b

a->c

b->c

去掉冗餘函式依賴後

a->b

b->c

合併a->b

b->c

即得正則覆蓋

關係模式r(a,b,c,d,e)的函式依賴集f:

a->bc

cd->e

b->d

e->a

右部分化為單屬性後,

a->b

a->c

cd->e

b->d

e->a

去掉左邊冗餘屬性

a->b

a->c

cd->e

b->d

e->a

去掉冗餘函式依賴

a->b

a->c

cd->e

b->d

e->a

合併a->bc

b->d

cd->e

e->a

函式依賴集f:a->bcd,bc->de,b->d,d->a

右部分化為單一屬性

a->b,

a->c,

a->d

bc->d,

bc->e

b->d

d->a

去掉左部冗餘屬性以及冗餘函式依賴

a->b,

a->c,

b->d,

d->a

b->e(由bc->e得出,b+=bdace)

合併a->bc

d->a

b->ed

關係模式r

lhsa:屬性只出現在函式依賴集中的左部分。

rhsa:屬性只出現在函式依賴集中的右部分。如a->bc,則b和c為rhsa

lrsh:出現在左右部分的。

nona:沒有出現在函式依賴集中屬性的集合。

構造lhsa和nona集合,構成並集x。如果x的閉包為u,則完畢。否則執行2

對於lrsh中每個屬性a,如果ax的閉包是u,加到答案中且lrsh-

對於lrsh中的每兩個屬性z,如果zx的閉包是u,加到答案中。

對於lrsh中每3個,每4個。。。。屬性z,如果zx的閉包是u,加到答案中.

例子:u=,f=

lhsa=,nona=,顯然a的閉包不是候選碼

lrsh=,由於ab,ac,ae的閉包都是u,所以都是候選碼。此時lrsh為空,結束

故候選碼為ab,ac,ae.

設關係模式r=(a,b,c,d,e,f),

函式依賴集f=,求r 的候選碼

lhsa=, rhsa=

觀察ad,bd,ce,ed ,得到ad的閉包為r. 去掉a之後的lrsa=

觀察bcd,bed,ced,得到 bcd,bed的閉包為r

觀察bced,他的閉包是r,但由於包含候選碼bcd,bed,所以他是個超碼,去掉

得到候選碼為ad,bcd,bed

候選碼練習

1.左邊集合為,右邊集合為。可知bd只在左邊出現,一定為候選碼的一部分,bd bd g只在右邊出現,一定不在候選碼中。2.bd與a組合,求abd的閉包 abd abd ab c abd abcd cd e abd abcde a g abd abcdeg u,因此abd為候選碼 bd與c組合,求bc...

碼 主碼 候選碼辨析

三者定義 碼 表中的某個屬性組,它可以唯一確定乙個元組。候選碼 若關係中某一屬性組的值能唯一的標識乙個元組,則稱該屬性組為候選碼。主碼 若乙個關係有多個候選碼,擇選其中乙個為主碼。候選碼中的所有屬性都是必須的,即只有這些屬性在一起時才能確定下乙個元組,而碼卻沒有最少屬性的要求。例如在學生表s中有如下...

求候選碼,3NF與BNCF分解

求候選碼 關係模式r lhsa 屬性只出現在函式依賴集中的左部分。rhsa 屬性只出現在函式依賴集中的右部分。如a bc,則b和c為rhsa lrsh 出現在左右部分的。nona 沒有出現在函式依賴集中屬性的集合。構造lhsa和nona集合,構成並集x。如果x的閉包為u,則完畢。否則執行 對於lrs...