資料庫的3個正規化之間的區別

2021-07-07 05:38:20 字數 1105 閱讀 6185

第一正規化(1nf):屬性不可拆分 或 無重複的列

這個簡單,就是乙個屬性不允許再分成多個屬性來建立列。事實上,在目前的dbms中是不可能拆分屬性的,因為他們不允許這麼做。

第二正規化(2nf):完全函式依賴

先講講什麼是部分函式依賴。

部分函式依賴,就是多個屬性決定另乙個屬性,但事實上,這多個屬性是有冗餘的。例如,(學號,班級)->姓名,事實上,只需要學號就能決定姓名,因此班級是冗餘的,應該去掉。

滿足第二正規化的資料庫設計必須先滿足第一正規化。

因此第二正規化的目標就是消除函式依賴關係中左邊存在的冗餘屬性。

3.第三正規化(3nf):消除傳遞依賴

不依賴於其他非主屬性(消除傳遞依賴)。

滿足第三正規化的資料庫必須先滿足第二正規化。

也就是,資料庫中的屬性依賴僅能依賴於主屬性,不存在於其他非主屬性的關聯。

例如,圖書,圖書室的關係。圖書包括編號、出版商、頁碼等資訊,圖書室包括圖書室編號、所存圖書(外來鍵)。其中,圖書室的表中不應該儲存任何圖書的具體資訊(例如,出版商。。),而只能通過主鍵圖書編號來獲得對應圖書的資訊。

4.bc正規化(bcnf):

(1)所有非主屬性對每乙個碼都是完全函式依賴;

(2)所有的主屬性對於每乙個不包含它的碼,也是完全函式依賴;

(3)沒有任何屬性完全函式依賴於非碼的任意乙個組合。

r屬於3nf,不一定屬於bcnf,如果r屬於bcnf,一定屬於3nf。

5.第四正規化(4nf):

對於每乙個x->y,x都能找到乙個候選碼( 若關係中的某一屬性組的值能唯一地表示乙個元組,而其真子集不行,則稱該屬性組為候選碼)。

最後舉個例子(網上的):

學生表

學號 姓名

教師學生關係編號

系編號

愛好編號

一正規化,就是表裡的字段不能在劃分屬性了。

二正規化,滿足一正規化基礎,表裡不存在與學號沒關係的資訊

三正規化,滿足二正規化的基礎上,表裡不存在其他欄位的關聯,

bc正規化,滿足三正規化的基礎上,就是學生表裡的每行都不存在重複的資訊

第四正規化,滿足bc正規化,就是連愛好這樣字段,也不能出現 」籃球,足球「;要建立乙個愛好編號表,

資料庫的四個正規化之間的區別

1.第一正規化 1nf 屬性不可拆分 或 無重複的列 這個簡單,就是乙個屬性不允許再分成多個屬性來建立列。事實上,在目前的dbms中是不可能拆分屬性的,因為他們不允許這麼做。2.第二正規化 2nf 完全函式依賴 先講講什麼是部分函式依賴。部分函式依賴,就是多個屬性決定另乙個屬性,但事實上,這多個屬性...

資料庫正規化區別

概念 1 實體 entity 就是實際應用中要用資料描述的事物,一般是名詞。2 字段 fields 就是一項資料,也就是我們平常所說的 列 4 鍵 key 可唯一標識一條記錄的乙個欄位或字段集,有時翻譯為 碼 5 主鍵 primary key 用於唯一標識乙個表中的一條記錄的鍵。每個主鍵應該具有下列...

mysql第四正規化 資料庫的四個正規化之間的區別

資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂七八糟,不僅給資料庫的程式設計人員製造麻煩,而且面目可憎,可能儲存了大量不需要的冗餘資訊。正規化說明 1.1 第一...