Rumah >pangkalan data >tutorial mysql >Panduan Pemula untuk Normalisasi Pangkalan Data

Panduan Pemula untuk Normalisasi Pangkalan Data

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBasal
2024-08-31 06:30:361231semak imbas

A Beginner

Penormalan pangkalan data: ialah proses menyusun data dalam pangkalan data untuk mengurangkan lebihan dan meningkatkan integriti data. Berikut ialah ikhtisar ringkas bentuk biasa utama, dengan contoh.

1. Bentuk Biasa Pertama (1NF)
Objektif: Memastikan setiap lajur mengandungi nilai atom dan setiap rekod adalah unik.

Contoh:

Sebelum 1NF:

Table: StudentCourses
----------------------------
StudentID | Name   | Courses
----------------------------
1         | Alice  | Math, Science

2. Bentuk Biasa Kedua (2NF)
Objektif: Menghapuskan kebergantungan separa; setiap atribut bukan kunci harus bergantung pada keseluruhan kunci utama.

Contoh:

Sebelum 2NF:

Table: StudentCourses
----------------------------
StudentID | Course | Instructor
----------------------------
1         | Math   | Dr. Smith

Selepas 2NF:

Table: StudentCourses
----------------------------
StudentID | Course
----------------------------
1         | Math
Table: CourseInstructors
----------------------------
Course    | Instructor
----------------------------
Math      | Dr. Smith

3. Bentuk Biasa Ketiga (3NF)
Objektif: Alih keluar kebergantungan transitif; atribut bukan kunci hendaklah hanya bergantung pada kunci utama.

Contoh:

Sebelum 3NF:

Table: StudentCourses
-----------------------------------
StudentID | Course | Instructor | Dept
-----------------------------------
1         | Math   | Dr. Smith  | Science

Selepas 3NF:

Table: StudentCourses
----------------------------
StudentID | Course
----------------------------
1         | Math

Table: CourseInstructors
----------------------------
Instructor | Dept
----------------------------
Dr. Smith  | Science

4. Boyce-Codd Normal Form (BCNF)
Objektif: Versi 3NF yang lebih ketat untuk mengendalikan anomali.

Contoh:

Sebelum BCNF:

Table: TeacherCourses
------------------------------
TeacherID | Course    | Dept
------------------------------
1         | Math      | Science

Selepas BCNF:

Table: TeacherCourses
----------------------------
TeacherID | Course
----------------------------
1         | Math

Table: CourseDepartments
----------------------------
Course    | Dept
----------------------------
Math      | Science

5. Bentuk Biasa Keempat (4NF)
Objektif: Menghapuskan kebergantungan berbilang nilai.

Contoh:

Sebelum 4NF:

Table: StudentHobbies
----------------------------
StudentID | Course | Hobby
----------------------------
1         | Math   | Chess

Selepas 4NF:

Table: StudentCourses
----------------------------
StudentID | Course
----------------------------
1         | Math

Table: StudentHobbies
----------------------------
StudentID | Hobby
----------------------------
1         | Chess

6. Bentuk Biasa Kelima (5NF)
Objektif: Mengendalikan kebergantungan gabungan kompleks; menguraikan jadual selanjutnya tanpa kehilangan maklumat.

Contoh:

Sebelum 5NF:

Table: ProjectAssignments
---------------------------------
EmployeeID | Project | Role
---------------------------------
1          | A       | Developer

Selepas 5NF:

Table: EmployeeProjects
----------------------------
EmployeeID | Project
----------------------------
1          | A

Table: EmployeeRoles
----------------------------
EmployeeID | Role
----------------------------
1          | Developer

Table: ProjectRoles
----------------------------
Project | Role
----------------------------
A       | Developer

Kesimpulan
normalisasi memastikan bahawa pangkalan data anda kekal cekap, konsisten dan berskala, yang memudahkan pengurusan dan meningkatkan prestasi pertanyaan apabila data anda berkembang.

Atas ialah kandungan terperinci Panduan Pemula untuk Normalisasi Pangkalan Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn