數(shù)據(jù)庫求候選碼例題詳解 候選關(guān)鍵字的快速求候選碼的方法?
候選關(guān)鍵字的快速求候選碼的方法?首先,對于給定的R(U)和一組函數(shù)依賴項F,其屬性可以分為四類:類L,它只出現(xiàn)在F的函數(shù)依賴項的左側(cè)。R類,它只出現(xiàn)在F函數(shù)依賴項的右側(cè)部分。類n,不出現(xiàn)在F函數(shù)依賴關(guān)
候選關(guān)鍵字的快速求候選碼的方法?
首先,對于給定的R(U)和一組函數(shù)依賴項F,其屬性可以分為四類:類L,它只出現(xiàn)在F的函數(shù)依賴項的左側(cè)。R類,它只出現(xiàn)在F函數(shù)依賴項的右側(cè)部分。類n,不出現(xiàn)在F函數(shù)依賴關(guān)系的左、右部分中的屬性。LR類,出現(xiàn)在F函數(shù)依賴關(guān)系的左、右部分的屬性。根據(jù)下面的定理和推論,求解候選碼。定理1:對于給定的關(guān)系模式R及其函數(shù)依賴集F,如果x(x∈R)是L類的屬性,則x必須是R的任何候選碼的成員。推論1:對于給定的關(guān)系模式R及其函數(shù)依賴集F,如果x(x∈R)是L類的屬性,且x包含R的所有屬性,則x定理2:對于給定的關(guān)系模式R及其函數(shù)依賴集F,如果x(x∈R)是類R的一個屬性,則x不在任何候選代碼中。定理3:如果存在一個關(guān)系模式R及其函數(shù)依賴集F,那么如果x是R的n類屬性,則x必須包含在R的任何候選代碼中。推論2:對于給定的關(guān)系模式R及其函數(shù)依賴集F,如果x是由R的n類和l類組成的屬性集,并且x包含R的屬性,則x是R的唯一候選。例如:如果關(guān)系模式R(U)被設(shè)置,它的函數(shù)依賴集是f,其中U={a,B,C,D,e},f={a→C,C→a,B→AC,D→AC}找到R的候選代碼。解決方案:根據(jù)函數(shù)依賴,我們可以得到屬性B和D是L類,e是n類,所以屬性B,D和e必須是候選代碼的成員,并且這三個屬性的閉包:B=ABC,(BD)=ABCD,(BDE)=ABCDE。根據(jù)推論2,我們可以得到BDE是R的唯一候選碼,所以R的候選碼是BDE。如果移除示例中關(guān)系模式R(U)中的屬性E,則可以獲得R的候選代碼。根據(jù)推論1,BD是R的唯一候選碼,該快速求解方法適用于判斷屬性是屬于l類、n類還是其中一類。如果存在L類和n類屬性,則求解候選代碼的速度非常快。簡言之:l,R,N,LR。根據(jù)該定理,類L和N必須是候選碼之一。如果l包含所有r,那么l是唯一的候選者。類R不在任何候選代碼中。Ln類和(Ln)包含所有r,則Ln是唯一的候選。(適用于L型和n型中至少有一種的情況。)
數(shù)據(jù)庫的關(guān)系中如何確定候選碼?
1。當數(shù)據(jù)庫代碼
代碼是數(shù)據(jù)系統(tǒng)中的一個基本概念。所謂代碼是能夠唯一標識實體的屬性。它是整個實體集的屬性,而不是單個實體的屬性。它包括超級代碼、候選代碼和主代碼。
2. 什么是超代碼
超代碼是一個或多個屬性的集合,允許我們唯一地標識實體集中的實體。如果它是一個超級Q碼,它也是一個超級Q碼集。否則,它就是一個超級Q碼集。一般來說,主代碼應(yīng)該選擇從不更改或很少更改的屬性。
4. 如何確定候選代碼
(1)如果某個屬性未出現(xiàn)在函數(shù)依賴集中,則該屬性必須包含在候選代碼中;](2)如果某個屬性未出現(xiàn)在函數(shù)依賴集中任何函數(shù)依賴的右側(cè),則該屬性必須包含在候選代碼中;](3)如果某個屬性僅出現(xiàn)在函數(shù)依賴集中在函數(shù)依賴集的左側(cè),它必須包含在候選代碼中。
(4)如果一個屬性或?qū)傩越M可以唯一地標識一個元組,則它是一個候選代碼
5。確定候選代碼的示例
例如,如果一個學(xué)生是一個實體,那么這個學(xué)生集就是一個實體集,超代碼用于區(qū)分學(xué)生集中的不同學(xué)生。假設(shè)學(xué)生(實體)有多個屬性:Student ID、ID number、name、gender。因為身份證號ID number name是唯一的學(xué)生,所以{student ID}是一個超級碼,同樣的號碼{student ID,ID number},{student ID,ID card number,name},{student ID,ID card number,name,gender},{ID card number,name},{ID card number,name,gender}也是超級碼。在這里,因為不同的學(xué)生可能有相同的名字,一個學(xué)生不能用他的名字來區(qū)分。{name}和{gender},{name,gender}都不是超代碼。只有{student ID}、{ID number}是候選代碼。
6. 求和
求和:所有代碼都是一個集合。所有可用于標識實體集中唯一實體的集合都是超代碼。如果任何超碼的適當子集不能包含超碼,則稱之為候選碼。數(shù)據(jù)庫設(shè)計器選擇的候選代碼,用于區(qū)分同一實體集中的不同實體。超級代碼包括候選代碼,候選代碼包括主代碼。
希望對您有所幫助,謝謝
候選關(guān)鍵字的多屬性依賴集候選碼求解法?
輸入:關(guān)系模式R及其函數(shù)依賴集F。輸出:R的所有候選代碼。具體步驟:
1)將R的所有屬性劃分為L、R、N和LR,讓x表示L、N和Y表示LR。
2)找到x,如果x包含R的所有屬性,那么x是R的唯一候選代碼,轉(zhuǎn)到(5);否則,轉(zhuǎn)到(3)。
3)從y中獲取屬性a并查找(XA)。如果它包含R的所有屬性,則轉(zhuǎn)到(4);否則,交換一個屬性并重復(fù)該過程,直到嘗試y中的所有屬性。
4)如果找到了所有候選代碼,請轉(zhuǎn)到(5);否則,依次轉(zhuǎn)到2、3和Y查找它們的屬性閉包,直到它們的閉包包含R的所有屬性。
5)停止,輸出結(jié)果。簡言之:取一個X屬性(X是l,n類)作為閉包,如果它包含R的所有屬性,那么它是代碼,否則取LR類a的Y屬性,找到XA閉包,如果它不包含R的所有屬性,那么替換a,如果它包含R的所有屬性,并且找到所有代碼,那么它結(jié)束,否則,取2,依次為3。
數(shù)據(jù)庫的關(guān)系中如何確定候選碼?
(1)如果某個屬性未出現(xiàn)在函數(shù)依賴集中,則該屬性必須包含在候選代碼中;(2)如果某個屬性未出現(xiàn)在函數(shù)依賴集中任何函數(shù)依賴的右側(cè),則該屬性必須包含在候選代碼中;(3) 如果一個屬性只出現(xiàn)在函數(shù)依賴集的左側(cè),那么它必須包含在候選代碼中。(4) 如果一個屬性或?qū)傩越M能夠唯一地標識一個元組,那么它就是一個候選代碼;