วันจันทร์ที่ 27 มกราคม พ.ศ. 2557

การจัดระเบียบฐานข้อมูล (Normalization)




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

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

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



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

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




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


ไม่มีความคิดเห็น:

แสดงความคิดเห็น