在資料庫設計中,標準化是組織資料以最大限度地減少冗餘和依賴性、提高資料完整性的過程。這個過程涉及將大表劃分為更小的、可管理的表並在它們之間建立關係。這樣可以確保資料庫不會出現插入、更新、刪除等異常。
不同的範式代表特定的標準化等級。每種範式都建立在前一種範式的基礎上,並且有自己的一套規則。以下是最常見範式的解釋:
1NF 是最基本的規範化級別,重點是消除重複數據並確保表中的數據以每列包含原子值(無重複組)的方式組織。
1NF 例:
OrderID | Products | Quantities |
---|---|---|
1 | Apple, Banana | 2, 3 |
2 | Orange | 5 |
OrderID | Product | Quantity |
---|---|---|
1 | Apple | 2 |
1 | Banana | 3 |
2 | Orange | 5 |
2NF 建立在 1NF 之上,消除了 部分依賴。當非主屬性(不屬於主鍵的列)僅依賴主鍵的一部分(在複合主鍵的情況下)時,就會發生部分依賴關係。要實現 2NF,表必須先滿足 1NF 的要求。
2NF 例:
OrderID | Product | CustomerName | Price |
---|---|---|---|
1 | Apple | John | 10 |
1 | Banana | John | 5 |
2 | Orange | Jane | 8 |
這裡,CustomerName 只取決於 OrderID,而不取決於完整的主鍵(OrderID、Product)。為了刪除這個,我們拆分了表格。
2NF之後:
表格:
OrderID | CustomerName |
---|---|
1 | John |
2 | Jane |
OrderID | Product | Price |
---|---|---|
1 | Apple | 10 |
1 | Banana | 5 |
2 | Orange | 8 |
3NF 建構在2NF 之上,並解決了 傳遞依賴,當一個非主屬性依賴於另一個非主屬性時會發生這種情況。非主屬性應僅依賴主鍵。如果表位於 2NF 中,且所有傳遞依賴項均已刪除,則該表位於 3NF 中。
3NF 例:
OrderID | Product | Category | Supplier |
---|---|---|---|
1 | Apple | Fruit | XYZ |
2 | Carrot | Vegetable | ABC |
這裡,供應商取決於類別,而不是直接取決於訂單ID。為了解決這個問題,我們拆分了表格。
3NF之後:
表格:
OrderID | Product | Category |
---|---|---|
1 | Apple | Fruit |
2 | Carrot | Vegetable |
Category | Supplier |
---|---|
Fruit | XYZ |
Vegetable | ABC |
BCNF 是 3NF 的更嚴格版本。若滿足下列條件,則表格位於 BCNF 中:
簡單來說,BCNF 解決了表處於 3NF 中但仍具有一些涉及非候選鍵屬性的依賴關係的情況。
BCNF 例:
CourseID | Instructor | Room |
---|---|---|
101 | Dr. Smith | A1 |
102 | Dr. Smith | B1 |
101 | Dr. Johnson | A2 |
這裡,Instructor確定了Room,但是Instructor不是候選鍵,這違反了BCNF。為了實現 BCNF,我們將依賴項分離到不同的表中。
BCNF 之後:
表格:
CourseID | Instructor |
---|---|
101 | Dr. Smith |
102 | Dr. Smith |
101 | Dr. Johnson |
Instructor | Room |
---|---|
Dr. Smith | A1 |
Dr. Smith | B1 |
Dr. Johnson | A2 |
4NF 解決了多值依賴關係,當一個屬性確定另一個屬性的多個值並且這些值彼此獨立時會發生這種情況。若符合以下條件,則表格位於 4NF 中:
4NF 例:
StudentID | Subject | Hobby |
---|---|---|
1 | Math | Painting |
1 | Science | Cycling |
4NF之後:
表格:
StudentID | Subject |
---|---|
1 | Math |
1 | Science |
StudentID | Hobby |
---|---|
1 | Painting |
1 | Cycling |
在資料庫設計中,標準化是有效組織資料的基本過程。不同的範式——1NF、2NF、3NF、BCNF 和 4NF——確保資料儲存無冗餘、保持完整性並且易於管理。每種範式都建立在前一種範式的基礎上,消除了特定類型的依賴性或異常。雖然標準化可以提高資料質量,但必須在其與效能考量之間取得平衡,有時在需要最佳化時選擇非規範化。
嗨,我是 Abhay Singh Kathayat!
我是一名全端開發人員,擁有前端和後端技術的專業知識。我使用各種程式語言和框架來建立高效、可擴展且用戶友好的應用程式。
請隨時透過我的商務電子郵件與我聯繫:kaashshorts28@gmail.com。
以上是了解資料庫設計中的範式:綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!