数据库的规范化
一、基礎概念
實體:現實世界中客觀存在并可以被區別的事物。比如“一個學生”、“一本書”、“一門課”等。
屬性:教科書上解釋為:“實體所具有的某一特性”,由此可見,屬性一開始是個邏輯概念,比如說,“性別”是“人”的一個屬性。在關系數據庫中,屬性又是個物理概念,屬性可以看作是“表的一列”。
元組:表中的一行就是一個元組。
分量:元組的某個屬性值。
碼:表中可以唯一確定一個元組的某個屬性(或者屬性組),如果這樣的碼有不止一個,那么大家都叫候選碼,我們從候選碼中挑一個出來做老大,它就叫主碼。
全碼:如果一個碼包含了所有的屬性,這個碼就是全碼。
主屬性:一個屬性只要在任何一個候選碼中出現過,這個屬性就是主屬性。
非主屬性:與上面相反,沒有在任何候選碼中出現過,這個屬性就是非主屬性。
外碼:一個屬性(或屬性組),它不是碼,但是它別的表的碼,它就是外碼。
二、函數依賴
1、函數依賴
設X,Y是關系R的兩個屬性集合,當任何時刻R中的任意兩個元組中的X屬性值相同時,則它們的Y屬性值也相同,則稱X函數決定Y,或Y函數依賴于X記作X→Y。
2、平凡函數依賴
當關系中屬性集合Y是屬性集合X的子集時,存在函數依賴X→Y,即一組屬性函數決定它的所有子集,這種函數依賴稱為平凡函數依賴。
3、非平凡函數依賴
當關系中屬性集合Y不是屬性集合X的子集時,存在函數依賴X→Y,則稱這種函數依賴為非平凡函數依賴。
4、完全函數依賴
設X,Y是關系R的兩個屬性集合,X’是X的真子集,存在X→Y,但對每一個X’都有X’!→Y,則稱Y完全函數依賴于X。
5、部分函數依賴
設X,Y是關系R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函數依賴于X。
6、傳遞函數依賴
設X,Y,Z是關系R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函數依賴于X。
?
三、5大范式及其特點
1NF:原子性?字段不可再分,否則就不是關系數據庫(所以在正常的關系數據庫中是不可能創建出不符合1NF的表的);
2NF:唯一性?一個表只說明一個事物,1NF消除非主屬性對碼的部分函數依賴之后就是2NF;
3NF:每列都與主鍵有直接關系,2NF消除非主屬性對碼的傳遞函數依賴之后就是3NF;??
BCNF:3NF消除主屬性對碼的部分函數依賴和傳遞函數依賴之后就是BCNF(換句話說就是BCNF范式既檢查非主屬性,又檢查主屬性,而3NF只檢查非主屬性);
4NF:限制關系模式的屬性間不允許有非平凡且非函數依賴的多值依賴(只考慮函數依賴的話,最高到BCNF,如果考慮到多值依賴最高到4NF)。
關于4NF還是沒搞清楚。
轉載于:https://www.cnblogs.com/bewolf/p/4441672.html
總結
- 上一篇: mysql-ubuntu卸载安装mysq
- 下一篇: PI数据库的使用-PI System M