データベースの正規化: 冗長性を減らし、データの整合性を向上させるためにデータベース内のデータを整理するプロセスです。ここでは、主要な正規形の概要を例とともに簡単に説明します。
1.第一正規形 (1NF)
目的: 各列にアトミック値が含まれ、各レコードが一意であることを確認します。
例:
1NF より前:
Table: StudentCourses ---------------------------- StudentID | Name | Courses ---------------------------- 1 | Alice | Math, Science
2.第 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.第 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.第 4 正規形 (4NF)
目的: 複数値の依存関係を排除します。
例:
4NF 前:
Table: StudentHobbies ---------------------------- StudentID | Course | Hobby ---------------------------- 1 | Math | Chess
4NF以降:
Table: StudentCourses ---------------------------- StudentID | Course ---------------------------- 1 | Math
Table: StudentHobbies ---------------------------- StudentID | Hobby ---------------------------- 1 | Chess
6.第 5 正規形 (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 中国語 Web サイトの他の関連記事を参照してください。