การนอร์มัลไลซ์ (Normalization) คือ?

posted on 22 Aug 2012 10:48 by inwprogramming in Database
พูดถึงการสร้างฐานข้อมูล (database) นั่น เมื่อเกิดการออกแบบ สร้างฐานข้อมูลได้ไม่ดี และเมื่อ ฐานข้อมูลยิ่งมีขนาดใหญ่ ขึ้น จะทำให้เกิด ความยุ่งยากและปัญหา ความซ้ำซ้อนของข้อมูล

http://www.uppicweb.com/x/i/ir/l9new.jpg

การทำ การนอร์มัลไลซ์ (Normalization) จึงเป็นวิธีที่ดี เป็นการปรับฐานข้อมูล ให้มีโครงสร้างที่ดี และยังหลีกเลี่ยงการเกิดเหตุการณ์ที่ข้อมูลเดียวกันแต่อยู่ต่างแฟ้มข้อมูล แต่มีค่าข้อมูลไม่เหมือนการ
แม้  นอร์มัลไลซ์นั่น จะ Anomalies ได้แต่ก็ยังไม่สามารถ แก้ปัญหา ความซ้ำซ้อนของข้อมูล ได้หมด เพราะ ข้อมูลที่ซ้ำ ในแต่ละตาราง นั้น จะใช้ในการเชื่อมตารางกับฐานข้อมูลต่างๆ
การทำงานของ การนอร์มัลไลซ์ เป็นออกเป็นระดับ ด้วยกัน
ได้แก่

1. รูปแบบบรรทัดฐานขั้นที่ 1 First Normal Form: 1NF

การแปลงตารางข้อมูลให้อยู่ใรูป 1NF นั้น ข้อมูลจะ Key จะต้องไม่มีค่า “Null”  และข้อมูลในรูป 1NF จะต้องไม่มีความผิดพลาดที่เกิด ขึ้น เป็น  ความผิดพลาดในการปรับปรุงข้อมูล (update Anomalies)  ความผิดพลาดในการเพิ่มข้อมูล (Addition Anomalies) ความผิดพลาดในการลบข้อมูล โดยเงื่อนไขหลักของ 1NF  คือ
a) ต้องมีการกำหนด Attribute ที่ทำหน้าที่เป็น Key ทั้งหมด
b) ต้องไม่มี Repeating Group ในตาราง คือในตำแหน่งที่ Row ตัดกับ Column ค่าที่ได้จะต้องเแนค่าๆ เดียว ไม่ใช่กลุ่มของค่าข้อมูล
c) ทุกๆ  Attribute ต้องถูกระบุได้ด้วย Primary Key
โดย รูปบบตารางที่เป็น 1NF ยังมีปัญหาอยู่ คือมีบางส่วนของ Key สามารถ ชี้ถึง Attribute  ในตารางได้ (Partial  Dependencies)
โดยความเป้นจริงตารางที่ดี ไม่ควรมี Partial  Dependencies เพราะ จะทำใหเกิด ความซ้ำซ้อนของข้อมูลที่จะเกิด ทุก Row ที่ มีการซ้ำกันของข้อมูล

2. รูปแบบบรรทัดฐานขั้นที่ 2 Second Normal Form: 2NF

การแปลงตารางข้อมูลให้อยู่ในรูป 2NF นั้น อย่างแรกตาราง ต้องอยู่ใน รูปแบบ 1NF ก่อน จึงดำเนิน การต่อไปได้  โดยเงื่อนไขหลัก ของ 2NF คือ
a) ต้องเป็น 1NF
b)  ไม่มี Partial Dependencies คือไม่มี Attributeใด  ถูกระบุได้โดยใช้ส่วนหนึ่งของ Primary Key
(ตารางนั้น ถ้ามีลักษณะ ที่เป็น Transitive Dependencies โดนเกิด Transitive Dependenciesกับ Nonkey Attribute ยังถือว่าเป็น 2NF อยู่)

