Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> ซอฟต์แวร์

พื้นฐานการ Normalize ฐานข้อมูล (Database Normalization) แบบเข้าใจง่าย

หากทำงานกับฐานข้อมูลมาสักพัก คงเคยได้ยินคำว่า Normalization หรือถูกถาม "Database นี้ normalized ไหม?" หรือ "อยู่ใน BCNF ไหม?" หลายคนคิดว่า normalization เป็นเรื่องของนักวิชาการเท่านั้น แต่จริงๆ แล้ว เข้าใจหลักการและนำไปใช้ในการออกแบบฐานข้อมูลประจำวัน ไม่ยาก และ อาจเพิ่มประสิทธิภาพ DBMS อย่างมาก

บทความนี้นำเสนอแนวคิด Normalization และ Normal Forms ที่พบบ่อย

Normalization คืออะไร?

Normalization = กระบวนการจัดระเบียบข้อมูลในฐานข้อมูลอย่างมีประสิทธิภาพ มีเป้าหมาย 2 ข้อ:

  1. กำจัดข้อมูลซ้ำ (Eliminate redundant data) – เช่น เก็บข้อมูลเดียวกันในหลายตาราง
  2. รับรอง Data Dependencies สมเหตุสมผล – เก็บเฉพาะข้อมูลที่เกี่ยวข้องกันในตารางเดียว

ทั้งคู่ลดพื้นที่จัดเก็บ และทำให้ข้อมูลจัดเก็บได้อย่างมีเหตุผล

Normal Forms (รูปแบบปกติ) คืออะไร?

ชุมชนฐานข้อมูลกำหนด เกณฑ์ (guidelines) เรียกว่า Normal Forms หมายเลข 1 ถึง 5 (1NF ถึง 5NF) ในทางปฏิบัติ พบบ่อย: 1NF, 2NF, 3NF บางครั้ง 4NF ส่วน 5NF นادرةมาก ไม่พูดถึงในบทความนี้

⚠️ สำคัญ: นี่เป็น แนวทาง (guidelines) เท่านั้น บางครั้งต้องเบี่ยงเบนเพื่อ business requirements จริง แต่ต้องประเมินผลกระทบและวางแผนจัดการ inconsistency ที่อาจเกิด

First Normal Form (1NF) – รูปแบบปกติขั้นที่ 1

กฎพื้นฐานสำหรับฐานข้อมูลที่จัดระเบียบ:

  • กำจัดคอลัมน์ซ้ำ (duplicative columns) ออกจากตารางเดียวกัน
  • สร้างตารางแยกสำหรับแต่ละกลุ่มข้อมูลที่เกี่ยวข้อง และระบุแต่ละแถวด้วย Primary Key (คอลัมน์หรือชุดคอลัมน์ที่ unique)

Second Normal Form (2NF) – รูปแบบปกติขั้นที่ 2

จัดการข้อมูลซ้ำต่อ:

  • ผ่านเกณฑ์ 1NF ทั้งหมด
  • นำ subset ของข้อมูลที่ใช้ซ้ำหลายแถว ไปใส่ในตารางแยก
  • สร้างความสัมพันธ์ระหว่างตารางใหม่กับตารางเดิมด้วย Foreign Keys

Third Normal Form (3NF) – รูปแบบปกติขั้นที่ 3

ก้าวสำคัญเพิ่มเติม:

  • ผ่านเกณฑ์ 2NF ทั้งหมด
  • ลบคอลัมน์ที่ไม่ dependent บน Primary Key (non-key attributes ที่ไม่ขึ้นอยู่กับ PK โดยตรง)

Boyce-Codd Normal Form (BCNF หรือ 3.5NF)

เพิ่มเงื่อนไขอีก 1 ข้อ:

  • ผ่านเกณฑ์ 3NF ทั้งหมด
  • ทุก Determinant ต้องเป็น Candidate Key

Fourth Normal Form (4NF) – รูปแบบปกติขั้นที่ 4

เพิ่มเงื่อนไข:

  • ผ่านเกณฑ์ 3NF ทั้งหมด
  • Relation อยู่ใน 4NF ถ้า ไม่มี Multi-valued Dependencies

💡 จำไว้: Normal Forms เป็น สะสม (cumulative) – ต้องเป็น 1NF ก่อนถึงจะเป็น 2NF ได้ เป็น 2NF ก่อนถึง 3NF ได้...

ควร Normalize หรือไม่?

Normalization มักดี แต ไม่ใช่ข้อบังคับขาด บางกรณี การละเมิดกฎ normalization โดยเจตนา เป็น best practice (เช่น denormalization เพื่อ performance ใน read-heavy workloads)

หากต้องการให้ฐานข้อมูล normalized ให้เริ่มจากเรียนรู้วิธีทำให้อยู่ใน First Normal Form (1NF) ก่อน