1. 程式人生 > >關係資料庫建表規範(資料庫正規化)續

關係資料庫建表規範(資料庫正規化)續

注:以下所有定義均來自於百度百科

1NF:非主屬性函式依賴於碼
2NF:非主屬性完全函式依賴於碼
3NF:非主屬性既不部分依賴於碼也不傳遞依賴於碼
BCNF:所有屬性都不部分依賴或傳遞依賴於碼,所有決定屬性集都包含於碼
4NF:所欲非平凡的多值依賴都是函式依賴
5NF:連線依賴均由候選碼所蘊含


主屬性:在一個關係中,如一個屬性是構成某一個候選關鍵字的屬性集中的一個屬性,則稱它為主屬性。


候選關鍵字:如果一個超關鍵字去掉其中任何一個欄位後不再能唯一地確定記錄,則稱它為“候選關鍵字”(Candidate Key)。

即,候選關鍵字既能唯一地確定記錄,它包含的欄位又是最精煉的。也就是說候選關鍵字是最簡單的超關鍵字。


超關鍵字
:超碼,是指一個或多個屬性的集合,這些屬性的組合可以使我們在一個實體集中唯一地標識一個實體。


子集:一般地,對於兩個集合A、B,如果集合A中任意一個元素都是集合B中的元素,我們就說這兩個集合有包含關係,稱集合A為集合B的子集(subset)。記作A⊆B(或B⊇A),讀作“A包含於B”(或“B包含A”)。


即,對於集合A與B,∀x∈A有x∈B,則A⊆B。可知任一集合A是自身的子集,空集是任一集合的子集。


真子集:如果集合A⊆B,存在元素x∈B,且元素x不屬於集合A,我們稱集合A與集合B有真包含關係,集合A是集合B的真子集(proper subset)。記作A⊊B(或B⊋A),讀作“A真包含於B”(或“B真包含A”)。


即:對於集合A與B,∀x∈A有x∈B,且∃x∈B且x∉A,則A⊊B。空集是任何非空集合的真子集。


關係模式
:關係的描述稱為關係模式(Relation Schema)它可以形式化地表示為:

R(U,D,dom,F)

R:關係名
U:組成該關係的屬性名集合
D:屬性組U中屬性所來自的域
dom:屬性向域的映象集合
F:屬性間資料的依賴關係集合。

通常簡記為:

R(U)或R(A1,A2,…,An)
其中R為關係名,U為屬性名集合,A1,A2,…,An為各屬性名。

函式依賴簡單點說就是:某個屬性集決定另一個屬性集時,稱另一屬性集依賴於該屬性集。


設R(U)是一個屬性集U上的關係模式,X和Y是U的子集。


若對於R(U)的任意兩個可能的關係r1、r2,若r1[x]=r2[x], 則r1[y]=r2[y],或者若r1[y]不等於r2[y], 則r1[x]不等於r2[x],稱X決定Y,或者Y依賴X。

概念:

1.  函式依賴不是指關係模式R的某個或某些關係例項滿足的約束條件,而是指R的所有關係例項均要滿足的約束條件。

2.  函式依賴是語義範疇的概念。只能根據資料的語義來確定函式依賴。例如“姓名→年齡”這個函式依賴只有在不允許有同名人的條件下成立

3.  資料庫設計者可以對現實世界作強制的規定。例如規定不允許同名人出現,函式依賴“姓名→年齡”成立。所插入的元組必須滿足規定的函式依賴,若發現有同名人存在, 則拒絕裝入該元組。

屬性關係:

屬性之間有三種關係,但並不是每一種關係都存在函式依賴。設R(U)是屬性集U上的關係模式,X、Y是U的子集:

1. 如果X和Y之間是1:1關係(一對一關係),如學校和校長之間就是1:1關係,則存在函式依賴X → Y和Y →X。

2. 如果X和Y之間是1:n關係(一對多關係),如年齡和姓名之間就是1:n關係,則存在函式依賴Y → X。

3. 如果X和Y之間是m:n關係(多對多關係),如學生和課程之間就是m:n關係,則X和Y之間不存在函式依賴。



完全函式依賴
:設X,Y是關係R的兩個屬性集合,X’是X的真子集,存在X→Y,但對每一個X’都有X’!→Y,則稱Y完全函式依賴於X。


部分函式依賴:設X,Y是關係R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函式依賴於X。


傳遞函式依賴:設X,Y,Z是關係R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函式依賴於X。


平凡函式依賴:當關系中屬性集合Y是屬性集合X的子集時(Y⊆X),存在函式依賴X→Y,即一組屬性函式決定它的所有子集,這種函式依賴稱為平凡函式依賴。


非平凡函式依賴:當關系中屬性集合Y不是屬性集合X的子集時,存在函式依賴X→Y,則稱這種函式依賴為非平凡函式依賴。


鍵碼(key):實體的一個屬性或一組屬性,其值可用來唯一標識該實體。鍵碼又稱作)。