วันศุกร์ที่ 30 สิงหาคม พ.ศ. 2556

การทำ Normalization คืออะไร


Normalization คืออะไร

เป็นวิธีการลดความซ้ำซ้อนของข้อมูลที่อาจเกิดขึ้นได้ มักใช้ในการออกแบบฐานข้อมูลที่เป็นแบบ Relational Database ซึ่งการทำ Normalization นี้จะช่วยให้ความซ้ำซ้อนของข้อมูลลดลง

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

1) ความผิดปกติจากการเพิ่มข้อมูล (Insertion Anomaly)
2) ความผิดปกติจากการลบข้อมูล (Deletion Anomaly)
3) ความผิดปกติจากการแก้ไขข้อมูล (UPdate Anomaly)



ประโยชน์ของการ Nomalization
1) เป็นเครื่องมือที่ช่วยในการออกแบบฐานข้อมูลเชิงสัมพันธ์ 
2) ทำให้ทราบว่ารีเลชั่นที่ออกแบบมานั้น ก่อให้เกิดปัญหาหรือไม่และด้านใดบ้าง
3) ถ้ารีเลชั่นที่ออกแบบมานั้นก่อให้เกิดปัญหา จะมีวิธีแก้ไขอย่างไร
4) เมื่อแก้ไขแล้วอาจรับประกันได้ว่ารีเลชั่นนั้นจะไม่มีปัญหาอีกหรือถ้ามีก็ลดน้อยลง





หลักการทำ Nomalization
..............หลักการทำ Normalization สิ่งสำคัญคือ"การลดความซ้ำซ้อนและโอกาสที่จะเกิดความผิดพลาดกับข้อมูลได้" ซึ่ง การที่จะทำให้บรรลุจุดประสงค์ดังกล่าวจะต้องมีเกณฑ์และขั้นตอนในการวิเคราะห์ข้อมูล โดยทั่วไปเราต้องรู้ก่อนว่าแต่ละตารางมี field ใดบ้างสามารถบ่งชี้หรือค้นหาข้อมูลได้ เช่น เมื่อทราบรหัสลูกค้า จะ ทำให้สามารถค้นหา ชื่อ,นามสกุล,ที่อยู่ ฯลฯ ได้สำหรับเกณฑ์เหล่านี้เราจะเรียกว่า "Functionl Dependency" (FD) ใชัสัญลักษณ์ แทนการกำหนดค่าระหว่าง field


คุณสมบัติที่สำคัญอีกประการของการทำ Normalizationคือ เมื่อตารางใดจัดอยู่ใน Normal Form ใด แล้วจะต้องมีคุณสมบัติของ Normal Form ที่ต่ำกว่าเสมอ เช่น ถ้าตารางใดเป็น 3N จะต้องมีคุณสมบัติของ 1N และ 2N อยู่ด้วย



รูปแบบนอร์มัลระดับที่ 1, 2 และ 3 (Fist, Second and Third Normal Form)

รูปแบบนอร์มัลทั้ง 3 รูปแบบนี้ถูกนิยามขึ้นมาโดยคอดด์ในปี พ.ศ. 2515 แต่หลังจากนั้น 2 ปี รูปแบบระดับที่ 3 ได้ถูกนิยามให้มีความรัดกุมขึ้น โดย บอยส์ (Boyce) และคอดด์ จากนั้นได้ตั้งชื่อรูปแบบนี้ใหม่ว่า Boyce Codd Normal Form หรือ BCNF


1.รูปแบบการทำ Nomalization (Fist Normal Form : 1NF)
...............การปรับรีเลชั่นให้อยู่ในรูปแบบนอร์มัลระดับที่ 1 คือ การปรับจากรีเลชั่นที่ไม่นอร์มัล (Un normalized relation) ซึ่งได้แก่รีเลชั่นที่มีข้อมูลในบางช่องมากกว่า 1 ค่า ดังนั้น การปรับในระดับนี้ก็ได้แก่การขจัดกลุ่มที่ซ้ำกัน (Repeating groups) ออกไปเสีย ดังที่ได้นิยามไว้ ดังนี้

นิยาม รีเลชั่นใด ๆ กล่าวได้ว่าอยู่ในรูปแบบนอร์มัลระดับที่ 1 (1NF) ถ้ารีเลชั่นไม่มีกลุ่มที่ซ้ำกัน


2.รูปแบบการทำ Nomalization (Second Normal Form : 2NF)
.............รูปแบบนอร์มัลระดับ 2 และ 3 นี้จะยุ่งเกี่ยวกับเรื่องของความสัมพันธ์ระหว่างคัย์หลักกับแอททริบิ้วท์อื่น ๆ ที่ไม่ได้เป็นส่วนหนึ่งส่วนใดของคีย์หลักหรือเรียกว่า นันคีย์แอททริบิ้วท์ (Nonkey Attribute) 

