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

2021-06-26 11:53:43 字數 953 閱讀 9235

第一正規化:

不要向表中輸入重複的值 ! 要有主鍵

表1 學生表 

在表中有成千上萬條資料的時候,如果沒有規則的存在,可能會有很多重複的資料。解決這類問題的辦法是設立乙個主鍵,主鍵用來標識唯一的一條記錄,並且不可重複

在多個字段可以被選擇的情況下,作為主鍵的字段應該選擇最符合邏輯的乙個,一般選擇與業務無關的字段,比如自增的id。

由於效率的關係,請盡量選擇乙個數值型別的字段或者定長字串。

很明顯email欄位也不會重複,理論上也可以作為主鍵,但是效率低下。所以還是用學號作為主鍵。

第二正規化:

存在多對多關係時只有乙個字段作為主鍵是不夠的。

譬如學生和老師的關係,他們之間是多對多的關係,乙個學生可以同時學習多個老師的課,而乙個老師可以同時教多名學生,很明顯單獨用學生學號或單獨用老師編號都不足以確定一條記錄,需要把學號和教師編號的組合作為主鍵。但是學生姓名是依賴於學號的,不依賴教師編號,而教師姓名是依賴教師編號而不依賴學號,也就是說存在部分依賴,這個時候容易產生部分依賴,會產生冗餘資料,

解決這個問題的方案是把這個表分解為三個表,建立中間關聯表。

分解結果:

這樣每張表都不存在冗餘資料,並且通過表連線可以得到任意需要的資料,這種表之間不存在部分依賴的情況,稱之為符合第二正規化。

第三正規化:

一對多的關係。如果學生表中是這樣的資料

乙個班級可以擁有多個學生,乙個學生只能屬於乙個班級,但是很明顯班級名稱和班級資訊存在大量重複的出現,這些值並不直接依賴於學號(主鍵),而是依賴於班級號,也就是時說表中出現了傳遞依賴,即從學號傳遞到班級號,又從班級號傳遞到班級名稱,一旦有傳遞依賴的存在,表中就會有大量的冗餘資料。

解決這個問題的辦法是把這些和學號(主鍵)沒有直接聯絡的資訊記錄的新的表裡面,即班級表。因此,只在學生表中記錄班級編號就可以了,如果想查詢班級名稱,就想雇員表emp和部門表dept一樣,把兩張表做連線,到班級表中取查詢就可以了!(在多的一方加外來鍵)

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

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

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

資料庫第一正規化 原子性 表中每一列都不可以再分割成更小的列 資料庫第二正規化 不產生區域性依賴 每張表只描述一件事情 資料庫第三正規化 表中每列都直接依賴於主鍵,而不是通過其它列間接依賴於主鍵 什麼是資料庫正規化 學習第一正規化的應用 什麼是正規化 一種規則,指導程式設計師建立表的規則 程式設計師...

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

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