資料庫設計三大正規化
資料庫設計三大正規化
資料庫三正規化的意義:
這也是為了資料庫設計做準備,對於表設計而言,我們需求何種程度的設計,這完全取決你資料的規模,好比你建房子,要是建個一兩層,基本上不需要什麼設計,直接開工就行,要是建個這樣的房子還找設計公司的話,這無疑是大材小用,浪費;但是,對建一座大廈來說,不做規劃,不請教不諮詢設計公司,後果難以想象了。
當然,為了設計結構合理的資料庫,必須遵循一定的規則,在關聯式資料庫中這種規則就稱為正規化,正規化是符合某一種設計要求的總結。
1.第一正規化(1NF):確保每列保持原子性即列不可分
第一正規化是最基本的正規化。如果資料庫表中的所有欄位值都是不可分解的原子值,就說明該資料庫滿足第一正規化。
第一正規化的合理遵循需要根據系統給的實際需求來確定。比如某些資料庫系統中需要用到“地址”這個屬性,本來直接將“地址”屬性設計成為一個資料庫表的欄位就行,但是如果系統經常訪問“地址”屬性中的“城市”部分,那麼一定要把“地址”這個屬性重新拆分為省份、城市、詳細地址等多個部分來進行儲存,這樣對地址中某一個部分操作的時候將非常方便,這樣設計才算滿足資料庫的第一正規化。如下圖:
上圖所示的使用者資訊遵循第一正規化的要求,這樣對使用者使用城市進行分類的時候就非常方便,也提高了資料庫的效能。
2.第二正規化(2NF):屬性完全依賴於主鍵(屬性都是該物件擁有的)
第二正規化在第一正規化的基礎上更進一層,第二正規化需要確保資料庫表中每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個資料庫表中,一個表中只能儲存一種資料,不可以把多種資料儲存在同一張資料庫表中。
比如要設計一個訂單資訊表,因為訂單中可能會有多種商品,所以要將訂單編號和商品編號作為資料庫表的聯合主鍵,如下圖:
這裡產生一個問題:這個表中是以訂單編號和商品編號作為聯合主鍵,這樣在該表中商品名稱、單位、商品價格等資訊不與該表的主鍵相關,而僅僅是與商品的編號相關,所以在這裡違反了第二正規化的設計原則。
利用物件之間的關係設計表,確認表的個數:而如果把這個訂單資訊表進行拆分,把商品資訊分離到另一個表中,把訂單專案表也分離到另一個表中,就非常完美了,如下圖。
這裡這樣設計,在很大程度上減小了資料庫的冗餘,如果要獲取訂單的商品資訊,使用商品編號到商品資訊表中查詢即可。
3.第三正規化(3NF):屬性和主鍵不能間接相關(減少資料冗餘,這樣就可以通過主外來鍵進行表之間連線)
第三正規化:資料不能存在傳遞關係,即每個屬性都跟主鍵有直接關係而不是間接關係。像:a-->b-->c 屬性之間含有這樣的關係,是不符合第三正規化的。第三正規化是對第二正規化的細化。
比如在設計一個訂單資料表的時候,可以將客戶編號作為一個外來鍵和訂單表建立相應的關係,而不可以在訂單表中新增關於客戶其他資訊(比如姓名、所屬公司)的欄位,如下面這兩個表所示的設計就是一個滿足第三正規化的資料庫表。
這樣在查詢訂單資訊的時候,就可以使用客戶編號來引用客戶資訊表中的記錄,也不必再訂單資訊表中多次輸入客戶資訊的內容,減小了資料冗餘。
例子:兒子的玩具車與玩具槍和爸爸是間接關係,應該拆為 兩個表,通過兒子將兩個表關聯起來:
因為上表的玩具車與玩具槍屬於兒子,因此不符合第三正規化,對上表進行拆分
相關文章
- 資料庫設計三正規化資料庫
- 資料庫表設計三正規化資料庫
- 八、資料庫的歸約,三大正規化(規範資料庫設計)資料庫
- 關係型資料庫設計三大正規化資料庫
- 正規化(Normal Form)是資料庫設計中的概念。新的正規化(paradigm)ORM資料庫
- 資料庫設計之三正規化的的理解資料庫
- javaWeb-day03-約束、資料庫設計、正規化、資料庫備份JavaWeb資料庫
- 資料庫設計三大正規化應用例項剖析資料庫
- 資料庫建表設計六正規化介紹枘雍資料庫
- 啥是資料庫正規化資料庫
- 資料庫三正規化資料庫
- 資料庫 三大正規化資料庫
- 資料庫三大正規化資料庫
- MySQL系列資料庫設計三正規化教程示例隍啃MySql資料庫
- 資料庫正規化與例項資料庫
- 資料庫——三正規化理解資料庫
- 資料庫三大正規化 Mysql資料庫MySql
- 【一文秒懂】帶你徹底搞懂正規化與反正規化資料庫設計資料庫
- 資料庫中的正規化和反正規化詳解!資料庫
- 前端資料正規化化前端
- 資料庫學習(一)三正規化資料庫
- 程式設計正規化(Programmingparadigm)程式設計
- MySQL資料庫設計規範MySql資料庫
- 淺談程式設計正規化程式設計
- Java學習筆記:資料庫中的正規化和反正規化Java筆記資料庫
- msql 資料庫設計正規化 簡單理解(1NF,2NF,3NF)SQL資料庫
- MySQL 規範 (資料庫表設計規範)MySql資料庫
- MongoDB資料庫的設計規範MongoDB資料庫
- MySQL 資料庫規範--設計篇MySql資料庫
- MySQL之規範資料庫設計MySql資料庫
- 資料庫系統------函式依賴與正規化資料庫函式
- 你還記得資料庫三正規化嗎?資料庫
- 程式設計模型(正規化)小結程式設計模型
- 【資料庫設計】資料庫的設計資料庫
- 關聯式資料庫的正規化(Normal Form)知識點資料庫ORM
- 【資料庫】關係模式的正規化的簡明判斷資料庫模式
- MySQL資料庫設計與開發規範MySql資料庫
- MySQL-11.資料庫的設計規範MySql資料庫
- 1.2.4 資料庫規範化資料庫