資料庫規範化:是在資料庫中組織資料以減少冗餘並提高資料完整性的過程。以下是關鍵範式的快速概述,並附有範例。
1。第一範式 (1NF)
目標:確保每列包含原子值並且每筆記錄都是唯一的。
範例:
1NF 之前:
Table: StudentCourses ---------------------------- StudentID | Name | Courses ---------------------------- 1 | Alice | Math, Science
2。第二範式 (2NF)
目標:消除部分依賴;每個非鍵屬性都應該依賴整個主鍵。
範例:
2NF 之前:
Table: StudentCourses ---------------------------- StudentID | Course | Instructor ---------------------------- 1 | Math | Dr. Smith
2NF之後:
Table: StudentCourses ---------------------------- StudentID | Course ---------------------------- 1 | Math
Table: CourseInstructors ---------------------------- Course | Instructor ---------------------------- Math | Dr. Smith
3。第三範式 (3NF)
目標:消除傳遞依賴;非鍵屬性應該只依賴主鍵。
範例:
3NF 之前:
Table: StudentCourses ----------------------------------- StudentID | Course | Instructor | Dept ----------------------------------- 1 | Math | Dr. Smith | Science
3NF之後:
Table: StudentCourses ---------------------------- StudentID | Course ---------------------------- 1 | Math
Table: CourseInstructors ---------------------------- Instructor | Dept ---------------------------- Dr. Smith | Science
4。博伊斯-科德範式 (BCNF)
目標:處理異常的更嚴格版本的 3NF。
範例:
BCNF 之前:
Table: TeacherCourses ------------------------------ TeacherID | Course | Dept ------------------------------ 1 | Math | Science
BCNF 之後:
Table: TeacherCourses ---------------------------- TeacherID | Course ---------------------------- 1 | Math
Table: CourseDepartments ---------------------------- Course | Dept ---------------------------- Math | Science
5。第四範式 (4NF)
目標:消除多值依賴。
範例:
4NF 之前:
Table: StudentHobbies ---------------------------- StudentID | Course | Hobby ---------------------------- 1 | Math | Chess
4NF之後:
Table: StudentCourses ---------------------------- StudentID | Course ---------------------------- 1 | Math
Table: StudentHobbies ---------------------------- StudentID | Hobby ---------------------------- 1 | Chess
6。第五範式 (5NF)
目標:處理複雜的連結依賴關係;進一步分解表格而不遺失資訊。
範例:
5NF 之前:
Table: ProjectAssignments --------------------------------- EmployeeID | Project | Role --------------------------------- 1 | A | Developer
5NF之後:
Table: EmployeeProjects ---------------------------- EmployeeID | Project ---------------------------- 1 | A
Table: EmployeeRoles ---------------------------- EmployeeID | Role ---------------------------- 1 | Developer
Table: ProjectRoles ---------------------------- Project | Role ---------------------------- A | Developer
結論
規範化可確保您的資料庫保持高效、一致和可擴展,從而隨著資料的成長簡化管理並增強查詢效能。
以上是資料庫規範化初學者指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!