第一正規化:資料不再分
例:不允許這樣
第二正規化:有(組合)主鍵可以唯一標識一行
所有非主屬性都要和該資料表的主鍵有完全依賴關係
如果有哪些非主屬性只和主鍵的一部份有關的話,它就不符合第二正規化。
完全依賴:ab->c,僅憑單個a或單個b無法決定c
部分依賴:ab->c,單個a或單個b也能決定c
ps:如果主鍵只有乙個屬性的話,那就不用糾結這裡的條件了,肯定是第二正規化
第三正規化:不存在傳遞依賴
首先!! 並不是a->b,b->c,a->c就算傳遞依賴!!
傳遞依賴:
在關係模式中,如果y→x,x→a,且x不決定y,和a不屬於x(a不是x的子集),那麼稱y→a是傳遞依賴。再看第三正規化的判定:
關係模式r中若不存在這樣的碼x、屬性組y及非主屬性z,使得x→y,y→z,成立,y→x不成立,則稱r∈ 3nf。ps:是不存在,才判定為3nf
若有上面的關係,則不是3nf
可以參考:資料庫的一些名詞
再看看第三正規化要消除的物件:
對於乙個滿足2nd nf 的資料結構來說,表中有可能存在某些資料元素依賴於其他非關鍵字資料元素的現象,必須消除。這裡要消除的其實就是上面定義的y->z的情況(非主屬性z依賴於不是主鍵的y)
ps:如果表不存在非主屬性,都是主屬性,那麼可以直接3nf起步
因為前面的1~3nf都主要是對非主屬性進行約束
bc正規化:非平凡函式依賴x->y中x都是超鍵
還有乙個標準:不允許主屬性決定主屬性
ps:一般判斷到bc正規化就ok了
第四正規化:屬性項不允許多值
例:(使用者id,手機號碼)
id 手機號碼
10 157************66
10 138************65
存在乙個使用者擁有多個手機號碼的情況,則不滿足第四正規化
第五正規化:消除了4nf中的連線依賴
例:(銷售人員,供貨商,產品)
把上表拆解成三個小表:
(銷售人員,供貨商)(銷售人員,產品)(供貨商,產品)
資料庫 資料庫正規化
關聯式資料庫的設計規範。不同的規範要求被稱為不同的正規化,越高的正規化資料庫冗餘越小。減少資料庫中資料冗餘的過程 1 第一正規化 1nf 在關係模式r中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的資料項,則稱r滿足1nf。例如表所示的教師職稱情況關係就不滿足1nf。原因在於,該關係模式中...
資料庫正規化 三正規化
所謂第一正規化 1nf 是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化 1nf 表中的每個域值只能是實體的乙個屬性或乙個屬性的...
資料庫正規化
注 表在定義中被稱為關係,記作r 欄位在定義中被稱作屬性 模式 資料庫中有三種模式,外模式,內模式,模式 粗體是關鍵字的意思 斜體為外來鍵 以前寫下來的,但是用了多年的帳號已經忘了,唯有把文章轉到這裡來了 真暈哦 http blog.csdn.net fantasylu archive 2004 0...