資料庫正規化

2021-08-26 05:39:25 字數 2090 閱讀 8392

一.資料庫中的正規化:

正規化, 英文名稱是 normal form,它是英國人 e.f.codd(關聯式資料庫的老祖宗)在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法,以下就是對這三個正規化的基本介紹:

第一正規化(1nf):

資料表中的每一列(字段),必須是不可拆分的最小單元,也就是確保每一列的原子性。

例如: userinfo: '山東省煙台市 1318162008' 依照第一正規化必須拆分成

userinfo: '山東省煙台市'   usertel: '1318162008'兩個字段

第二正規化(2nf):

滿足1nf後要求表中的所有列,都必需依賴於主鍵,而不能有 任何一列與主鍵沒有關係(乙個表只描述一件事情)。

例如:訂單表只能描述訂單相關的資訊,所以所有的字段都必須與訂單id相關。

產品表只能描述產品相關的資訊,所以所有的字段都必須與產品id相關。

因此在同一張表中不能同時出現訂單資訊與產品資訊。

例如:訂單表中需要有客戶相關資訊,在分離出客戶表之後,訂單表中只需要有乙個使用者

id即可,而不能有其他的客戶資訊,因為其他的使用者資訊是直接關聯於使用者id,而不是關聯

於訂單id。

正規化的包含關係。乙個資料庫設計如果符合第二正規化,一定也符合第一正規化。如果符合第三正規化,一定也符合第二正規化…

正規化理論是為了解決以上提到四種異常。

高階別正規化的依賴於低階別的正規化,1nf 是最低級別的正規化。

屬性不可分。

每個非主屬性完全函式依賴於鍵碼。

可以通過分解來滿足。

分解前

snosname

sdept

mname

cname

grade

1學生-1

學院-1

院長-1

課程-1902

學生-2

學院-2

院長-2

課程-2802

學生-2

學院-2

院長-2

課程-1

1003

學生-3

學院-2

院長-2

課程-2

95以上學生課程關係中, 為鍵碼,有如下函式依賴:

grade 完全函式依賴於鍵碼,它沒有任何冗餘資料,每個學生的每門課都有特定的成績。

sname, sdept 和 mname 都部分依賴於鍵碼,當乙個學生選修了多門課時,這些資料就會出現多次,造成大量冗餘資料。

分解後

關係-1

snosname

sdept

mname

1學生-1

學院-1

院長-1

2學生-2

學院-2

院長-2

3學生-3

學院-2

院長-2

有以下函式依賴:

關係-2

snocname

grade

1課程-1902

課程-2802

課程-1

1003

課程-2

95有以下函式依賴:

非主屬性不傳遞函式依賴於鍵碼。

上面的 關係-1 中存在以下傳遞函式依賴:

可以進行以下分解:

關係-11

snosname

sdept

1學生-1

學院-1

2學生-2

學院-2

3學生-3

學院-2

關係-12

sdept

mname

學院-1

院長-1

學院-2

院長-2

注意事項:

1.第二正規化與第三正規化的本質區別:在於有沒有分出兩張表。

第二正規化是說一張表中包含了多種不同實體的屬性,那麼必須要分成多張表,第三正規化是要求已經分好了多張表的話,一張表中只能有另一張標的id,而不能有其他任何資訊,(其他任何資訊,一律用主鍵在另一張表中查詢)。

2.必須先滿足第一正規化才能滿足第二正規化,必須同時滿足第一第二正規化才能滿足第三正規化。

資料庫 資料庫正規化

關聯式資料庫的設計規範。不同的規範要求被稱為不同的正規化,越高的正規化資料庫冗餘越小。減少資料庫中資料冗餘的過程 1 第一正規化 1nf 在關係模式r中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的資料項,則稱r滿足1nf。例如表所示的教師職稱情況關係就不滿足1nf。原因在於,該關係模式中...

資料庫正規化 三正規化

所謂第一正規化 1nf 是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化 1nf 表中的每個域值只能是實體的乙個屬性或乙個屬性的...

資料庫正規化

注 表在定義中被稱為關係,記作r 欄位在定義中被稱作屬性 模式 資料庫中有三種模式,外模式,內模式,模式 粗體是關鍵字的意思 斜體為外來鍵 以前寫下來的,但是用了多年的帳號已經忘了,唯有把文章轉到這裡來了 真暈哦 http blog.csdn.net fantasylu archive 2004 0...