初學資料庫三大正規化

2021-08-27 05:02:24 字數 3229 閱讀 1646

第一正規化:資料表的列不可再分

eg:看下面資料表,對於選課列明顯是可以再分的,所以它是違反第一正規化的。

+-------------------------------+

|學號 |姓名 |選課 |

|-------+------+----------------|

|10001 |張三 |數學,語文,英語|

|-------+------+----------------|

|10002 |李四 |語文,英語 |

|-------+------+----------------|

|10003 |王五 |語文,英語,歷史|

+-------------------------------+

第二正規化:在滿足第一正規化的基礎上,表中的非主鍵列不存在對主鍵的部分依賴

也就是受非主鍵列必須全部依賴於主鍵,通過主鍵可以唯一標識非主鍵列

看下面的學生選課表:

+---------------------------+

|學號 |課程 |成績 |課程學分|

|------+-----+-----+--------|

|10001 |數學 |100 |6 |

|------+-----+-----+--------|

|10001 |語文 |90 |2 |

|------+-----+-----+--------|

|10001 |英語 |85 |3 |

|------+-----+-----+--------|

|10002 |數學 |90 |6 |

|------+-----+-----+--------|

|10003 |數學 |99 |6 |

|------+-----+-----+--------|

|10004 |語文 |89 |2 |

+---------------------------+

表中主鍵為 (學號,課程),我們可以表示為(學號,課程)->(成績,課程學分),

表示所有非主鍵列 (成績,課程學分)都依賴於主鍵 (學號,課程)。 但是,表中

還存在另外乙個依賴:(課程)->(課程學分)。這樣非主鍵列 『課程學分』依賴於部分主鍵列 『課程』, 所以上表是不滿足第二正規化的。

我們把它拆成如下2張表:

學生選課表:

+-----------------+

|學號 |課程 |成績|

|------+-----+----|

|10001 |數學 |100 |

|------+-----+----|

|10001 |語文 |90 |

|------+-----+----|

|10001 |英語 |85 |

|------+-----+----|

|10002 |數學 |90 |

|------+-----+----|

|10003 |數學 |99 |

|------+-----+----|

|10004 |語文 |89 |

+-----------------+

課程資訊表:

+-------------+

|課程|課程學分|

|----+--------|

|數學| 6 |

|----+--------|

|語文| 3 |

|----+--------|

|英語| 2 |

+-------------+

那麼上面2個表,學生選課表主鍵為(學號,課程),課程資訊表主鍵為(課程),

表中所有非主鍵列都完全依賴主鍵。不僅符合第二正規化,還符合第三正規化。

再看這樣乙個學生資訊表:

+--------------------------------+

|學號 |姓名 |性別 |班級|班主任|

|------+-------+-----+----+------|

|10001 |張三 |男 |一班|小王 |

|------+-------+-----+----+------|

|10002 |李四 |男 |一班|小王 |

|------+-------+-----+----+------|

|10003 |王五 |男 |二班|小李 |

|------+-------+-----+----+------|

|10004 |張小三 |男 |二班|小李 |

+--------------------------------+

上表中,主鍵為:(學號),所有字段 (姓名,性別,班級,班主任)都依賴與主鍵(學號),不存在對主鍵的部分依賴。所以是滿足第二正規化.

第三正規化:在滿足第二正規化的基礎上,表中不存在對主鍵的傳遞依賴對於上面的學生資訊表,雖然滿足第二正規化,所有欄位都依賴主鍵(學號),但是,表中存在乙個傳力依賴,(學號)->(班級)->(班主任)。也就是說,(班主任)這個非主鍵列依賴與另外乙個非主鍵列(班級)。所以不符合第三正規化。把這個表拆分成如下2個表,

學生資訊表:

+----------------------+

|學號 |姓名 |性別|班級|

|-----+------+----+----|

|10001|張三 |男 |一班|

|-----+------+----+----|

|10002|李四 |男 |一班|

|-----+------+----+----|

|10003|王五 |男 |二班|

|-----+------+----+----|

|10004|張小三|男 |二班|

+----------------------+

班級資訊表:

+-----------+

|班級|班主任|

|----+------|

|一班|小王 |

|----+------|

|二班|小李 |

+-----------+

這樣,對主鍵的傳遞依賴就消失了。上面的2個表都符合第3正規化。

資料庫設計三大正規化資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

資料庫三大正規化

1 第一正規化 1nf 在任何乙個關聯式資料庫中,第一正規化 1nf 是對關係模式的基本要求,不滿足第一正規化 1nf 的資料庫就不是關聯式資料庫。所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現...

資料庫三大正規化

第一正規化 確保每列的原子性.如果每列 或者每個屬性 都是不可再分的最小資料單元 也稱為最小的原子單元 則滿足第一正規化.例如 顧客表 姓名 編號 位址 其中 位址 列還可以細分為國家 省 市 區等。第二正規化 在第一正規化的基礎上更進一層,目標是確保表中的每列都和主鍵相關.如果乙個關係滿足第一正規...