關聯式資料庫知道了,再來理解正規化。正規化是關聯式資料庫關係模式規範化的標準,從規範化的寬鬆到嚴格,分為不同的正規化,通常使用的有第一正規化。第二正規化、第三正規化及bc正規化。正規化是建立在函式依賴基礎上的。具體的函式依賴應該是通過理解資料項和該企業的內部規則來決定的(不同企業間有差異),根據表的內容得出的函式依賴可能是不正確的。如果乙個表中某乙個欄位y的值是由另外乙個欄位或一組欄位x的值來確定的,就稱為y函式依賴於x。
設x,y是關係r的兩個屬性集合,當任何時刻r中的任意兩個元組中的x屬性值相同時,則它們的y屬性值也相同,則稱x函式決定y,或y函式依賴於x。
3.平凡函式依賴
當關係中屬性集合y是屬性集合x的子集時(y⊆x),存在函式依賴x→y,即一組屬性函式決定它的所有子集,這種函式依賴稱為平凡函式依賴。
4.非平凡函式依賴
當關係中屬性集合y不是屬性集合x的子集時,存在函式依賴x→y,則稱這種函式依賴為非平凡函式依賴。
5.完全函式依賴
設x,y是關係r的兩個屬性集合,x』是x的真子集,存在x→y,但對每乙個x』都有x』!→y,則稱y完全函式依賴於x。
6.部分函式依賴
設x,y是關係r的兩個屬性集合,存在x→y,若x』是x的真子集,存在x』→y,則稱y部分函式依賴於x。
7.傳遞函式依賴
設x,y,z是關係r中互不相同的屬性集合,存在x→y(y !→x),y→z,則稱z傳遞函式依賴於x。
屬性之間有三種關係,但並不是每一種關係都存在函式依賴。設r(u)是屬性集u上的關係模式,x、y是u的子集:
● 如果x和y之間是1:1關係(一對一關係),如學校和校長之間就是1:1關係,則存在函式依賴x → y和y →x。
● 如果x和y之間是1:n關係(一對多關係),如年齡和姓名之間就是1:n關係,則存在函式依賴y → x。
●如果x和y之間是m:n關係(多對多關係),如學生和課程之間就是m:n關係,則x和y之間不存在函式依賴。
編輯例: student(sno, sname, s***, sage, sdept)
假設不允許重名,則有:
sno → s***, sno → sage , sno → sdept,
sno ←→ sname, sname → s***, sname → sage
sname → sdept
但s*** -\→ sage
若 x → y,並且 y → x, 則記為 x ←→ y。
若 y 不函式依賴於 x, 則記為 x -\→ y。
在關係模式r(u)中,對於u的子集x和y,
1.如果 x → y,但 y 不為 x 的子集,則稱 x → y 是非平凡的函式依賴
例:在關係sc(sno, cno, grade)中,
非平凡函式依賴: (sno, cno) → grade。
2.若 x → y,但 y 為 x 的子集, 則稱 x → y 是平凡的函式依賴
平凡函式依賴: (sno, cno) → sno ,(sno, cno) → cno。
3.若 x → y 並且,存在 x 的真子集 x1,使得 x1 → y, 則 y 部分依賴於 x。
例:學生表(學號,姓名,性別,班級,年齡)關係中,
部分函式依賴:(學號,姓名)→ 性別,學號 → 性別,所以(學號,姓名)→ 性別 是部分函式依賴。
4.若 x → y 並且,對於 x 的任何乙個真子集 x1,都不存在 x1 → y 則稱y完全依賴於x。
例:成績表(學號,課程號,成績)關係中,
完全函式依賴:(學號,課程號)→ 成績,學號 -\→ 成績,課程號 -\→ 成績,所以(學號,課程號)→ 成績 是完全函式依賴。
5.若x → y並且y → z,而y -\→ x,則有x → z,稱這種函式依賴為傳遞函式依賴。
例:關係s1(學號,系名,系主任),
學號 → 系名,系名 → 系主任,並且系名 -\→ 學號,系主任 -\→ 系名,所以學號 → 系主任為傳遞函式依賴。
關聯式資料庫有六種,一、二、三、四、五和bc。滿足最低要求的正規化是第一正規化。在第一正規化的基礎上進一步滿足更多要求的稱為第二正規化,其餘正規化以此類推。一般情況的資料庫只需滿足第三正規化即可。
如果關係模式r是第一正規化的模式,那麼,r的每乙個關係r的屬性都是原子項,不可分割。
1nf是關係模式應具備的最起碼的條件,如果資料庫設計不能滿足第一正規化,就不能稱為關係型資料庫。關聯式資料庫設計研究的關係規範化是在1nf之上進行的。
如果關係模式r是1nf,且每乙個非主屬性完全依賴於候選建,那麼就稱r是第二正規化。
第二正規化要滿足的條件:首先要滿足第一正規化,
其次每乙個非主屬性要完全函式依賴於候選鍵,或者是主鍵。也就是說,每個非主屬性是由整個主鍵函式決定的,而不能有主鍵的一部分來決定。
第二正規化(2nf):符合1nf,並且,非主屬性完全依賴於碼。(乙個候選碼中的主屬性也可能是好幾個。如果乙個主屬性,它不能單獨做為乙個候選碼,那麼它也不能確定任何乙個非主屬性。
什麼樣的例項不符合第二正規化?
舉乙個教務管理系統的例子。
學生上課指定乙個老師,一本教材,乙個教室,乙個時間,學生去上課,怎麼設計資料庫?
有如下關係成立:
(學生,課程)——>教室;
(學生,課程)——>老師;
(學生,課程)——>老師職稱;
(學生,課程)——>教材;
(學生,課程)——>上課時間;
可以得出(學生,課程)是乙個碼。 又:
課程——>教材;
出現了這種情況,就不滿足第二正規化了。解決辦法:分解。進行投影分解:
如果關係模式r是2nf,且關係模式r(u,f)中的
所有非主屬性對任何候選關鍵字都不存在傳遞依賴,則稱關係r是屬於第三正規化。
第三正規化(3nf);符合2nf,並且,消除傳遞依賴。
上圖中符合2nf ,但存在傳遞依賴(老師——>老師職稱。乙個老師一定能確定乙個老師職稱)。
解決辦法:分解。投影分解:
第四正規化:要求把同一表內的多對多關係刪除。
第五正規化:從最終結構重新建立原始結構。
bc正規化(bcnf):符合3nf,並且,主屬性不依賴於主屬性。若關係模式r屬於第一正規化,且每個屬性都不傳遞依賴於鍵碼,則r屬於bc正規化。
資料庫第一 二 三正規化
第一正規化 在任何乙個關聯式資料庫中,第一正規化 1nf 是對關係模式的基本要求,不滿足第一正規化 1nf 的資料庫就不是關聯式資料庫。所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,...
資料庫 第一 二 三正規化
1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 第一正規化的合理遵循需要根據系統的實際需求來定。比如某些資料庫系統...
資料庫第一 二 三正規化
正規化 normal form 是正規化是符合某一種級別的關係模式的集合。通俗一點就是對資料庫中表的屬性的約束條件。第一正規化的條件 元組中的每乙個分量都必須是不可分割的資料項。反例 應該修改為 第二正規化的條件 在第一正規化的基礎上,所有的非主屬性完全依賴於主鍵。完全依賴意味著不能依賴於主鍵的一部...