關於Oracle中的三正規化

2021-06-16 23:56:07 字數 1540 閱讀 9222

經過幾天的折騰,終於安穩了下來,瀋陽這天氣真是悶得要死人,不到五點就熱的睡不著了。今天是開課的第一天,第一門課程就開始講oracle,突然想到三正規化這個問題,小小的總結下:

這幾條規則是由乙個姓范的人定的:共有6範,構造資料庫必須遵循一定的規則。在關聯式資料庫中,這種規則就是正規化。正規化是符合某一種級別的關係模式的集合。關聯式資料庫中的關係必須滿足一定的要求, 即滿足不同的正規化。目前關聯式資料庫有六種正規化:第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)、第四正規化(4nf)、第五正規化(5nf)和 第六正規化(6nf)。滿足最低要求的正規化是第一正規化(1nf)。在第一正規化的基礎上進一步滿足更多要求的稱為第二正規化(2nf),其餘正規化以次類推。一般 說來,資料庫只需滿足第三正規化(3nf)就行了。下面我們舉例介紹第一正規化(1nf)、第二正規化(2nf)和第三正規化(3nf)。

第一正規化(1nf;the first normal form)

第一正規化是最低的規範化要求,第一正規化要求資料表不能存在重複的記錄,即存在乙個關鍵字。1nf的第二個要求是每個欄位都不可再分,即已經分到最小,關聯式資料庫的定義就決定了資料庫滿足這一條。主關鍵字達到下面幾個條件:

1. 主關鍵字段在表中是唯一的

2. 主關鍵字段中沒有複本

3. 主關鍵字段不能存在空值

4. 每條記錄都必須有乙個主關鍵字

5. 主關鍵字是關鍵字的最小子集

滿足1nf的關係模式有許多不必要的重複值,並且增加了修改其資料時疏漏的可能性。為了避免這種資料冗餘和更新資料的遺漏,就引出了第二正規化(2nf)。

第二正規化(the second normal form)

定義:如果乙個關係屬於1nf,且所有的非主關鍵字段都完全地依賴於主關鍵字,則稱之為第二正規化,簡記為2nf。

為了說明問題現舉乙個例子來說明:有乙個庫房儲存的庫有四個字段(零件號碼,倉庫號碼,零件數量,倉庫位址),

這個庫符合1nf,其中「零件號碼」和「倉庫號碼」構成主關鍵字。

但是因為「倉庫位址」只完全依賴與「倉庫號碼」,即只依賴於主關鍵字的一部分,所以它不符合2nf,

這樣首先存在資料冗餘,因為倉庫數量可能不多。

其次,存在如果更改倉庫位址時,如果漏改了某一記錄,存在資料不一致性。

再次,如果某個倉庫的零件出完了,那麼這個倉庫位址就丟失了,即這種關係不允許存在某個倉庫中不放零件的情況。

我們可以用投影分解的方法消除部分依賴的情況,而使關係達到2nf的標準。

方法是從關係中分解出新的二維表,是每個二維表中所有的非關鍵字都完全依賴於各自的主關鍵字。

我們可以如下分解:分解成兩個表(零件號碼,倉庫號碼,零件數量)和(倉庫號碼,倉庫位址)。

這樣就完全符合2nf了。

第三正規化(the third normal form)

定義:如果乙個關係屬於2nf,且每個非關鍵字不傳遞依賴於主關鍵字,這種關係是3nf。

從2nf中消除傳遞依賴,就是3nf。比如有乙個表(姓名,工資等級,工資額),其中姓名是關鍵字,

此關係符合2nf,但是因為工資等級決定工資額,這就叫傳遞依賴,它不符合3nf,

我們同樣可以使用投影分解的辦法分解成兩個表:(姓名,工資等級),

Oracle三正規化

第一正規化 資料庫表中的字段都是單一屬性的,不可再分。第二正規化 所有非關鍵字段都完全依賴於任意一組候選關鍵字。假定選課關係表為ss 學號,姓名,年齡,課程名稱,成績,學分 關鍵字為組合關鍵字 學號,課程名稱 因為存在如下決定關係 學號,課程名稱 姓名,年齡,成績,學分 這個資料庫表不滿足第二正規化...

Oracle資料庫三正規化

在關聯式資料庫中的每個關係都需要進行規範化,使之達到一定的規範化程度,從而提高資料的結構化 共享性 一致性和可操作性。規範化是把資料庫組織成在保持儲存資料完整性的同時最小化冗餘資料的結構的過程。規範化的資料庫必須符合關係模型的正規化規則,正規化可以防止在使用資料庫時出現不一致的資料,並防止資料丟失。...

關於MySQL的正規化

1 什麼是正規化?正規化就是在設計資料庫表的時候,可以遵循的規範。正規化分為 第一正規化 第二正規化 第三正規化 其他更高階的正規化。2 第一正規化 1nf 是指在關係模式資料中,要求所有的字段都應該具有原子性,不可再分。如下圖所示 每個學生的相關資訊都不能再拆分。但是當修改張三到mysqlo2的時...