1.9.3 การแบ่งข้อมูลลงในตารางต่าง ๆ
เมื่อต้องการแบ่งข้อมูลลงในตาราง ให้เลือกข้อมูลเฉพาะตัวหรือเรื่องสำคัญ
ตัวอย่างเช่น หลังจากค้นหาและจัดระเบียบข้อมูลสำหรับฐานข้อมูลการขายสินค้าแล้ว รายการ
เบื้องต้นอาจเป็นดังนี้
รูปที่ 1-11 การแบ่งข้อมูลเฉพาะตัวหรือเรื่องสำคัญลงในตาราง
ข้อมูลเฉพาะตัวที่สำคัญซึ่งแสดงในที่นี้ได้แก่ ผลิตภัณฑ์ ผู้จำหน่าย ลูกค้า และใบสั่ง
ซื้อ ดังนั้น จึงสมควรเริ่มต้นด้วยตาราง 4 ตาราง คือ ตารางหนึ่งสำหรับข้อเท็จจริงเกี่ยวกับผลิตภัณฑ์
ตารางหนึ่งสำหรับข้อเท็จจริงเกี่ยวกับผู้จำหน่าย ตารางหนึ่งสำหรับข้อเท็จจริงเกี่ยวกับลูกค้า และ
ตารางหนึ่งสำหรับใบสั่งซื้อ ถึงแม้ว่าทั้งหมดนี้จะไม่ใช่รายการที่ครบถ้วน แต่ก็เป็นจุดเริ่มต้นที่ดี
สามารถปรับปรุงรายการนี้ต่อจนกว่าจะมีการออกแบบที่ทำงานได้ดี
เมื่อได้ตรวจทานรายการสิ่งต่าง ๆ ขั้นต้นเป็นครั้งแรก เราอาจอยากใส่รายการ
ทั้งหมดลงในตารางเดียวแทนที่จะเป็นสี่ตารางดังที่แสดงภาพประกอบไว้ก่อนหน้า จะได้เรียนรู้ว่า
ทำไมการทำเช่นนั้นจึงไม่ใช่ความคิดที่ดี ลองพิจารณาตารางที่แสดงต่อไปนี้
รูปที่ 1-12 ตัวอย่างการใส่รายการทั้งหมดลงในตารางเดียว
ในกรณีนี้ แต่ละแถวมีข้อมูลเกี่ยวกับผลิตภัณฑ์และผู้จำหน่ายผลิตภัณฑ์นั้น เนื่องจาก
เราสามารถมีผลิตภัณฑ์หลายอย่างจากผู้จำหน่ายรายเดียวกัน ชื่อและที่อยู่ผู้จำหน่ายจึงปรากฏซ้ำหลา
ครั้ง ทำให้เปลืองเนื้อที่ดิสก์ การบันทึกข้อมูลผู้จำหน่ายเพียงครั้งเดียวในตารางผู้จำหน่าย ซึ่งแยก
ต่างหากแล้วเชื่อมโยงมายังตารางผลิตภัณฑ์ จึงเป็นวิธีแก้ปัญหาที่ดีกว่า
ปัญหาที่สองของการออกแบบนี้เกิดขึ้น เมื่อต้องการปรับเปลี่ยนข้อมูลเกี่ยวกับผู้
จำหน่าย ตัวอย่างเช่น สมมติว่าต้องการเปลี่ยนที่อยู่ของผู้จำหน่าย เนื่องจากที่อยู่ปรากฏในหลายแห่ง
เราอาจเปลี่ยนที่อยู่ในรายการหนึ่งแล้วลืมเปลี่ยนอีกรายการโดยไม่ได้ตั้งใจ การบันทึกที่อยู่ของผู้
จำหน่ายไว้ในที่เดียวจะแก้ปัญหานี้
เมื่อออกแบบฐานข้อมูล ให้พยายามบันทึกข้อเท็จจริงแต่ละอย่างเพียงครั้งเดียวเสมอ
ถ้าพบว่าตัวเองเก็บข้อมูลเดียวกันซ้ำมากกว่าหนึ่งแห่ง เช่น ที่อยู่ของผู้จำหน่ายรายหนึ่ง ให้เก็บข้อมูล
ในตารางที่แยกต่างหาก
สุดท้าย สมมติว่ามีเพียงผลิตภัณฑ์เดียวที่ Coho Winery จำหน่าย และต้องการลบ
ผลิตภัณฑ์นั้นแต่ต้องการเก็บข้อมูลชื่อผู้จำหน่ายและที่อยู่ไว้ เราจะลบระเบียนผลิตภัณฑ์โดยไม่
สูญเสียข้อมูลผู้จำหน่ายได้อย่างไร คำตอบคือทำไม่ได้ เพราะว่าระเบียนแต่ละระเบียนมีข้อเท็จจริง
เกี่ยวกับผลิตภัณฑ์และเกี่ยวกับผู้จำหน่ายด้วย เราไม่สามารถลบอย่างหนึ่งโดยไม่ลบอีกอย่างได้ ถ้า
ต้องการเก็บข้อเท็จจริงเหล่านี้แยกจากกัน ต้องแบ่งตารางออกเป็นสองตาราง คือ ตารางหนึ่งสำหรับข้อมูลผลิตภัณฑ์ และอีกตารางสำหรับข้อมูลผู้จำหน่าย การลบระเบียนของผลิตภัณฑ์ควรลบแค่
ข้อเท็จจริงเกี่ยวกับผลิตภัณฑ์เท่านั้น ไม่ใช่ข้อเท็จจริงเกี่ยวกับผู้จำหน่าย
เมื่อได้เลือกเรื่องที่จะแทนด้วยตารางแล้ว คอลัมน์ในตารางนั้นควรเก็บเฉพาะ
ข้อเท็จจริงเกี่ยวกับเรื่องนั้นเท่านั้น ตัวอย่างเช่น ตารางผลิตภัณฑ์ควรเก็บเฉพาะข้อเท็จจริงเกี่ยวกับ
ผลิตภัณฑ์ เนื่องจากที่อยู่ของผู้จำหน่ายเป็นข้อเท็จจริงเกี่ยวกับผู้จำหน่าย ไม่ใช่ข้อเท็จจริงเกี่ยวกับ
ผลิตภัณฑ์ ดังนั้นต้องอยู่ในตารางผู้จำหน่าย
0 ความคิดเห็น:
แสดงความคิดเห็น