3. รูปแบบบรรทัดฐานขั้นที่ 3 Third Normal Form: 3NF

การแปลงตารางข้อมูลให้อยู่ในรูป 3 NF นั้น อย่างแรกตาราง ต้องอยู่ใน รูปแบบ 2NF ก่อน โดยจะแบ่งตารางที่เป็น Transitive Dependencies ออกเป็นตารางใหม่  แต่ต้องมี Attribute โยงไปตารางใหม่
โดยเงื่อนไขหลัก ของ 3NF คือ
a) ต้องเป็น 2NF
b)  ไม่มี Transitive Dependencies

4 รูปแบบบรรทัดฐานของบอยส์และคอดด์ : The BOYCE-CODD normal Form: BCNF

ตารางที่มีคุณสมบัติ เป็น BOYCE-CODD Normal Form ก็ต่อเมื่อทุกๆ Determinant ในตารางเป็น Candidate Key  (Determinant คือ Attribute ใดๆ ที่มีค่าสามารถระบุไปถึงข้อมูลต่างๆ ในแถวข้อมูล คือถ้าตารางมีคุณสมบัติ 3NF แล้ว  และมี Candidate Key เพียงแค่ตัวเดียว ตาราง น้นก็ถือว่าเป็น BCNF ไปด้วย ) โดย วิธี BCNF ผู้ออกแบบส่วนใหญ่จะมองว่าเป็นวิธีพิเศษ แบบออกจาก 3NF เพราะตารางที่มีคุณสมบัติ 2NF ก็อาจมีคุณสมบัติ ตรงตามแบบวิธี BCNF โดยไม่ได้เป็น 3NF ก็ได้  เพราะ คุณสมบัติหลัก หรือเงื่อนไขหลักของ BCNF คือมี Determinant ทุกตัวเป็น Candidate Key

5. รูปแบบบรรทัดฐานขั้นที่ 4  : fourth normal form: 4NF

ตามในด้านธุรกิจในปัจจุบัน นิยมปรับตารางให้อยู่ในรูปแบบ 3NF หรือ BCNF ก็เพียงพอต่อการใช้งานแล้ว
แต่ในบางกรณี อาจจะต้องมีการปรับ ขึ้นในระดับที่สูงขึ้น  โดยคุณสมบัติ ของ 4 NF ต้องมีเงื่อนนไขเป็น 3NF หรือ BNCF และไม่มี Multiple set ของ Multivalued Dependencies

6. รูปแบบบรรทัดฐานขั้นที่ 5 : fifth normal form: 5NF

ตารางที่มีคุณสมบัติ เป็น 5NF นั้นจะเกิด ขึ้นได้ยาก โดย จะมี Attribute ในตารางเป็น  primary Key ที่เกิด จาก Attribute 3  Attribute  ขึ้นไป หรือ คุณสมบัติ Join Dependency ซึ่งเป็นคุณสมบัติของการนำรีเลชั่นย่อยที่เกิดจากการแตกรีเลชั่นเดิมมารวม กัน แล้วได้ข้อมูลเช่นเดียวกับรีเลชั่นเดิม
และ จะต้องมีรูปแบบ เป็น 4NF  อยู่ก่อนแล้ว

การ ทำ นอร์มัลไลซ์ ในระดับที่สุดขึ้นแม้จะ แก้ปัญหา Anomalies ได้แต่ อาจ ไม่ถือว่าดีที่สุดเพราะ ยิ่ง จัดในระดับสูง จะ มีการแบ่งแยกตารางย่อยๆมาก ขึ้น  ทำให้การค้นหาข้อมูลในตารางช้า มาก เพราะต้องทำการ join ตารางเข้่าด้วยกัน ดังนั้น การปรับ ตาราง ด้วยวิธี นอร์มัลไลซ์ นั้น ควรเลือก ปรับในระดับที่พอดี และเหมาะกับการใช้งาน ในแต่ละงานด้วย

Comment

Comment:

Tweet