1. 程式人生 > >三正規化通俗解釋

三正規化通俗解釋

關係資料庫中的關係必須滿足一定的要求。滿足不同程度要求的為不同正規化。資料庫的設計正規化是資料庫設計所需要滿足的規範。只有理解資料庫的設計正規化,才能設計出高效率、優雅的資料庫,否則可能會設計出錯誤的資料庫.

目前,主要有六種正規化:第一正規化、第二正規化、第三正規化、BC正規化、第四正規化和第五正規化。滿足最低要求的叫第一正規化,簡稱1NF。在第一正規化基礎上進一步滿足一些要求的為第二正規化,簡稱2NF。其餘依此類推。

正規化可以避免資料冗餘,減少資料庫的空間,減輕維護資料完整性的麻煩,但是操作困難,因為需要聯絡多個表才能得到所需要資料,而且正規化越高效能就會越差。要權衡是否使用更高正規化是比較麻煩的,一般在專案中,用得最多的也就是第三正規化,我認為使用到第三正規化也就足夠了,效能好而且方便管理資料。

函式依賴,如果一個表中某一個欄位Y的值是由另外一個欄位或一組欄位X的值來確定的,就稱為Y函式依賴於X。


第一正規化(1NF)
定義:如果關係模式R的每個關係r的屬性都是不可分的資料項,那麼就稱R是第一正規化的模式。
簡單的說,每一個屬性都是原子項,不可分割。
1NF是關係模式應具備的最起碼的條件,如果資料庫設計不能滿足第一正規化,就不稱為關係型資料庫。關係資料庫設計研究的關係規範化是在1NF之上進行的。

例如(學生資訊表):
學生編號 姓名 性別 聯絡方式
20080901 張三 男 email:[email protected],phone:88886666
20080902 李四 女 email:

[email protected],phone:66668888

以上的表就不符合,第一正規化:聯絡方式欄位可以再分,所以變更為正確的是:

學生編號 姓名 性別 電子郵件 電話
20080901 張三 男 [email protected] 88886666
20080902 李四 女 [email protected] 66668888

第二正規化(2NF)
定義:如果關係模式R是1NF,且每個非主屬性完全函式依賴於候選鍵,那麼就稱R是第二正規化。
簡單的說,第二正規化要滿足以下的條件:首先要滿足第一正規化,其次每個非主屬性要完全函式依賴與候選鍵,或者是主鍵。也就是說,每個非主屬性是由整個主鍵函式決定的,而不能由主鍵的一部分來決定。

例如(學生選課表):
學生 課程 教師 教師職稱 教材 教室 上課時間
李四 Spring 張老師 java講師 《Spring深入淺出》 301 08:00
張三 Struts 楊老師 java講師 《Struts in Action》 302 13:30

這裡通過(學生,課程)可以確定教師、教師職稱,教材,教室和上課時間,所以可以把(學生,課程)作為主鍵。但是,教材並不完全依賴於(學生,課程),只拿出課程就可以確定教材,因為一個課程,一定指定了某個教材。這就叫不完全依賴,或者部分依賴。出現這種情況,就不滿足第二正規化。

修改後,選課表:
學生 課程 教師 教師職稱 教室 上課時間
李四 Spring 張老師 java講師 301 08:00
張三 Struts 楊老師 java講師 302 13:30

課程表:
課程 教材 
Spring 《Spring深入淺出》 
Struts 《Struts in Action》

所以,第二正規化可以說是消除部分依賴。第二正規化可以減少插入異常,刪除異常和修改異常。

第三正規化(3NF)
定義:如果關係模式R是2NF,且關係模式R(U,F)中的所有非主屬性對任何候選關鍵字都不存在傳遞依賴,則稱關係R是屬於第三正規化。  
簡單的說,第三正規化要滿足以下的條件:首先要滿足第二正規化,其次非主屬性之間不存在函式依賴。由於滿足了第二正規化,表示每個非主屬性都函式依賴於主鍵。如果非主屬性之間存在了函式依賴,就會存在傳遞依賴,這樣就不滿足第三正規化。

上例中修改後的選課表中,一個教師能確定一個教師職稱。這樣,教師依賴於(學生,課程),而教師職稱又依賴於教師,這叫傳遞依賴。第三正規化就是要消除傳遞依賴。

修改後,選課表:

