三正規化(詳解 例子)

2021-10-08 14:50:34 字數 1358 閱讀 8365

第一正規化(1nf):每一列都是不可分割的原子資料項(什麼意思,每一項都不可分割,像下面的**就能分割,所以它連第一正規化都算不上

分割後的樣子

(它就是第一正規化了)

第二正規化:在1nf基礎上,非碼屬性必須完全依賴於候選碼(在1nf基礎上消除非主屬性對主碼的部分函式依賴)

幾個重要的概念:

1.函式依賴:a-->b,如果通過a屬性(屬性組)的值,可以確定唯一的b屬性的值,則稱b依賴於a

例如:學號---->姓名    (學號、課程名稱 的屬性組)-->  分數

2.完全函式依賴:a-->b   如果a是乙個屬性組,則b屬性值的確定需要依賴a屬性組的中所有的屬性值

例如:(學號、課程名稱)--> 分數

3. 部分函式依賴: a-->b   如果a是乙個屬性組,則b屬性值的確定只需要依賴a屬性組的中某一些的屬性值(第二正規化就是消除這個)

例如:(學號 、課程名稱)--> 姓名

4.傳遞函式依賴:a -- >b , b -- >c 如果通過a屬性(屬性組)的值,可以確定唯一的b屬性的值,再通過b屬性(屬性組)的值,可以唯一確定c屬性的值,那麼稱c傳遞依賴於a

例如: 學號 --> 系名  ,系名 --> 系主任 

5.碼 :如果在一張表中,乙個屬性或屬性組,被其他所有的屬性(非主屬性)所完全函式依賴,則稱這個屬性(屬性組)為該錶的碼。(上面的表,學號和課程名稱所構成的屬性組就是碼)

例如: 該表中碼為 (學號、課程名稱)

主屬性: 碼中所有屬性

非主屬性: 除碼之外的所有屬性

在上面那張表中我們可知碼為(學號、課程名稱),但是姓名、系名、系主任都部分依賴於碼(主屬性),這不符合第二正規化,所以進行拆分如下

第一張表碼為(學號、課程名稱),第二張表為(學號),它們都是完全依賴的,因此符合第二正規化。

第三正規化(3nf):在2nf的基礎上,任何的非主屬性不依賴於其他非主屬性 (在第二正規化基礎上消除傳遞依賴)

注意看第二正規化的學生表:存在系主任依賴於系名 (系名---> 系主任),所以不符合第三正規化

繼續進行拆分

這樣就符合第三正規化...

資料庫三正規化詳解 例子

資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂七八糟,不僅給資料庫的程式設計人員製造麻煩,而且面目可憎,可能儲存了大量不需要的冗餘資訊。正規化說明 1.1 第一...

三大正規化詳解

正規化 英文名稱是 normal form,它是英國人 e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種正規化,依次是 1nf,2nf,3nf,b...

資料庫三正規化詳解

所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能同時有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性 如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化 1nf 中表的每一行只包含乙個例...