หน่วยที่ 5 การนอร์มัลไลเซชัน (ต่อ)

ประเด็นที่ควรคำนึงถึงในการทำให้อยู่ในรูปแบบ Normal Form

  • การแตกรีเลชันมากเกินไป (Overnormalization)

​การจำแนกรีเลชันย่อยมากเกินไป หมายถึง การจำแนกรีเลชันออกเป็นรีเลชันย่อยมากเกินกว่า ความจำเป็น

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

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

  • การดีนอร์มัลไลเซชัน (Denormalization)

  ​        การ Denormalization หมายถึง การที่รีเลชันใด ๆ ถูกออกแบบให้มีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นต่ำกว่ากฎเกณฑ์ที่กำหนดไว้ ตัวอย่างเช่น รีเลชันนั้นควรถูกออกแบบให้มีคุณสมบัติอยู่ใน รูปแบบที่เป็นบรรทัดฐานขั้นที่ 3 แต่ผู้ออกแบบฐานข้อมูลกำหนดให้รีเลชันนั้นมีคุณสมบัติอยู่ในรูปแบบที่เป็นบรรทัดฐานขั้นที่ 2 เท่านั้น

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

          การดีนอร์มัลไลเซชัน ในกรณีที่บางรีเลชันถูกออกแบบโดยการไม่ทำให้อยู่ในรูปแบบบรรทัดฐานที่เป็นไปตามกฏเกณฑ์ที่กำหนดไว้ เช่น ควรปรับให้อยู่ในรูปแบบ 3NF แต่หยุดอยู่เพียงแค่ 2NF เป็นต้น ทั้งนี้ อาจเป็นเพราะเหตุผลในเรื่องของประสิทธิภาพในการเรียกดู หรือค้นหาข้อมูล และยอมให้เกิดความซ้ำซ้อนของข้อมูลได้ ด้วยเหตุที่การดีนอร์มัลไลเซชัน อาจทำให้เกิดปัญหาความซ้ำซ้อนของข้อมูล จึงควรมีการระบุสาเหตุและวิธีการในการปรับปรุงข้อมูลในโปรแกรมประยุกต์ใช้งาน เพื่อป้องกันไม่ให้เกิดปัญหาข้อมูลไม่ถูกต้อง

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

          ตัวอย่างการดีนอร์มัลไลเซชัน

            การรวมแอททริบิวต์รหัสวิชาเอกจากรีเลชันที่อยู่นักศึกษาและแอททริบิวต์ชื่อวิชาเอกจากรีเลชันวิชาเอก ไว้เป็นแอททริบิวต์หนึ่งในรีเลชันนักศึกษาโดยให้ชื่อว่า แอททริบิวต์วิชาเอก แทนที่จะทำการจำแนกเป็นรีเลชันวิชาเอกเพื่อระบุถึงรหัสวิชาเอกและชื่อวิชาเอก ทั้งนี้ เนื่องจากมีจำนวนรหัสวิชาเอกไม่มากนัก คือ มี 2 รหัสวิชาเอกเท่านั้น เป็นต้น