ホームページ >データベース >mysql チュートリアル >データベース正規化の初心者ガイド

データベース正規化の初心者ガイド

WBOY
WBOYオリジナル
2024-08-31 06:30:361190ブラウズ

A Beginner

データベースの正規化: 冗長性を減らし、データの整合性を向上させるためにデータベース内のデータを整理するプロセスです。ここでは、主要な正規形の概要を例とともに簡単に説明します。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。