3nf演算法
Ⅰ 資料庫系統系統原理,關系模式方面問題
Q1:問第三題具體是該如何實現的?
A1:第三題可採用保持函數依賴的分解演算法。
Q2:第三題問題將R分解成等價的3NF,是不是說R分解出來的所有關系模式都必須是3NF的?
A2:可以說模式分解後的關系模式一定是3NF的,其中:
1.保持函數依賴的分解一定是3NF,但不一定是BCNF。
2.既保持函數依賴又有無損連接性的分解一定是3NF,但不一定是BCNF。
3.具有無損連接性的分解,一定可達到4NF。
Q3:第一範式,第二範式都能理解,那麼第三範式是在第二範式的基礎上,增加了什麼條件?
A3:第三範式是在第一模式的基礎上,消除了每一個非主屬性與碼的傳遞依賴,比如X→Y,Y→Z,這里就是Z傳遞依賴於X。
Q4:以R1(Sno, Cno, G)為例,由於(Sno,Cno)-->G,但是並不能確定G就一定不能決定(Sno,Cno),所以R1就是第三範式。這樣理解對不對?
A4:以R1(Sno, Cno, G)為例,由於(Sno,Cno)-->G,這里只有(Sno,Cno)決定G這一個函數依賴,此例G完全依賴於(Sno,Cno),並不存在傳遞依賴,決定因素也只有碼(Sno,Cno)一個,所以R1是BCNF範式,自然也是第三範式。(ps:4NF多值依賴這一塊我還在理解,如果僅僅R(Sno,Cno,G),F={(Sno,Cno)-->G}這個條件的話我認為是屬於4NF的,等我理解了再來補答~)
Ⅱ 設有關系R如下表所示,則該關系R最高為哪一級範式 A.1NF B.2NF C.3NF D.BCNF
解:1、在函數依賴集F中,未被函數決定的屬性有:CE,必包含於碼中。∵(CE)+=CEDBA=U∴候選碼只有:CE∵E→D屬性D部分依賴與碼CE,∴R是1NF2、依賴集F已經是極小依賴集,且所有屬性都在依賴中出現,根據保持函數依賴地轉換成3NF的演算法,將每個函數依賴中包含的屬性組成一個關系模式,得到分解:{AD,ED,DB,BCD,ACD}因為AD包含於ACD中,去掉AD得:{ED,DB,BCD,ACD}因為AD包含於ACD中,去掉AD得:再並上一個候選碼{CE}得到即保持函數依賴又有無損連接性的分解:{ED,DB,BCD,ACD,CE}3、∵碼是CE,F={A→D,E→D,D→B,BC→D,DC→A}R不是BCNF。任選一不符合BCNF要求的函數依賴:A→D進行分解得:R1(AD)F1={A→D}碼是A,該模式是BCNFR2(ABCE)F2={CE→A,A→B}碼是CE,該模式不是BCNF,繼續分解選A→B分解得:R21(AB)F21={A→B}碼是A,該模式是BCNFR22(ACE)F22={CE→A}碼是CE,該模式是BCNF具有無損連接性的BCNF分解為:{R1,R21,R22}4、根據推理規則,從FD導出MVD,得R的MVD集合:{A→→D,E→→D,D→→B,BC→→D,DC→→A}R不是4NF。任選一不符合4NF要求的MVD:A→→D進行分解得:R1(AD)M1={A→→D}碼是A,該模式是4NFR2(ABCE)M2={CE→→A,A→→B}碼是CE,該模式不是4NF,繼續分解選A→→B分解得:R21(AB)M21={A→→B}碼是A,該模式是4NFR22(ACE)M22={CE→→A}碼是CE,該模式是4NF具有無損連接性的4NF分解為:{R1,R21,R22}
Ⅲ 對一個關系R,如何實現3NF分解~教材講的並不能看懂
簡單通俗講就是 只要關系中不存在 部分函數依賴以及傳遞依賴就是滿足3NF的。
給你一道例題,不管你通過什麼方式,問老師或者網路也好直接看答案也好,把它認真理解到了,這個問題就解決了。
有關系模式R(A,B,C,D),R上的函數依賴集F={A->C, C->A, B->AC, D->AC}
1.求F的最小等價依賴集Fm
2.求R的關鍵字
3.R屬於第幾NF
4.將R分解成3NF,並保持無損連接性和函數依賴保持性。
Ⅳ 轉換成3NF的保持函數依賴的分解
演算法:
ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是關系模式R<U,F>的一個分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},並設F是一個最小依賴集,記FDi為Xi→Alj,其步驟如下:
① 對R<U,F>的函數依賴集F進行極小化處理(處理後的結果仍記為F);
② 找出不在F中出現的屬性,將這樣的屬性構成一個關系模式。把這些屬性從U中去掉,剩餘的屬性仍記為U;
③ 若有X→A F,且XA=U,則ρ={R},演算法終止;
④ 否則,對F按具有相同左部的原則分組(假定分為k組),每一組函數依賴Fi所涉及的全部屬性形成一個屬性集Ui。若Ui Uj(i≠j),就去掉Ui。由於經過了步驟②,故
,於是構成的一個保持函數依賴的分解。並且,每個Ri(Ui,Fi)均屬於3NF且保持函數依賴。
例1:關系模式R<U,F>,其中U={C,T,H,I,S,G},F={CS→G,C→T,TH→I,HI→C,HS→I},將其分解成3NF並保持函數依賴。
解:根據演算法進行求解
(一)計算F的最小函數依賴集
① 利用分解規則,將所有的函數依賴變成右邊都是單個屬性的函數依賴。由於F的所有函數依賴的右邊都是單個屬性,故不用分解。
② 去掉F中多餘的函數依賴
A.設CS→G為冗餘的函數依賴,則去掉CS→G,得:
F1={C→T,TH→I,HI→C,HS→I}
計算(CS)F1+:
設X(0)=CS
計算X(1):掃描F1中各個函數依賴,找到左部為CS或CS子集的函數依賴,找到一個C→T函數依賴。故有X(1)=X(0)∪T=CST。
計算X(2):掃描F1中的各個函數依賴,找到左部為CST或CST子集的函數依賴,沒有找到任何函數依賴。故有X(2)=X(1)。演算法終止。
(CS)F1+= CST不包含G,故CS→G不是冗餘的函數依賴,不能從F1中去掉。
B.設C→T為冗餘的函數依賴,則去掉C→T,得:
F2={CS→G,TH→I,HI→C,HS→I}
計算(C)F2+:
設X(0)=C
計算X(1):掃描F2中的各個函數依賴,沒有找到左部為C的函數依賴。故有X(1)=X(0)。演算法終止。故C→T不是冗餘的函數依賴,不能從F2中去掉。
C.設TH→I為冗餘的函數依賴,則去掉TH→I,得:
F3={CS→G,C→T,HI→C,HS→I}
計算(TH)F3+:
設X(0)=TH
計算X(1):掃描F3中的各個函數依賴,沒有找到左部為TH或TH子集的函數依賴。故有X(1)=X(0)。演算法終止。故TH→I不是冗餘的函數依賴,不能從F3中去掉。
D.設HI→C為冗餘的函數依賴,則去掉HI→C,得:
F4={CS→G,C→T,TH→I,HS→I}
計算(HI)F4+:
設X(0)=HI
計算X(1):掃描F4中的各個函數依賴,沒有找到左部為HI或HI子集的函數依賴。故有X(1)=X(0)。演算法終止。故HI→C不是冗餘的函數依賴,不能從F4中去掉。
E.設HS→I為冗餘的函數依賴,則去掉HS→I,得:
F5={CS→G,C→T,TH→I,HI→C}
計算(HS)F5+:
設X(0)=HS
計算X(1):掃描F5中的各個函數依賴,沒有找到左部為HS或HS子集的函數依賴。故有X(1)=X(0)。演算法終止。故HS→I不是冗餘的函數依賴,不能從F5中去掉。即:F5={CS→G,C→T,TH→I,HI→C,HS→I}
③ 去掉F5中各函數依賴左邊多餘的屬性(只檢查左部不是單個屬性的函數依賴)
沒有發現左邊有多餘屬性的函數依賴。故最小函數依賴集為:。。。。。。。。。。。。。。
F={CS→G,C→T,TH→I,HI→C,HS→I}
(二)由於R中的所有屬性均在F中都出現,所以轉下一步。
(三)對F按具有相同左部的原則分為:R1=CSG,R2=CT,R3=THI,R4=HIC,R5=HSI。所以ρ={R1(CSG),R2(CT),R3(THI),R4(HIC),R5(HSI)}。
Ⅳ 1、R(A,B,C,D,E) F={A →D,E →D,D →B,BC →D,DC →A} (1)求侯選碼,該關系最高到達幾範式
解:
1、在函數依賴集F中,未被函數決定的屬性有:CE,必包含於碼中。
∵(CE)+=CEDBA=U ∴ 候選碼只有:CE
∵E →D 屬性D部分依賴與碼CE,∴ R是1NF
2、依賴集F已經是極小依賴集,且所有屬性都在依賴中出現,根據保持函數依賴地轉換成3NF的演算法,將每個函數依賴中包含的屬性組成一個關系模式,得到分解:
{AD,ED,DB,BCD,ACD} 因為 AD包含於ACD中,去掉AD得:
{ED,DB,BCD,ACD} 因為 AD包含於ACD中,去掉AD得:
再並上一個候選碼{CE}得到即保持函數依賴又有無損連接性的分解:
{ED,DB,BCD,ACD,CE}
3、
∵碼是CE,F={A →D,E →D,D →B,BC →D,DC →A}
R不是BCNF。
任選一不符合BCNF要求的函數依賴:A →D 進行分解得:
R1(AD) F1={A →D} 碼是A,該模式是BCNF
R2(ABCE) F2={CE→A,A→B} 碼是CE,該模式不是BCNF,繼續分解
選A→B分解得:
R21(AB) F21={A→B} 碼是A,該模式是BCNF
R22(ACE) F22={CE→A} 碼是CE,該模式是BCNF
具有無損連接性的BCNF分解為:
{R1,R21,R22}
4、根據推理規則,從FD導出MVD,得R的MVD集合:
{A →→D,E →→D,D →→B,BC →→D,DC →→A}
R不是4NF。
任選一不符合4NF要求的MVD:A →→D 進行分解得:
R1(AD) M1={A →→D} 碼是A,該模式是4NF
R2(ABCE) M2={CE→→A,A→→B} 碼是CE,該模式不是4NF,繼續分解
選A→→B分解得:
R21(AB) M21={A→→B} 碼是A,該模式是4NF
R22(ACE) M22={CE→→A} 碼是CE,該模式是4NF
具有無損連接性的4NF分解為:
{R1,R21,R22}
Ⅵ 請問如何求3nf和bcnf
p保持函數依賴的3NF範式分解:演算法1
⑴對R<U,F>中的F進行最小化處理
⑵不在F中出現的屬性組成一個關系模式,並從U中去掉這些屬性
⑶若存在X->A</F, 有XA=U, 則r={R}, 終止演算法
⑷否則,對於具有相同左部的函數依賴分成一組,假設有K組,記為F1,F2,…,Fk, Fi的所有屬性構成Ui, 若UiÍUj(i¹j), 則去掉Ui,
⑸這樣得到的一個分解r={R1<U1,F1>, R2<U2,F2>, …, Rk<Uk,Fk>}構成了R<U,F>的一個保持函數依賴的分解
p具有無損連接性和保持函數依賴的3NF範式分解:演算法2
⑴設X是關系模式R<U,F>的關鍵字
⑵通過演算法1得到一個分解r
⑶t= r U {R*<X, Fx>}
⑷若存在一個Uj, 有XÍUj, 則將R*<X, Fx>從t中去掉
⑸t是一個具有無損連接和保持函數依賴的3NF分解
p具有無損連接性的BCNF範式分解:演算法3
⑴r={R<U,F>}
⑵檢查r中的每個關系模式是否為BCNF,若是演算法終止
⑶設r中Ri<Ui,Fi>不屬於BCNF, 那麼必存在X->A<Fi+(A</X), X不是Ri的關鍵字,對Ri進行分解:s={S1,S2}, Us1=XA, Us2=Ui-{XA}, 以代替Ri<Ui,Fi>, 返回第二步
你這題的結果
關鍵字A,CF
3NF
R1(BGC) R2(ABGD) R3(ACF) R4(ACG) R5(ADEF)R6(ACB)
BCNF
上面 R2(ABGD) 中有 ABG->D,A->G 所以 R22(AG),R21(ABD)
R3(ACF)中 CF->A,A->C,所以R31(AC),R32(CF)
最終結果
R1(BGC) R22(AG),R21(ABD)R31(AC),R32(CF)R4(ACG) R5(ADEF)R6(ACB)
以上結果我也拿不太准,只供參考
Ⅶ 函數依賴AB- >C,B->A 算不算傳遞函數依賴算不算最小函數依賴集(A,B,C)滿不滿足3NF
不滿足3nf ,只要表中的某一項的值要依賴其它項來確定,都算傳遞依賴,如:有三列:a,b,c;c=a+b;c依賴a和b,就不滿足第三範式;
Ⅷ 請問,如何將如圖所示的這張資料庫表分割成符合第三範式(3NF)的幾張表
1,範式
7大範式:1NF,2NF,3NF,BCNF,4NF,5NF,6NF
什麼是標准化?非規范化?
規范化資料庫的規范化,非規范化資料庫的非規范化。
關鍵的一步是在設計,操作和維護的資料庫,以確保數據正確分布到資料庫表中。使用正確的數據結構不僅是簡單的資料庫訪問操作,和其他應用程序內容(查詢,窗體,報表,代碼等)可以大大簡化。正確的表設計的正式名稱是「資料庫規范化」。目的:為了減少資料庫中的數據冗餘,提高了數據的一致性。
範式的概念:
1)1NF的目標是為每一個列的表是不可分割的;
2)2NF:我們的目標是在每一行表被識別。前提是要滿足1NF。關鍵字單場,你必須滿足2NF。當關鍵字組合欄位(即,多個欄位),可以不存在確定的非鍵的一部分的欄位中的關鍵字的組合中的一個領域。非部分地依賴於主磁場的主要領域,即,非鍵欄位必須依賴於關鍵字的組合,而不是組合的一部分的關鍵字。
3)3NF:目標是不依賴於非鍵列的表內表的所有列。前提,以滿足2NF,不存在非鍵欄位決定另一個非鍵欄位。即:有沒有非關鍵屬性傳遞依賴(X-> Y->非鍵屬性Z)
4)BCNF:前提是要滿足,2NF不存在非鍵欄位決定另一個非關鍵字關鍵領域。也沒有決定等重點領域的重點領域。 :3NF的基礎上加上約束條件:這里有一個關鍵領域確定的另一個重要領域。
1第一範式(1NF)
任何關系資料庫中,第一範式(1NF)是關系模型的基本要求,不符合第一範式(1NF)的資料庫不是一個關系資料庫。所謂第一範式(1NF)是基本的數據條目的資料庫表的每一列是不可分割的,不能有一個以上的值在同一列中,這是一個實體的屬性不能有一個以上的值或不能重復的屬性。復制的屬性,您可能需要定義一個新的實體,新的實體由重復的屬性的新實體與原實體之間的一個一對多的關系。第一範式(1NF)表,每行只包含一個實例的信息。例如,圖3-2中的員工信息表,不能在展會之一的員工信息,也可以兩個或多個列中顯示,員工信息表中的每一行代表一個員工信息,員工信息中只出現一次表。總之,第一範式是不重復的列。
第二範式(2NF)
第二範式(2NF)建立的第一範式(1NF),即滿足第二範式(2NF)的基礎上,必須滿足第一範式(1NF )。第二範式(2NF)要求資料庫表中的每個實例或行必須是唯一能夠分辨。一般需要被添加到該表來實現的列之間的區別,唯一地標識每個實例來存儲。圖3-2(EMP_ID)的雇員數列中的員工信息表,因為每個員工的員工號是唯一的,因此每個員工都可以只區分。唯一的屬性列被稱為主鍵或主鍵,主碼。第二範式(2NF)要求實體的屬性完全依賴於主鍵。所謂完全依賴不能只依賴於主鍵屬性的一部分,如果存在的話,那麼這個屬性,這部分應該被分離出來,形成一個新的實體,新實體與原實體的主鍵是一個一對多的關系。一般需要被添加到該表來實現的列之間的區別,唯一地標識每個實例來存儲。總之,第二範式的非主屬性部分依賴於主鍵。
3第三範式(3NF)
滿足第三範式(3NF)必須滿足第二範式(2NF)。簡而言之,第三範式(3NF)請求不包含一個非主鍵信息包含在一個資料庫表中的其他表。例如,有一個部門信息表,其中每個部門都有一個的部門編號(在DEPT_ID「),本部門,本部門的簡要信息的名稱。所以在部門列出的電話號碼表中的圖3-2中的員工可以不再被相關部門的信息部門名稱,部門簡要的員工信息表。部門信息表不存在,根據第三範式(3NF)應該構建它,否則會有大量的數據冗餘。簡而言之,第三範式就是屬性不依賴於非主屬性。例如:
第一範式(1NF):資料庫表中的欄位都是單一的財產,不能進行細分。單個屬性由基本類型包括整數,實數,字元,邏輯型,日期型。
例如,資料庫表是符合第一範式:場1場2場3場
這不符合第一範式的資料庫表是不符合第2場3場1個字場4場31場32
顯然,在任何關系型資料庫管理系統(S),一個傻子不能讓第一範式的資料庫,因為這些S不會讓你把一個資料庫表,然後再除以分成兩列或多列。因此,你要設計不符合第一範式的資料庫,是不可能在現有的S.
第二範式(2NF):有沒有非鍵欄位在資料庫表中的一部分,任何候選人函數依賴(部分函數依賴的存在為關鍵欄位決定關鍵字的組合),即是一些領域的關鍵領域,所有的非鍵欄位是完全依賴於任意一組候選關鍵字。
假定選課關系表中的SS(學號,姓名,年齡,課程名稱,成績,學分),關鍵字為組合關鍵字(學號,課程名稱),因為存在之間的關系以下決定:
(學號,課程名稱) - >(姓名,年齡,成績,學分)
資料庫表不符合第二範式,因為存在之間的關系如下決定: BR />(課程名稱)→(學分)
(學號)→(姓名,年齡)
中的關鍵字的欄位決定非關鍵字的組合。
一個學生選修,因為他們不符合2NF,這個選課關系表中有以下問題:1)數據冗餘:同一門課程由n個學生選修,「學分」重復n-1次;課程名稱和年齡對反復-1。 2)更新異常:調整課程的學分,數據表中的值的所有行的「學分」?必須更新,否則會出現同一門課程學分。 3)插入異常:假設你想創建一個新的課程,沒有一門選修課。還沒有「學號」關鍵字,課程名稱和信用記錄到資料庫中。 4)刪除異常:假設一組學生已完成課程選修記錄應該從資料庫表中刪除。然而,在同一時間,也將被刪除的過程名和信用信息。顯然,這將導致插入異常。
選修的關系表SS變更為以下三個表:
學生們:錫(學號,姓名,年齡);
課程設置:(課程名稱,學分);
選修關系:SS(學號,課程名稱,成績)。
這個資料庫表是符合第二範式的,消除了數據冗餘,更新異常,插入異常和刪除異常。
所有單關鍵字的資料庫表第二範式,因為有可能是一個組合關鍵字。
第三範式(3NF):在第二範式的表中的數據的基礎上,如果沒有非鍵欄位的任何候選人相關傳遞函數符合第三範式的重點領域。所謂的傳遞函數依賴,指的決定「A→→」關系存在,則傳遞函數依賴於A.,所以,第三範式的資料庫表中應該不存在依賴關系如下:非鍵欄位,重點領域→X→Y
非鍵欄位假定學生關系表錫(學號,姓名,年齡,其中[]學院[],讀大學學院電話),關鍵字為單一關鍵字「研究「,因為存在之間的關系如下決定:
(學號)→(姓名,年齡,其中[]學院這個資料庫是一致的[]學院[]的位置,[]學院[]電話)
2NF,但不符合3NF,因為一項決定存在以下關系:
(學生證)→(其中[]學院[])→([]學院[]位置[]學院[]電話)
非鍵欄位「[]學院[]位置」,「[]學院[]電話」依賴「研究」的重點領域傳遞函數。
它也存在數據冗餘,更新異常,插入異常和刪除異常讀者自己分析表明。
學生關系表分為以下兩個表:
學生們:(學號,姓名,年齡,其中[]學院[]);
[]學院[]:([學院[],位置,電話)。
這個資料庫表是符合第三範式的,消除了數據冗餘,更新異常,插入異常和刪除異常。
·博伊斯 - 科範式(BCNF):第三範式的基礎上,資料庫表中不存在任何領域的任何相關的傳遞函數的一個候選關鍵領域,到滿足BCNF的
The>的假設倉庫管理關系表Ssanag(倉庫,存儲物品,管理員,數量),管理員只在一個倉庫工作,倉庫可以存放各種物品。資料庫中的表存在以下關系:一項決定
(倉庫,存儲物品)→(管理員)
(管理員,存儲項目)→(倉庫,數量)
所以, (倉庫,儲存項目)和(管理員,存儲資料)Ssanag候選鍵,唯一的非鍵欄位的表的數量,它是在第三範式。然而,由於存在之間的關系如下決定:
(倉庫)→(管理員)
(管理員)→(倉庫)
存在的關鍵領域確定重點領域,其不符合BCNF範式。它會出現以下異常:1)刪除異常:當倉庫是空的,所有儲存的項目「和」數量「信息被刪除的同時,」倉庫「和」管理員「也被刪除。2)插入一個例外:管理員可以分配到倉庫,當倉庫沒有存儲任何物品。3)更新異常:如果該存儲庫的管理員,管理員必須表中的所有行。
倉庫管理關系表分解為兩個關系表:
倉庫管理:Ssanag(倉庫管理員);
倉庫:SS(倉庫,儲存項目,數量)。
這是在資料庫表BCNF範式的,消除刪除異常,插入異常和更新異常。
在短的五個最大的資料庫範式:
第一範式:對於表中的每一行,必須和唯一的價值線唯一的值嗎?成一排,每列和原子操作。
(第一範式是重復的組,每個單獨的表,這些表的聯系,通過這種方式來消除重復組的一個to-many關聯)</第二範式:第二範式要求非主鍵列是主鍵的一個子集,非主鍵列活動必須完全依賴於整個主鍵,主鍵必須有一個獨特的電阻元件,主鍵所組成的一個或多個唯一值。一旦創建後,不能更改主鍵,外鍵與主鍵的表。與手段 - 許多關系的主外鍵(Delete(刪除)第二範式處理問題。冗餘數據表中的信息時,通常違反了第二範式取決於以外的主鍵的一部分)
第三範式:第三範式要求非主鍵的表中的列列是相互依存的。(第三範式規則查找以消除第一範式和第二範式的表中不直接依賴於主鍵的屬性,我們沒有相關的所有信息的表的主鍵建??立一個新的每個新表的表從源表中保存的信息,它們依賴於主鍵)
第四範式:第四範式禁止主鍵列和非主鍵列一對多關系不受約束的 BR />第五範式:第五範式的表被劃分成盡可能小的塊,以排除多餘的表格。
Ⅸ 關系模式的分析演算法的准則有哪些
關系模式分解的目的是解決數據冗餘的問題,但要考慮多方面的問題。如原關系模式中信息是否丟失,函數依賴關系是否保持等,要研究這方面的問題就要涉及關系模式分解演算法的具體准則。
關系模式的分解演算法中有以下幾方面的准則:((1)若要求分解具有無損連接性,則模式分解一定可以達到第四範式(4NF)。
(2)若要求分解保持函數依賴性,則模式分解可以達到第三範式(3NF),但不一定能達到巴斯−科德範式(BCNF)。
(3)若要求分解既具有無損連接性,又保持函數依賴性,則模式分解可以達到第三範式(3NF),但不一定能達到巴斯−科德範式(BCNF)。
1.二元分解的無損連接性判斷二元分解是關系模式分解中最簡單的一種分解方式。二元分解是將原關系模式分解成兩個子關系模式。如將關系模式R分解成關系模式集ρ,ρ中包含兩個關模式R1、R2,即ρ={R1,R2},則ρ是R的二元分解。
當關系模式分解是最簡單的二元分解(ρ={R1
Ⅹ 資料庫問題
1.設R(U)是一個屬性集U上的關系模式,X和Y是U的子集。 若對於R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱 「X函數確定Y」 或 「Y函數依賴於X」,記作X→Y。
注意的幾點:
1). 函數依賴不是指關系模式R的某個或某些關系實例滿足的約束條件,而是指R的所有關系實例均要滿足的約束條件。
2). 函數依賴是語義范疇的概念。只能根據數據的語義來確定函數依賴。 例如「姓名→年齡」這個函數依賴只有在不允許有同名人的條件下成立 3). 資料庫設計者可以對現實世界作強制的規定。例如規定不允許同名人出現,函數依賴「姓名→年齡」成立。所插入的元組必須滿足規定的函數依賴,若發現有同名人存在, 則拒絕裝入該元組。
例子:
Student(Sno, Sname, Ssex, Sage, Sdept)
假設不允許重名,則有:
Sno → Ssex, Sno → Sage , Sno → Sdept,
Sno ←→ Sname, Sname → Ssex, Sname → Sage
Sname → Sdept
但Ssex -\→ Sage
若 X → Y,並且 Y → X, 則記為 X ←→ Y。
若 Y 不函數依賴於 X, 則記為 X -\→ Y。
2.最小函數依賴集
定義:如果函數依賴集F滿足下列條件,則稱F為最小函數依賴集或最小覆蓋。 ① F中的任何一個函數依賴的右部僅含有一個屬性;
② F中不存在這樣一個函數依賴X→A,使得F與F-{X→A}等價;
③ F中不存在這樣一個函數依賴X→A,X有真子集Z使得F-{X→A}∪{Z→A}與F等價。
3.範式:
1).第一範式(1NF)
在任何一個關系資料庫中,第一範式(1NF)是對關系模式的基本要求,不滿足第一範式(1NF)的資料庫就不是關系資料庫。
所謂第一範式(1NF)是指資料庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。如果出現重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系。在第一範式(1NF)中表的每一行只包含一個實例的信息。例如,對於圖3-2 中的員工信息表,不能將員工信息都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示;員工信息表的每一行只表示一個員工的信息,一個員工的信息在表中只出現一次。簡而言之,第一範式就是無重復的列。
2 ).第二範式(2NF)
第二範式(2NF)是在第一範式(1NF)的基礎上建立起來的,即滿足第二範式(2NF)必須先滿足第一範式(1NF)。第二範式(2NF)要求資料庫表中的每個實例或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。如圖3-2 員工信息表中加上了員工編號(emp_id)列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區分。這個唯一屬性列被稱為主關鍵字或主鍵、主碼。
第二範式(2NF)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。簡而言之,第二範式就是非主屬性非部分依賴於主關鍵字。
3). 第三範式(3NF)
滿足第三範式(3NF)必須先滿足第二範式(2NF)。簡而言之,第三範式(3NF)要求一個資料庫表中不包含已在其它表中已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那麼在圖3-2的員工信息表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三範式(3NF)也應該構建它,否則就會有大量的數據冗餘。簡而言之,第三範式就是屬性不依賴於其它非主屬性。
不知道您說的F+和拆分是什麼意思,
我只知道關系模式規范化,關系模式分解。
希望對您有幫助。