Normalization หลักการและจุดประสงค์ ตอนที่ 1

Image

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

               ซึ่งกระบวนการนอมอร์ไลได้พัฒนาโย E.F.Codd (1972) เป็นเทคนิคช่วยในการวิเคราะห์รีเลชั่นให้อยู่ในรูปแบบ Normal form มีด้วยกัน 3 ระดับ

  1. นอร์มัลฟอร์มระดับที่ 1 เราจะเรียกมันว่า 1NF
  2. นอร์มัลฟอร์มระดับที่ 2 เราจะเรียกมันว่า 2NF
  3. นอร์มัลฟอร์มระดับที่ 3 เราจะเรียกมันว่า 3NF

นอกจาก 3 ระดับนี้แล้วยังมีอีกระดับนึงที่ืำให้การทำนอร์มัลไลให้มีความแข็งแกร่งและดีกว่าเดิมเรียกกันว่า BCNF ซึ่งตรงนี้ผมจะไม่ขออธิบายเอาไว้บทควาหน้าผมจะมาพูดเรื่องนี้ แต่ผมจะมาอธิบายว่าใน 3 ระดับแรกนั้นเราจะต้องทำอย่างไรบ้าง

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

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

Image

ImageImage

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

ข้อผิดพลาดที่เกิดจากการเพิ่มข้อมูล (Insertion Anomalies)

เหตุหลักๆ นั้นจะมีอยู่ 2 ชนิดโดนเราจะมาดูจากข้อผิดพลาดอ้างอิงจากตารางแรกกันนะครับ

  1. ในการเพิ่มข้อมูลของนักศึกษาใหม่ในตารางที่ 1 นั้นเราจำเป็นจะต้องจะต้องเพิ่มรายละเอียดของคณะลงไปด้วย เช่นในตารางที่ 1 หาเราเพิ่มนักศึกษาเข้าไปใหม่ที่อยู่คณะ F3 เราก็ต้องจำเป็นที่จะต้องกรอกข้อมูลของคณะนั้นลงไปในตารางแรกใ้ห้ถูกต้อง ด้วยเช่นกัน เพื่อนๆ จะได้ว่าความซ้ำซ้อนได้เกิดขึ้นเนื่องจากเรามีข้อมูลคณะอยู่แล้ว ผมหมายถึงตารางที่ 2 แต่เราต้องกรอกข้อมูลของคณะซ้ำลงไปในตารางที่ 1 อีก
  2. หากเราทำเกิดเปิดคณะใหม่ขึ้นมานั้น ซึ่งเราจะทำได้ก็ต่อเมื่่อเราทำการใส่ค่าวางลงไปในข้อทูลของนักศึกษาทั่งหมด แต่ในตารางที่ 2 เรามี StuNo เป็นคีย์หลัก ดังนั้นจึงไม่สามารถใส่รายละเอียดของสาขาใหม่ลงไปได้ หรือนกจากเราจะใส่รายละเอียดของคณะได้ก็ต่อเมื่อมีสามาชิกคนใดคนนึงเข้ามาอยู่ในคณะ

ข้อผิดพลาดที่เกิดจากการลบข้อมูล (Deletion anomlies)

เป็นข้อผิดพลาดที่เกิดจากการลบข้อมูล และส่งผลไปยังข้อมูลอื่นๆ ต้องลบตามไปด้วย เช่น นักศึกษาหมายเลข S34 ได้ถูกไล่ออก ดังนั้นเราจึงจำเป็นต้องลบข้อมูลของเขาออกจากฐานข้อมูล ซึ่งทำให้ทำให้ต้องลบคณะที่เขาอยู่ออกไปด้วยคือ F3 และเราจะเป็นได้ว่า คณะ F3 มีนักศึกษาเพียงคนเดียวดังนั้นจึงทำให้คณะ F3 หายไปจากฐานข้อมูลด้วย

ข้อผิดพลาดที่เกิดจากการเปลี่ยนแปลงข้อมูล (Modification /Update anomlies)

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

ซึ่งมาถึงตรงนี้ผมจะขอหยุดหลักการและแนวคิดต่่่างๆ ไว้ก่อนจะเอาไว้มาต่อคราวหน้าว่าการทำนอร์มัลไลเซชันนั้น เขาทำกันอย่างไร เพื่อแก้ไขข้อผิดพลาดที่เกิดจากปัญหาี่พูดไปตอนต้นคือ การเพิ่ม , ลบ , เปลี่ยนข้อมูล ซึ่งเราจะนำกระบวนการนอร์มอไลเซชันเข้ามาจัดการตารางของเราให้อยู่ในรูปที่เหมาะสม (Well-Formed) ซึ่งในเรื่องต่อไปคือจะต้องทำความเข้าใจกับ ฟังก์ชันก์การขึ้นต่อกัน (Function Dependencies) และต่อด้วยการทำนอร์มอไลเซชัน

Facebook Comments