資料庫 正規化

2021-10-07 07:43:47 字數 1268 閱讀 5864

第一正規化:資料不再分

例:不允許這樣

第二正規化:有(組合)主鍵可以唯一標識一行

所有非主屬性都要和該資料表的主鍵有完全依賴關係

如果有哪些非主屬性只和主鍵的一部份有關的話,它就不符合第二正規化。

完全依賴: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...