1.9.3 การแบ่งข้อมูลลงในตารางต่าง ๆ

1.9.3 การแบ่งข้อมูลลงในตารางต่าง ๆ


เมื่อต้องการแบ่งข้อมูลลงในตาราง ให้เลือกข้อมูลเฉพาะตัวหรือเรื่องสำคัญ ตัวอย่างเช่น หลังจากค้นหาและจัดระเบียบข้อมูลสำหรับฐานข้อมูลการขายสินค้าแล้ว รายการ เบื้องต้นอาจเป็นดังนี้
 
รูปที่ 1-11 การแบ่งข้อมูลเฉพาะตัวหรือเรื่องสำคัญลงในตาราง


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

เมื่อได้ตรวจทานรายการสิ่งต่าง ๆ ขั้นต้นเป็นครั้งแรก เราอาจอยากใส่รายการ ทั้งหมดลงในตารางเดียวแทนที่จะเป็นสี่ตารางดังที่แสดงภาพประกอบไว้ก่อนหน้า จะได้เรียนรู้ว่า ทำไมการทำเช่นนั้นจึงไม่ใช่ความคิดที่ดี ลองพิจารณาตารางที่แสดงต่อไปนี้
 
รูปที่ 1-12 ตัวอย่างการใส่รายการทั้งหมดลงในตารางเดียว


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

ปัญหาที่สองของการออกแบบนี้เกิดขึ้น เมื่อต้องการปรับเปลี่ยนข้อมูลเกี่ยวกับผู้ จำหน่าย ตัวอย่างเช่น สมมติว่าต้องการเปลี่ยนที่อยู่ของผู้จำหน่าย เนื่องจากที่อยู่ปรากฏในหลายแห่ง เราอาจเปลี่ยนที่อยู่ในรายการหนึ่งแล้วลืมเปลี่ยนอีกรายการโดยไม่ได้ตั้งใจ การบันทึกที่อยู่ของผู้ จำหน่ายไว้ในที่เดียวจะแก้ปัญหานี้ 

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

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

เมื่อได้เลือกเรื่องที่จะแทนด้วยตารางแล้ว คอลัมน์ในตารางนั้นควรเก็บเฉพาะ ข้อเท็จจริงเกี่ยวกับเรื่องนั้นเท่านั้น ตัวอย่างเช่น ตารางผลิตภัณฑ์ควรเก็บเฉพาะข้อเท็จจริงเกี่ยวกับ ผลิตภัณฑ์ เนื่องจากที่อยู่ของผู้จำหน่ายเป็นข้อเท็จจริงเกี่ยวกับผู้จำหน่าย ไม่ใช่ข้อเท็จจริงเกี่ยวกับ ผลิตภัณฑ์ ดังนั้นต้องอยู่ในตารางผู้จำหน่าย

0 ความคิดเห็น:

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