Normalization

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderators: mindphp, ผู้ดูแลกระดาน

M013
PHP Super Hero Member
PHP Super Hero Member
Posts: 829
Joined: 22/04/2010 12:02 pm

Normalization

Post by M013 »

Normalization

Normalization คือ การแปลงข้อมูลที่อยู่ในรูปแบบความซ้ำซ้อนให้อยู่ในรูปแบบที่ง่ายต่อการนำไปใช้งาน จะได้ไม่เกิดข้อผิดพลาด ไม่เกิดความขัดเเย้งของข้อมูล หรือที่เรียกว่า ความผิดปกติ ซึ่งความผิดปกตินี้สามารถเเบ่งออกได้เป็น 3 ลักษณะ คือ
- ความผิดพลาดจากการเพิ่มข้อมูล
- ความผิดพลาดจากการลบข้อมูล
- ความผิดพลาดจากการเเก้ไขข้อมูล

วัตถุประสงค์ของการทำ Normalization
- เพื่อลดความซับซ้อนของข้อมูล(เมื่อลดความซับซ้อนเเล้ว เนื้อที่ที่ใช้ในการจัดเก็บข้อมูลก็จะลดลงตามไปด้วย)
- ลดปัญหาความไม่ถูกต้องของข้อมูล
- ลดความผิดพลาดที่เกิดจากการปรับปรุงข้อมูล

**การออกแบบฐานข้อมูลที่ดีจะต้องทำให้เกิดความซับซ้อนของข้อมูลให้น้อยที่สุด**

การทำ Normalization
การปรับปรุงโครงสร้างของข้อมูลที่มีความซ้ำซ้อนให้อยูในรูปแบบบรรทัดฐาน (Normal Form) ซึ่งการทำ Normalization มีทั้งหมด 5 ระดับ แต่การใช้งานในปัจจุบันนี้ทำถึงระดับที่ 3 ก็เพียงพอเเล้ว

- First Normal Form (1NF)
กำจัดกลุ่มข้อมูลที่มีความซ้ำซ้อน (Repeating Group), แอททริบิวในเเต่ละ Record จะต้องเป็น Single Value

ตัวอย่างการทำ First Normal Form (1NF)
ภาพที่ 1.1 ตัวอย่างตารางที่มี Repeating Group
ภาพที่ 1.1 ตัวอย่างตารางที่มี Repeating Group
Non-1NF.jpg (129.1 KiB) Viewed 1260 times
ทำให้อยู่ในรูปแบบของ First Normal Form (1NF) ได้ดังนี้
ภาพที่ 1.2 ตัวอย่างการทำ First Normal Form (1NF)
ภาพที่ 1.2 ตัวอย่างการทำ First Normal Form (1NF)
1NF.jpg (137.63 KiB) Viewed 1260 times
- Second Normal From (2NF)
ต้องเป็น First Normal Form (1NF) มาก่อน และ แอตทริบิวที่ไม่ใช่คีย์หลักต้องขึ้นกับคีย์หลักเท่านั้น

ตัวอย่างการทำ Second Normal Form (2NF)
จากภาพที่ 1.2 สรุป Primary Key ได้ดังนี้
กภาพที่ 1.3 นำตารางที่ได้จากการทำ  First Normal Form (1NF) สรุปเป็น Primary Key ได้ดังนี้
กภาพที่ 1.3 นำตารางที่ได้จากการทำ First Normal Form (1NF) สรุปเป็น Primary Key ได้ดังนี้
2NF_PrimaryKey.jpg (42.62 KiB) Viewed 1260 times
ทำให้อยู่ในรูปแบบของ Second Normal Form (2NF) ได้ดังนี้
ภาพที่ 1.4 ตัวอย่างการทำ Second Normal Form (2NF)
ภาพที่ 1.4 ตัวอย่างการทำ Second Normal Form (2NF)
2NF.jpg (205.48 KiB) Viewed 1260 times
- Third Normal From (3NF)
ต้องเป็น Second Normal Form (2NF) มาก่อน และ แอตทริบิวที่ไม่ใช่คีย์หลักจะต้องไม่ขึ้นต่อกันเอง

ตัวอย่างการทำ Third Normal Form (3NF)
ถึงแม้ว่าจะทำการ Normalization ในระดับ Second Normal Form (2NF) แล้ว แต่ยังคงมีปัญหาอยู่บ้างในบางครั้ง ดังตัวอย่างในภาพที่ 1.5 นี้
ภาพที่ 1.5 ตัวอย่างตารางที่มีผ่านการทำ Second Normal Form (2NF) เเล้วเเต่ยังคงมีปัญหาอยู่
ภาพที่ 1.5 ตัวอย่างตารางที่มีผ่านการทำ Second Normal Form (2NF) เเล้วเเต่ยังคงมีปัญหาอยู่
Non-3NF.jpg (74.29 KiB) Viewed 1260 times
จากภาพที่ 1.5 มี Primary Key คือ รหัสลูกค้า เเต่มีแอตทริบิวที่ไม่ใช่คีย์หลักขึ้นต่อกันเองอยู่ เช่น ชื่อหมวด ขึ้นกับ หมวดของหนังสือ

ทำให้อยู่ในรูปแบบของ Third Normal Form (3NF) ได้ดังนี้
ภาพที่ 1.6 ตัวอย่างการทำ Third Normal Form (3NF)
ภาพที่ 1.6 ตัวอย่างการทำ Third Normal Form (3NF)
3NF.jpg (102.48 KiB) Viewed 1260 times
  • Similar Topics
    Replies
    Views
    Last post

Return to “SQL Knowledge”

Who is online

Users browsing this forum: No registered users and 2 guests