為什麼要使用資料庫的三大正規化,它是什麼?

2021-10-23 18:46:38 字數 2916 閱讀 7865

為了建立冗餘較小、結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。

以下為開發中最為常見的資料庫設計正規化(三大正規化)

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

如下表

訂單號日期

使用者id

使用者名稱

產品編碼

產品名稱

數量x2001

12-02

u001

白展堂p101,p102

路由器,充電寶

1,1x2002

11-30

u002

呂秀才p203,p304

手機,電腦

2,1x2003

11-11

u003

郭老闆p101,p102

路由器,充電寶

1,1在單元格產品編碼、產品名稱、數量中 擁有多個值的字段 ,它即沒有滿足我們的第一正規化,即資料只能為原子性,它在單元格中儲存了多個值。

而為了讓它滿足我們所需要的第一正規化,我們應該將其拆分出一張訂單表和一張訂單細節表來

即:訂單表

訂單號日期

使用者id

使用者名稱

x2001

12-2

u001

白展堂x2002

11-30

u002

呂秀才x2003

11-11

u003

郭老闆以及

訂單細節表

訂單號產品編碼

產品名稱

單價數量

x2001

p101

路由器137

1x2001

p102

充電寶69

1x2002

p203

手機1999

2x2001

p304

電腦7865

1x2001

p101

路由器137

1x2002

p202

充電寶69

1在我們**的訂單細節表中,可以看到

訂單號產品編碼

產品名稱

單價數量

x2001

p101

路由器137

1x2001

p102

充電寶69

1x2002

p203

手機1999

2x2001

p304

電腦7865

1x2001

p101

路由器137

1x2002

p202

充電寶69

1

如果我們想要新增乙個新的產品進入資料庫時,你會發現,我們如果單純只想要新增乙個產品,而不是增加乙個新的訂單的話,我們在此表中是新增不下去的。這就關係到了我們的第二正規化:表中的字段必須依賴於主鍵 在訂單細節表中,他是擁有兩個主鍵的,訂單號和產品編號,而產品名稱,單價都於訂單號這乙個主鍵沒有關係,即沒有滿足第二正規化,我們現在滿足第二正規化,將兩表拆分。

我們即將訂單細節表拆分為訂單細節表和產品表

訂單細節表

訂單號產品編碼

數量x2001

p101

1x2001

p102

1x2002

p203

2x2001

p304

1x2001

p101

1x2002

p202

1產品表

產品編號

產品名稱

單價p101

路由器137

p102

充電寶69

p203

手機1999

p304

電腦7865

這樣,我們就滿足了第二正規化:所有表中的屬性都必須依賴於主鍵即是第二正規化

訂單表訂單號

日期使用者id

使用者名稱

x2001

12-2

u001

白展堂x2002

11-30

u002

呂秀才x2003

11-11

u003

郭老闆在以下訂單表中

訂單號關聯於使用者id 而使用者id關聯於使用者名稱這樣就使得他們之間存在依賴傳遞,使得使用者資訊無法單獨管理,這樣我們就應該繼續拆分此表,使得訂單表滿足於第三正規化

我們將訂單表繼續拆分出訂單表和使用者表

訂單表訂單號

日期使用者id

x2001

12-2

u001

x2002

11-30

u002

x2003

11-11

u003

使用者表使用者id

使用者名稱

u001

白展堂u002

呂秀才u003

郭老闆這樣,我們就滿足了第三正規化了:不出現依賴傳遞

在我們實際開發中 ,滿足三大正規化即表示要拆分多個表,我們在實際使用查詢或者獲得最初沒有拆分的表時,即需要自己寫入join將拆分的表鏈結起來,而如果表中資料量非常巨大的時候,join對於資料庫的查詢是非常耗時的,所有我們允許為了效能對於表中存在一點冗餘,因為一起都是為了效能而服務。

資料庫三大正規化是什麼,資料庫正規化

關係規範化是一種基於函式依賴理論對關係進行分析及分解處理的形式化技術,它將乙個有異常資料操作的關係分解成更小的 結構良好的關係,使該關係有最小的冗餘或沒有冗餘。關係規範化給設計者提供了對關係屬性進行合理定義的指導。有了規範化關係設計,我們對資料庫可以實現高效的 正確的操作。關係規範化技術涉及一系列規...

為什麼要使用NoSQL資料庫

工作中遇到的挑戰 1,高併發讀寫 web2.0 資料庫併發負載非常高,往往達到每秒上萬次的讀寫請求 2,高容量儲存和高效儲存 web2.0 通常需要在後台資料庫中儲存海量資料,如何儲存海量資料並進行高效的查詢往往是乙個挑戰 3,高擴充套件性和高可用性 隨著系統的使用者量和訪問量與日俱增,需要資料庫能...

為什麼要使用NoSQL資料庫

工作中遇到的挑戰 1,高併發讀寫 web2.0 資料庫併發負載非常高,往往達到每秒上萬次的讀寫請求 2,高容量儲存和高效儲存 web2.0 通常需要在後台資料庫中儲存海量資料,如何儲存海量資料並進行高效的查詢往往是乙個挑戰 3,高擴充套件性和高可用性 隨著系統的使用者量和訪問量與日俱增,需要資料庫能...