数据库复习之规范化理论
聲明:本文為作者復(fù)習(xí)數(shù)據(jù)庫課程時(shí)簡單記錄的筆記,如有錯(cuò)誤之處,敬請指出,謝謝。
6.1問題的提出
1.一個(gè)關(guān)系模式是一個(gè)五元組,形如R(U,D,DOM,F)。其中D、DOM與模式設(shè)計(jì)關(guān)系不大,可以看作三元組R<U,F>。
- 關(guān)系名R是符號化的元組定義;
- U為一組屬性;
- D為屬性組U中的屬性所來自的域;
- DOM為屬性到域的映射;
- F為屬性組U上的一組數(shù)據(jù)依賴。
2.數(shù)據(jù)依賴:一個(gè)關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系。最重要的是函數(shù)依賴(FD)和多值依賴(MVD),還有一個(gè)叫連接依賴。
3.分析關(guān)系模式常見問題:
- 數(shù)據(jù)冗余:重復(fù)出現(xiàn),浪費(fèi)空間。(盡可能少)
- 更新異常:更新代價(jià)(最好沒有)
- 插入異常:插入部分信息時(shí)無法插入(最好沒有)
- 刪除異常:可能刪除了其他想要的數(shù)據(jù)(最好沒有)
6.2規(guī)范化
1.函數(shù)依賴:(概念省略,X、Y是屬性組U的子集)X函數(shù)確定Y或Y函數(shù)依賴于X,記作X→Y。例如:系號→系名,學(xué)號→姓名。
(1)函數(shù)依賴不是指關(guān)系模式R中的某些關(guān)系滿足的約束條件,而是指R上的一切關(guān)系都要滿足的約束條件。函數(shù)依賴關(guān)系的存在與時(shí)間無關(guān),而只與數(shù)據(jù)之間的語義規(guī)定有關(guān)。 函數(shù)依賴的存在與時(shí)間無關(guān),只與數(shù)據(jù)之間的語義定義有關(guān)。
(2)函數(shù)依賴的基本性質(zhì):擴(kuò)張性,投影性,合并性,分解性,
2.非平凡的函數(shù)依賴X→Y:X→Y,但Y不包含于X。默認(rèn)我么討論的都是非平凡的函數(shù)依賴。
3.平凡的函數(shù)依賴X→Y:X→Y,但Y包含于X。必然成立(好像是廢話)。
4.若X→Y,則稱X為這個(gè)函數(shù)依賴的決定屬性組,也稱決定因素,Y為依賴因素。
5.完全函數(shù)依賴:在R(U)中,如果X → Y,并且對于X的任何一個(gè)真子集X’,都有X’ /→ Y,則稱Y對X完全函數(shù)依賴。記作X?F→ Y。
推論:單一決定因素一定是完全函數(shù)依賴。
例:(學(xué)號,課程號)→成績
6.部分函數(shù)依賴:在R(U)中,如果X→Y,且Y不完全函數(shù)依賴于X,則稱Y對X部分函數(shù)依賴。記作X?P→ Y。
例:(學(xué)號,課程號)→課程名 (因?yàn)檎n程號→課程名,而課程號是(學(xué)號,課程號)的真子集)
7.傳遞函數(shù)依賴:在R(U)中,如果X→Y(Y不包含于X),Y /→ X,Y→Z(Z不包含于Y),則稱Z對X傳遞函數(shù)依賴。記為X?傳遞(t)→ Z。
注:條件中要有Y /→ X,是因?yàn)槿绻鸜→ X,則Y←→ X,則X直接→ Z,屬于直接函數(shù)依賴,而非間接。
例:系號→系名,系名→系主任名。
8.候選碼:設(shè)K為R<U,F>中的屬性或?qū)傩越M合,若K?F→ U,則稱K為R的候選碼(候選鍵)。(即U完全依賴于K)。
9.超碼:若U部分依賴于K,即K?P→ U,則稱K為超碼(超鍵)。候選碼是最小的超碼
10.候選碼可能多于一個(gè),可選其中一個(gè)作為主碼。包含在任何一個(gè)候選碼中的屬性稱為主屬性;不包含在任何一個(gè)候選碼中的屬性稱為非主屬性(非碼屬性)。最簡單的情況,單個(gè)屬性是碼(主碼或候選碼);最極端的情況,整個(gè)屬性組U是碼,稱為全碼。(主碼and候選碼都簡稱碼)
11.關(guān)系模式R中的屬性或?qū)傩越MX不是R的碼,但X是另一個(gè)關(guān)系模式的碼,則稱X為R的外部碼(外碼)。
12.第一范式(1NF):每一個(gè)分量必須是不可分的數(shù)據(jù)項(xiàng)(關(guān)系中每個(gè)屬性都是不可再分的簡單項(xiàng))。
13.第二范式(2NF):若R滿足第一范式,且每一個(gè)非主屬性完全函數(shù)依賴于任何一個(gè)候選碼。
推論:候選碼為單屬性或者全碼,則屬于2NF。
特點(diǎn):不存在非主屬性對候選碼的部分函數(shù)依賴。
1NF→2NF:消除非主屬性對候選碼的部分函數(shù)依賴,把部分函數(shù)依賴投影出來單獨(dú)成表。(一事一表)
14.第三范式(3NF):若R滿足第二范式,且它的每一個(gè)非主屬性都不傳遞依賴于任何候選碼。
定義:關(guān)系模式R<U,F>屬于第一范式,若R中不存在這樣的碼X,屬性組Y及非主屬性Z(Y不包含于Z)是的X→Y,Y→Z成立,Y/→X,則稱R屬于3NF。
定義理解:3NF的定義由1NF推過來的,不太好理解,判定的話用上上行2NF推導(dǎo)過來的就可以了,這個(gè)定義同時(shí)也可以證明,若R屬于3NF,則R必屬于2NF。
特點(diǎn):每一個(gè)非主屬性對候選碼沒有部分函數(shù)依賴,也沒有傳遞函數(shù)依賴。
缺點(diǎn):3NF只限制了非主屬性對鍵的依賴關(guān)系,而沒有限制主屬性對鍵的依賴。
2NF→3NF:消除非主屬性對鍵的傳遞函數(shù)依賴,把傳遞依賴投影出來單獨(dú)成表。(一事一表)
15.BCNF:關(guān)系模式R<U,F>中,每一個(gè)決定因素都包含R的一個(gè)碼(候選鍵),則R屬于BCNF。
定義:關(guān)系模式R<U,F>屬于第一范式,若X→Y(Y不包含于X)時(shí)X必含有碼,則R屬于BCNF。
特點(diǎn):排除任何屬性對候選碼的傳遞函數(shù)依賴和部分函數(shù)依賴。在函數(shù)依賴范疇內(nèi)實(shí)現(xiàn)徹底分離,消除插入和刪除異常。
3NF→BCNF:消除原關(guān)系中主屬性對鍵的部分函數(shù)依賴和傳遞函數(shù)依賴。
推論:如果R屬于BCNF,則
- R中所有非主屬性對每一個(gè)碼都是完全函數(shù)依賴;
- R中所有主屬性對每一個(gè)不包含它的碼,都是完全函數(shù)依賴;
- R中沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。
?
作者:?AlvinZH
出處:?http://www.cnblogs.com/AlvinZH/
本人Github:https://github.com/Pacsiy/JobDu
本文版權(quán)歸作者AlvinZH和博客園所有,歡迎轉(zhuǎn)載和商用,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
轉(zhuǎn)載于:https://www.cnblogs.com/AlvinZH/p/6856298.html
總結(jié)
以上是生活随笔為你收集整理的数据库复习之规范化理论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lucene之创建索引代码
- 下一篇: SQL SERVER 通用分页存储过程