การ Normalization Database
แบ่งตารางเป็นย่อยๆ
Normalization Forms (NF) ซึ่งช่วยให้ข้อมูลถูกจัดเก็บอย่างมีโครงสร้าง ลดความเสี่ยงของการเกิดความไม่สอดคล้อง (Inconsistency) และลดความซ้ำซ้อน (Redundancy) ในข้อมูล
พูดให้เห็นภาพคือ
สมมติเรามี field ข้อมูลที่ต้องเก็บมากมาย เช่น ข้อมูลนักเรียนในแต่ละวิชาได้เท่าไหร่บ้าง
ในการไปสำรวจนั้น อาจได้ตารางการเก็บข้อมูลของนักเรียนแบบดิบๆ แต่จะเอาไปเก็บใน
ฐานข้อมูลอย่างไรให้มีประสิทธิภาพ โดยเพื่อไม่ให้เกิดความเสี่ยงใน 2 เรื่องคือ
1.ความไม่สอดคล้อง (Inconsistency) มีข้อมูลเดียวกันต้องเหมือนกัน
2.ลดความซ้ำซ้อน (Redundancy) ถ้าซ้ำซ้อนกันก็ควรแยกกันเพื่อไม่ให้ต้องเก็บอะไรซ้ำๆบ่อยๆ
โดยมีรูปแบบการเก็บข้อมูลตารางให้พร้อมใช้ในการสร้างฐานข้อมูล
1NF ไม่มีข้อมูลอาร์เรย์ ควรแยกแต่ละเป็น field เดี่ยว ให้ง่ายต่อการเขียนโค๊ด ไม่มี Group ข้อมูลซ้ำกัน
เช่น field เดียว มีวิชา คณิตกับอังกฤษ ซึ่งเป็นข้อประเภทเดียวกัน แยกเป็น field ย่อยๆ ก่อน
2NF ต้องไม่มี Partial Dependency (การพึ่งพาแค่บางส่วนของ Primary Key)
- แยกตารางที่เป็นคนละประเภท เช่น ตารางนักเรียน กับตารางวิชา
- กำหนด key เพื่อให้ มี primary key ในแต่ละตาราง
- มีการแยกตาราง bridge (ถ้ามี) เช่น ตารางนักเรียน กับตารางวิชา กับตารางคะแนน
3NF ต้องไม่มี Transitive Dependency
- ข้อมูลที่เป็นพวก ข้อความที่้ต้องกรอกซ้ำๆ เหมือนเดิม แยกมาอีกตารางจะได้ง่ายต่อการแก้ไข
ข้อดีของการ Normalize
- ลดความซ้ำซ้อนของข้อมูล
- ช่วยให้ข้อมูลมีความถูกต้องและสอดคล้องกัน (Consistency)
- ลดขนาดของฐานข้อมูล
- ช่วยให้ง่ายต่อการปรับเปลี่ยนโครงสร้างในอนาคต
โดยส่วนใหญ่ จะNormalization 1NF-3NF จะมากกว่านั้นก็ตามแต่บริบทของความต้องการ
โดยต้องคำนึงระหว่าง เรื่องความซ้ำซ้อน กับ ความซับซ้อน