นิยาม รีเลชั่นใด ๆ จะจัดอยู่ในรูปแบบนอร์มัลระดับที่ 2 (2NF) ถ้ารีเลชั่นนั้นเป็น 1NF และนันคีย์แอททริบิ้วท์ทุกตัวต้องขึ้นอยู่กับคีย์หลักอย่างแท้จริง โดยต้องไม่มีนันคีย์แอททริบิ้วท์ตัวใด ขึ้นกับส่วนใดส่วนหนึ่งของคีย์หลัก (ถ้าคีย์หลักประกอบด้วยแอททริบิ้วท์มากกว่า 1 ตัวขึ้นไป) 


3.รูปแบบการทำ Nomalization (Third Normal Form: 3NF)
.............รีเลชั่นที่อยู่ในรูปแบบนอร์มัลระดับที่ 3 คือรีเลชั่นที่อยู่ในรูปแบบนอร์มัลระดับที่สองแล้ว และไม่มีแอททริบิวท์ใดขึ้นอยู่กับแอททริบิ้วท์อื่น ๆ ที่ไม่ใช่คีย์หลัก นั่นคือแอททริบิวท์ทุกตัวจะต้องขึ้นอยู่กับคีย์หลักเท่านั้น 


4.รูปแบบการทำ Nomalization (Boyce-Codd Normal Form : BCNF)
..............คือ รีเลชั่นที่อยู่ในรูปแบบนอร์มัลระดับที่สองแล้ว และตัวกำหนดค่า (Determinant) ทุกตัวในรีเลชั่นนั้นเป็นคีย์คู่แข่ง (Candidate Key) ซึ่งในบางกรณีแม้รีเลชั่นจะอยู่ในรูปนอร์มัลระดับที่สาม ก็ยังมีโอกาสที่จะเกิดความผิดปกติจากการจัดการข้อมูลได้ โดยที่ความผิดปกติจากการจัดการข้อมูลจะเกิดขึ้นได้ในกรณีที่เกิดเงื่อนไข 3 ประการคือ


1) รีเลชั่นมีคีย์คู่แข่งมากกว่าหนึ่งชุด
2) คีย์คู่แข่งเหล่านี้ประกอบด้วยแอททริบิวท์หลายตัวรวมกัน คือเป็นคีย์รวม
3) คีย์คู่แข่งที่เป็นคีย์รวมเหล่านี้มีแอททริบิวท์บางตัวที่เหมือนกัน

การแปลงให้เป็นรีเลชั่นในรูปแบบของนอร์มัลบอยส์-คอด ทำโดยคัดลอกแอททริบิวท์ที่เป็นตัวที่กำหนดค่า ซึ่งไม่ใช่เป็นคีย์คู่แข่งออกมาเป็นรีเลชั่นใหม่อีกรีเลชั่นหนึ่ง โดยให้เป็นคีย์หลักของรีเลชั่นนั้นและดึงแอททริบิวท์ที่ขึ้นกับแอททริบิวท์ที่เป็นตัวกำหนดค่านั้นออกมาอยู่ในรีเลชั่นใหม่ด้วย


5.รูปแบบการทำ Nomalization (Forth Normal Form : 4NF)
................รีเลชั่นจะอยู่ในรูปแบบนอร์มัลระดับที่สี่ เมื่อรีเลชั่นนั้นอยู่ในรูแบบนอร์มัลบอยส์-คอด และต้องไม่มีการขึ้นต่อกันแบบกลุ่มในรีเลชั่นนั้น ซึ่งการขึ้นต่อกันแบบกลุ่ม (Multi valued) Dependency) ในรีเลชั่นจะเกิดขึ้นเมื่อมีแอททริบิวท์อย่างน้อย 3 แอททริบิวท์เช่น A B C และแต่ละค่าของ A จะสามารถกำหนดกลุ่มของข้อมูลในแอททริบิวท์ B และแต่ละค่าของ A จะสามารถกำหนดกลุ่มของข้อมูลในแอททริบิวท์ C และข้อมูลในแอททริบิวท์ BและC เป็นอิสระไม่ขึ้นต่อกัน การที่แอททริบิวท์ A สามารถกำหนดกลุ่มของข้อมูลในแอททริบิวท์ B เขียนแทนด้วยสัญลักษณ์ A->->B การแปลงรีเลชั่นในรูปแบบนอร์มัลระดับที่สี่ ทำโดยการกำจัดการขึ้นต่อกันแบบกลุ่มออกไป โดยแยกรีเลชั่นออกเป็นสองรีเลชั่น แต่ละรีเลชั่นเก็บข้อมูลที่ขึ้นต่อกัน


6.รูปแบบการทำ Nomalization (Fifth Normal Form : 5NF)
...............นอมัลระดับนี้ค่อนข้างจะเกิดขึ้นยาก สำหรับรีเลชั่นที่จะมีโครงสร้างในแบบ 5NF จะต้องมีคุณสมบัติของ 4NF และคุณสมบัติ Join Dependency ซึ่งเป็นคุณสมบัติของการนำรีเลชั่นย่อยที่เกิดจากการแตกรีเลชั่นเดิมมารวมกัน แล้วได้ข้อมูลเช่นเดียวกับรีเลชั่นเดิม


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