學生 課程 教師 教室 上課時間
李四 Spring 張老師 301 08:00
張三 Struts 楊老師 302 13:30

教師表:
教師 教師職稱
張老師 java講師
楊老師 java講師

這樣,新教師的職稱在沒被選課的時候也有地方存了,沒人選這個教師的課的時候教師的職稱也不至於被刪除,修改教師職稱時只修改教師表就可以了。

簡單的說,
第一正規化就是原子性,欄位不可再分割;
第二正規化就是完全依賴,沒有部分依賴;
第三正規化就是沒有傳遞依賴。

相關推薦

正規化通俗解釋

關係資料庫中的關係必須滿足一定的要求。滿足不同程度要求的為不同正規化。資料庫的設計正規化是資料庫設計所需要滿足的規範。只有理解資料庫的設計正規化,才能設計出高效率、優雅的資料庫,否則可能會設計出錯誤的資料庫. 目前,主要有六種正規化:第一正規化、第二正規化、第三正規化、

資料庫 三大正規化 通俗解釋

一、三大正規化通俗解釋: (1)簡單歸納:   第一正規化(1NF):欄位不可分;  第二正規化(2NF):有主鍵,非主鍵欄位依賴主鍵;  第三正規化(3NF):非主鍵欄位不能相互依賴。 (2)解釋:   1NF:原子性。 欄位不可再分,否則就不是關係資料庫;;  2NF:唯一性 。一個表只說明一個事

資料庫正規化通俗說法,書上說的太蛋疼

簡單來說三句話: 1NF、列不可分; 2NF、不存在部分依賴; 3NF、不存在傳遞依賴。 解釋: 1NF:原子性,即欄位不可以再分。 2NF:唯一性,不可以把多種資料儲存在同一張表中,即一張表只

資料正規化 及 BCNF解釋

大家在資料設計中經常接觸到正規化設計,那到底什麼設計是合乎正規化的,在解釋正規化之前,先來講解下正規化是什麼? 正規化: 字面意思就是規範,在資料庫設計中指資料表各個欄位間的關聯關係。 第一正規化:課本上的解釋是欄位不可拆分的最小單元。 這個很簡單,基本上現在主流的RDMS,你設計出

CAN匯流排學習記錄之:匯流排中主動錯誤和被動錯誤的通俗解釋

首先建議把廣泛使用的“主動錯誤”和“被動錯誤”概念換成“主動報錯”和“被動報錯”。 1. 主動報錯站點 只要檢查到錯誤,它立即“主動地”發出錯標識。所謂“出錯標識“,它本身就是一個“錯誤的位序列”(連續的6個顯性位,不滿足 CAN 協議的“最多5個連續的同性位”要求),目的是“主動地”告訴大家:即使你們沒

如何解釋關係資料庫的第一第二第正規化

轉載:https://www.zhihu.com/question/24696366/answer/29189700 國內絕大多數院校用的王珊的《資料庫系統概論》這本教材,某些方面並沒有給出很詳細很明確的解釋,與實際應用聯絡不那麼緊密,你有這樣的疑問也是挺正常的。我教《資料庫原理》這門課

