為什麼會出現三大正規化呢?什麼是三大正規化?首先我們需要來理解以下的基本概念:
關係:資料庫中的一張二維表
資料依賴:資料間的相互關係
函式依賴:屬於資料依賴的乙個分支,前者資料值確定後,後者資料值唯一指定,也就是說後者資料的值依賴前者!例如:由於乙個學號只對應乙個學生,乙個學生只在乙個系,所以當學號確定後,他的姓名以及所在的系就唯一確定了。
然後,我們來建立乙個資料庫,該資料庫涉及的物件包括學號(sno)、所在系(sdept)、每個系的學生住處(sloc)、選修課程號(cno)和成績(grade),我們得到該關係模式:
slc(sno,sdept,sloc,cno,grade)
它的主碼:由sno和cno共同決定!
正規化:符合某一種級別的關係模式的集合
1.第一正規化:如果乙個關係模式中的所有屬性都是不可分的基本資料項,那麼就屬於第一正規化,基本上所有關係模式都滿足第一正規化!
所以上述建立的資料庫也屬於第一正規化!
資料庫之間的函式依賴包括:
(sno,cno)--->grade
sno--->sdept
(sno,cno)--->sdept
sno--->sloc
(sno,cno)--->sloc
sdept--->sloc(因為每個系只住在乙個地方)
通過實際生活,我們發現這個關係存在如下一些問題:
(1)插入異常:假如要插入乙個未選課學生的資訊,因為主碼丟失,所以插入異常
(2)刪除異常:加入乙個學生不選修3號課程了,那麼我們必須將他的選修3和課程刪除,但課程號是主碼,刪除整條學生記錄會跟著刪除,即不應該刪除的資訊也刪除了
(3)資料冗餘度大:如果乙個學生選修了10門課程,那麼他的sdept和sloc就會在資料庫中重複儲存10次
(4)修改複雜:假如乙個學生選修了10門課程,但後來轉系了,那麼我們就要重複修改每一條sdept和sloc的值
因為出現了上述這些問題,為了解決,出現了第二正規化:
分析原因:sdept,sloc非主屬性對碼的部分函式依賴。
2.第二正規化:在第一正規化的關係模式上消除部分函式依賴,分解形成的關係模式
將上述關係模式slc分解成如下兩個關係模式:
sc(sno,cno,grade)
sl(sno,sdept,sloc)
分解後的關係模式中,可以發現,非主屬性完全依賴主碼!
解決了第一正規化遺留的問題:
(1)在sl關係中可以插入尚未選課的學生記錄
(2)刪除某學生的選修記錄只需要在sc關係中進行,不會影響該學生在sl關係中的資訊
(3)某個學生選修10門課程,只需要在sl關係中儲存一次sdept和sloc的值
(4)某個學生轉系後,也只需要在sl關係中修改一次該學生sdept和sloc的值
但是通過實際生活,我們發現這個關係也存在如下一些問題:
(1)插入異常:如果某個原因,某個系剛成立,還沒有學生,那麼因為沒有主碼的支援,該系的資訊就無法存入資料庫中
(2)刪除異常:如果某個系學生全部畢業了,在刪除該系學生記錄的同時,也將這個系的資訊丟掉了!
(3)資料冗餘度大:每乙個系的學生都住在乙個地方,關於系的住處的資訊卻重複出現,出現的次數與該系的學生人數有關
(4)修改複雜:當某個系的位址傳送改變時候,該系所以學生的sloc都有重複修改
因為出現了上述這些問題,為了解決,出現了第三正規化:
分析原因:sloc傳遞函式依賴與sno
3.第三正規化:在第二正規化的關係模式上消除傳遞函式依賴,分解形成的關係模式
將上述關係模式sl分解成如下兩個關係模式:
sd(sno,sdept)
dl(sdept,sloc)
解決了第二正規化的遺留問題:
(1)在dl關係中可以插入無在校學生的系的資訊
(2)某個系的學生全部畢業了,只是刪除了sd中的記錄,對dl中系的資訊沒影響
(3)每個系的學生的sloc只需要在dl中儲存一次
(4)某個系位址改變,也只需要在dl中改變一次sloc的值
資料庫之三大正規化
在前面我們已經介紹了 屬性值的概念,我們說,它是 不可分的 而第一正規化要求屬性也不可分。那麼它和屬性值不可分有什麼區別呢?給乙個例子 name address age小明 山東省濟寧市 13小紅 遼寧省大連市 12表中的address屬性實際上的可分的 這種情況不滿足第一正規化。不滿足第一正規化的...
資料庫設計之三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
資料庫設計之三大正規化
背景 表設計後,很可能結構不合理,出現資料重複儲存,簡稱資料的冗餘,這對資料的增刪改查帶來很多後患,所以我們需要審核是否合理,如何審核呢?需要一些有關資料庫設計的理論指導規則,這些規則業界簡稱資料庫的正規化。兩個重要概念 1 部分函式依賴 1 存在資料冗餘 2 新增資料會有異常 3 更新資料會有異常...