第一正規化:資料庫表中的字段都是單一屬性的,不可再分。
第二正規化:所有非關鍵字段都完全依賴於任意一組候選關鍵字。
假定選課關係表為ss(學號, 姓名, 年齡, 課程名稱, 成績, 學分),關鍵字為組合關鍵字(學號, 課程名稱),因為存在如下決定關係:
(學號, 課程名稱) → (姓名, 年齡, 成績, 學分)
這個資料庫表不滿足第二正規化,因為存在如下決定關係:
(課程名稱) → (學分)
(學號) → (姓名, 年齡)
即存在組合關鍵字中的字段決定非關鍵字的情況。
由於不符合2nf,這個選課關係表會存在如下問題:1) 資料冗餘:同一門課程由n個學生選修,」學分」就重複n-1次;同乙個學生選修了門課程,姓名和年齡就重複了-1次。2) 更新異常:若調整了某門課程的學分,資料表中所有行的」學分」值都要更新,否則會出現同一門課程學分不同的情況。3) 插入異常:假設要開設一門新的課程,暫時還沒有人選修。由於還沒有」學號」關鍵字,課程名稱和學分也無法記錄入資料庫。4) 刪除異常:假設一批學生已經完成課程的選修,這些選修記錄就應該從資料庫表中刪除。但是,與此同時,課程名稱和學分資訊也被刪除了。很顯然,這也會導致插入異常。
把選課關係表ss改為如下三個表:
學生:sn(學號, 姓名, 年齡);
課程:s(課程名稱, 學分);
選課關係:ss(學號, 課程名稱, 成績)。
這樣的資料庫表是符合第二正規化的,消除了資料冗餘、更新異常、插入異常和刪除異常。
另外,所有單關鍵字的資料庫表都符合第二正規化,因為不可能存在組合關鍵字。
第三正規化:在第二正規化的基礎上,資料表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函式依賴則符合第三正規化。所謂傳遞函式依賴,指的是如果存在」a → → 「的決定關係,則傳遞函式依賴於a。因此,滿足第三正規化的資料庫表應該不存在如下依賴關係:關鍵字段 → 非關鍵字段x → 非關鍵字段y
假定學生關係表為sn(學號, 姓名, 年齡, 所在學院, 學院地點, 學院**),關鍵字為單一關鍵字」學號」,因為存在如下決定關係:
(學號) → (姓名, 年齡, 所在學院, 學院地點, 學院**)
這個資料庫是符合2nf的,但是不符合3nf,因為存在如下決定關係:
(學號) → (所在學院) → (學院地點, 學院**)
即存在非關鍵字段」學院地點」、」學院**」對關鍵字段」學號」的傳遞函式依賴。
它也會存在資料冗餘、更新異常、插入異常和刪除異常的情況,讀者可自行分析得知。
把學生關係表分為如下兩個表:
學生:(學號, 姓名, 年齡, 所在學院);
學院:(學院, 地點, **)。
這樣的資料庫表是符合第三正規化的,消除了資料冗餘、更新異常、插入異常和刪除異常。
關於Oracle中的三正規化
經過幾天的折騰,終於安穩了下來,瀋陽這天氣真是悶得要死人,不到五點就熱的睡不著了。今天是開課的第一天,第一門課程就開始講oracle,突然想到三正規化這個問題,小小的總結下 這幾條規則是由乙個姓范的人定的 共有6範,構造資料庫必須遵循一定的規則。在關聯式資料庫中,這種規則就是正規化。正規化是符合某一...
Oracle資料庫三正規化
在關聯式資料庫中的每個關係都需要進行規範化,使之達到一定的規範化程度,從而提高資料的結構化 共享性 一致性和可操作性。規範化是把資料庫組織成在保持儲存資料完整性的同時最小化冗餘資料的結構的過程。規範化的資料庫必須符合關係模型的正規化規則,正規化可以防止在使用資料庫時出現不一致的資料,並防止資料丟失。...
一正規化 二正規化 三正規化
1 第一正規化 如果乙個關係模式r的所有屬性都是不可分的基本資料項,則r 1nf。簡單的說,第一正規化就是每乙個屬性都不可再分。不符合第一正規化則不能稱為關聯式資料庫。第一正規化 1nf 要求資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值。若某一列有多個值,可以將該列單獨拆分成乙個實...