1:什么候選鍵
要是不懂的朋友氛魁,但是又迫切想知道但是很懶的不想再查找的呢 可以看這個(gè)文章
2:怎么求候選鍵
在求候選鍵之前先要講講閉包:
當(dāng)然也是這種概念的東西可以參考這個(gè)文章、
例(1): 設(shè)有關(guān)系模式R(U厅篓,F(xiàn))秀存,其中U={A,B羽氮,C档押,D,E腕窥,I}筛婉,F(xiàn)={A→D爽撒,AB→E,BI→E安寺,CD→I挑庶,E→C}迎捺,計(jì)算(AE)+
解:閉包我覺得就是推關(guān)系凳枝,看能不能根據(jù)給定的元素岖瑰,推演出全部的元素
在題中蹋订,給定了 開始推演的元素 就是AE刻伊,
那就從AE開始:
忘了講一個(gè)問題: 在上面的題中 A-> D 代表的意思的就是 A能推出B智什。我們把 A 叫做 前繼 節(jié)點(diǎn)荠锭。把B叫做 后繼節(jié)點(diǎn)
AE 就是 前繼節(jié)點(diǎn)的集合 晨川。
(1) 首先,在給定的關(guān)系 F 中找 前繼節(jié)點(diǎn)有沒有是 前繼節(jié)點(diǎn)的子集的吼鳞。A->D , E->C 就是我們找到的兩個(gè)關(guān)系式叫搁,將找到的兩個(gè)關(guān)系中的后繼節(jié)點(diǎn)(也就是C疾党,D) 并到前繼節(jié)點(diǎn)集合中去雪位。則
(2)現(xiàn)在前繼節(jié)點(diǎn)的集合就是AECD了
然后繼續(xù) (1)中的步驟雹洗,一直到前繼節(jié)點(diǎn)集合中的元素是所有節(jié)點(diǎn)就好了卧波。則表示為 (AE)? = ACDEI港粱。那(AE)的閉包就是ACEDI
接下來就可以安安心心的將怎么求了查坪?
看題:
例1:R<U,F>,U=(A,B,C,D,E,G),F={AB-->C,CD-->E,E-->A.A-->G},求候選碼偿曙。
利用閉包來求解
首先先要講幾個(gè)規(guī)則
在關(guān)系式中 F 隨便一個(gè)關(guān)系 例如 AB->C 中我們把 講出現(xiàn)在 -> 左邊的節(jié)點(diǎn)叫做 左節(jié)點(diǎn)遥昧。同樣的朵纷,在右邊的節(jié)點(diǎn)我們叫做右節(jié)點(diǎn)袍辞。
1. 只在左邊的出現(xiàn)的節(jié)點(diǎn)一定存在于中候選鍵搅吁。(也就是候選鍵的一個(gè)一部分或者全部)
2. 只在右邊出現(xiàn)的節(jié)點(diǎn)一定不是候選鍵。(啥都不是溃斋,它只能被候選鍵推導(dǎo)出來 梗劫。是個(gè)鐵廢物)
3. 兩邊都沒有出現(xiàn)的節(jié)點(diǎn)梳侨,一點(diǎn)存在于候選鍵中日丹。
4. 在左邊出現(xiàn)的節(jié)點(diǎn)(除了只在左邊出現(xiàn)的節(jié)點(diǎn)丙躏,也就是它可能在右邊也出現(xiàn)過)這樣的節(jié)點(diǎn)呢彼哼?有待觀察湘今。
下面就來解答:
1: 在題中先在到只在左邊出現(xiàn)的元素 ? ? 就是BD
2: BD 肯定是在候選鍵中拴签,那它是不是候選鍵呢蚓哩?我們利用閉包來檢查一下上渴,(BD)? = BD
現(xiàn)在BD推不出全部的元素
3:現(xiàn)在在繼續(xù)看稠氮,G 赃份,出現(xiàn)在右邊,那它肯定不是候選鍵
4: 現(xiàn)在找在右邊出現(xiàn)的元素(但是不包含只在右邊出現(xiàn)的元素) 那就是ACE 這三個(gè)可能是候選鍵纠永,要檢查檢查,讓他們分別和BD結(jié)合英上,求閉包看能不能推出全部的元素
- 開始檢查:
- ABD, 利用閉包檢查少态,(ABD)? = ABCDEG
- CBD, 利用閉包檢查 彼妻,(CBD)? = ABCDEG
- BDE, 利用閉包檢查侨歉, (BDE)? = ABCDEG
則這個(gè)題中的三個(gè)候選鍵就是 ABD幽邓,CBD牵舵,BDE畸颅。
OKOK没炒。
參考這個(gè)文章送火、