【SSH進階之路】Spring的IOC逐層深入——Spring的IOC原理[通俗解釋一下](

1. IoC理論的背景 我們都知道,在採用面向物件方法設計的軟體系統中,它的底層實現都是由N個物件組成的,所有的物件通過彼此的合作,最終實現系統的業務邏輯。 圖1:軟體系統中耦合的物件 如果我們開啟機械式手錶的後蓋,就會看到與上面類似的情形,各個齒輪分別帶動時針、分針和秒針

新興概念通俗解釋

支持 一個 原理 ron 知乎 程序 麻煩 tro 速度 1.分布式和集群 分布式:一個業務分拆多個子業務,部署在不同的服務器上集群:同一個業務,部署在多個服務器上 --https://www.zhihu.com/question/20004877 小飯店原來只有一個

KMP算法的next[]數組通俗解釋

blog 失敗 spa 針對 一個 tool 等了 void 前綴 我們在一個母字符串中查找一個子字符串有很多方法。KMP是一種最常見的改進算法,它可以在匹配過程中失配的情況下,有效地多往後面跳幾個字符,加快匹配速度。 當然我們可以看到這個算法針對的是子串有對稱屬性,如果

何謂雲計算?雲計算通俗解釋

比喻 全世界 硬件 存儲 客戶 資料 發展 ear 谷歌 大家天天聽到媒體說雲計算,什麽阿裏雲、百度雲、騰訊雲等,到底什麽是雲計算呢?在遠程的數據中心裏,成千上萬臺電腦和服務器連接成一片電腦雲。因此,雲計算甚至可以讓你體驗每秒10萬億次的運算能力,擁有這麽強大的計算能力可以

雲計算通俗解釋,雲計算需要學什麽課程?

自己 層次 傳輸 空間 b數 以及 配置 基於 市場 雲計算是近兩年IT界最炙手可熱的概念,遠到歐美眾多IT巨頭,近到國內各家廠商,無不爭相宣揚自己的雲計算解決方案:從Amazon到360,隨處可見帶有雲計算字眼的應用。那麽究竟什麽是雲計算,雲計算和類似於我們這種普通的IT

小波變換(wavelet transform)的通俗解釋(一)

edi spa jpeg 疊加 空間 只知道 內容 信號分析 長度 小波變換 小波,一個神奇的波,可長可短可胖可瘦(伸縮平移),當去學習小波的時候,第一個首先要做的就是回顧傅立葉變換(又回來了,唉),因為他們都是頻率變換的方法,而傅立葉變換是最入門的,也是

雲計算通俗解釋,雲計算專業就業前景

徹底 資源池 存儲 超級 中心 進步 我們 特點 一個 雲計算時代,網絡就是一個超級大規模的計算機,它就像雲一樣無處不在,我們隨時在上面存儲資源。後臺有一個無所不在、巨大的存儲力量,像我們的大腦一樣幫助我們記憶,這是一件特別美好的事情。 信息化在全球已經有六七十年的歷史,從

什麽叫雲計算?雲計算通俗解釋

理解 2016年 自來水 月份 雲計 概念 域名 包括 是我 “擁抱雲計算,遇見下一個時代”。這是一句早在2016年10月份就流傳的一句話,現在已經過去了兩年,今天看來,雲計算仍然是這個時代最好的機遇。從雲計算概念被熟知,雲計算在中國已經快十年了讓我們一起去了解。 “雲計算

Python中 __init__的通俗解釋

定義類的時候,若是新增__init__方法,那麼在建立類的例項的時候,例項會自動呼叫這個方法,一般用來對例項的屬性進行初使化。 比如: class testClass:     def __init__(self, name, gender): //定義 __init__

EM演算法通俗解釋

前言   EM演算法大家應該都耳熟能詳了,不過很多關於演算法的介紹都有很多公式。當然嚴格的證明肯定少不了公式,不過推公式也是得建立在瞭解概念的基礎上是吧。所以本文就試圖以比較直觀的方式談下對EM演算法的理解,儘量不引入推導和證明,希望可以有助理解演算法的思路。 介紹   EM方法是專門為優化似然函式設計

正規化-簡單理解

文章部分內容擷取自韓順平老師教學資料。 什麼樣的表才是符合3NF (正規化) 表的正規化,是首先符合1NF, 才能滿足2NF , 進一步滿足3NF   1NF: 即表的列的具有原子性,不可再分解,即列的資訊,不能分解, 只有資料庫是關係型資料庫(mysql/oracle

Spring---IOC原理 Spring的IOC原理[通俗解釋一下]

Spring的IOC原理(轉載) 在網上看到一篇文章,感覺寫得挺不錯的,轉載一下,本文轉載自:http://blog.csdn.net/m13666368773/article/details/7802126 Spring的IOC原理[通俗解釋

簡單通俗解釋內外網IP與埠對映

IP:分為外網IP和內網IP 也就是我們說的外網IP屬於實體IP 實體IP,它是獨一無二的,在網路的世界裡,每一部計算機的都有他的位置,一個 IP 就好似一個門牌!例如,你要去百度的網站的話,就要去『180.149.132.47』這個 IP 位置!這些可以直接在全世界互聯上溝通的 IP 就被

資料表設計思想,ER圖及正規化

資料表設計思想 設計流程 需求分析:根據使用者的需求,分析出需要記錄的資料 需求設計:根據分析出的資料,設計E-R模型圖 詳細設計:將E-R模型圖轉換成資料表 三大正規化:使用資料庫三大正規化的設計思想對資料表進行稽核 E-R