1nf
第一正規化是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能又重複的屬性。第一正規化的模式要求屬性值不可再**成更小部分,即屬性項不能是屬性組合或由組屬性組成。
2nf
第二正規化,是在第一正規化的基礎上建立起來的。,即滿足第二正規化必須先滿足第一正規化。第二正規化要求資料庫表中的每個例項或行必須可以唯一的區分。為實現區分通常需要為表加上乙個列,以儲存各個例項的唯一標識。如果關係模式r為第一正規化,並且r中的每個
非主屬性
完全函式依賴於r的某個候選鍵,則稱r為第二正規化(如果a是關係模式r的候選鍵的乙個屬性,則稱a是r的主屬性),例如,在選課關係表(學號,課程號,成績,學分),關鍵字為組合關鍵字(學號,課程號),但由於非主屬性學分依賴於課程號,對關鍵字(學號,課程號)只是部分依賴,而不是完全依賴,因此此種方式會導致資料冗餘以及更新異常等問題。二正規化也就是在第一正規化的基礎上消除部分依賴。
3nf
如果關係模式r是第二正規化,且每個非主屬性都不
傳遞依賴於r的候選鍵,則稱r是第三正規化的模式。學生表(學號,姓名,課程號,成績)為例,其中學生姓名無重名,所以該錶有兩個候選碼(學號,課程號)和(姓名,課程號),故存在函式依賴:學號——>姓名,(學號,課程號)——>成績,(姓名,課程號)——>成績,唯一的非主屬性成績對主碼不存在部分依賴,也不存在傳遞依賴,所以屬於第三正規化。三正規化也就是在第二正規化的基礎上消除傳遞依賴。
bcnf
如果關係模式是第三正規化,且每個
屬性都不
傳遞依賴於r的候選鍵,那麼稱r為bcnf的模式。假設倉庫管理關係表(倉庫號,儲存物品號,管理員號,數量),滿足乙個管理員只在乙個倉庫工作;乙個倉庫可以儲存多種物品,則存在如下關係:
(倉庫號,儲存物品號)——>(管理員號,數量)
(倉庫員號,儲存物品號)——>(倉庫號,數量)
所以,(倉庫號,儲存物品號)和(倉庫員號,儲存物品號)都是倉庫管理關係表的候選碼,表中的唯一非主鍵欄位為數量, 它是符合第三正規化的。但是,由於存在如下決定關係:
(倉庫號)———>(管理員號)
(管理員號)——>(倉庫號)
即存在關鍵字段決定關鍵字段的情況,因此不符合bcnf。把倉庫管理關係表分解為兩個關係表:倉庫管理表(倉庫號,管理員號)和倉庫表(倉庫號,儲存物品號,數量),這樣的資料庫表是符合bcnf的,並消除了刪除異常,插入異常和更新異常。
資料庫中的正規化
概念歸納 1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 不符合第一正規化的例子 關聯式資料庫中create不出這...
資料庫設計中的正規化
設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴德斯科正規化 bcnf 第四正規化 4nf 和第五正規...
資料庫中的正規化學習
學生 學號 sno 姓名 sname 系名 sdept 乙個學生只對應乙個學生,乙個學生只在乙個系學習。當學號確定時,姓名和系名也就確定了。屬性中的這種依賴關係就類似於數學中的函式y f x 自變數x確定之後,相應的函式y也就唯一地確定了。sname f son sdept f son son sn...