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

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

WBOY
リリース: 2024-08-31 06:30:36
オリジナル
1162 人が閲覧しました

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

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート