ตาราง Shipment ในระบบโลจิสติกส์มีฟิลด์ดังนี้: ShipmentID, DriverID, DriverName, TruckID, TruckModel, RouteID, DepartureTime, ArrivalTime พบปัญหา Data Redundancy และ Update Anomaly การแก้ไขตารางนี้ให้ถูกต้องตามหลัก 3NF ควรทำอย่างไร

แยกออกเป็น 3 ตาราง ได้แก่ Driver(DriverID, DriverName), Truck(TruckID, TruckModel) และ Shipment(ShipmentID, DriverID, TruckID, RouteID, DepartureTime, ArrivalTime) โดยใช้ Foreign Key เชื่อมความสัมพันธ์
เพิ่ม Primary Key แบบ Composite Key โดยใช้ (ShipmentID, DriverID, TruckID) ร่วมกัน และคงฟิลด์ทั้งหมดไว้ในตารางเดียวเพื่อลดความซับซ้อนในการ Join ตาราง
แยกออกเป็น 2 ตาราง ได้แก่ ShipmentDetail(ShipmentID, DriverID, DriverName, TruckID, TruckModel) และ ShipmentTime(ShipmentID, RouteID, DepartureTime, ArrivalTime) เพื่อแบ่งข้อมูลตามประเภท
สร้าง View จากตาราง Shipment เดิม โดยแยก View สำหรับข้อมูล Driver และ Truck ออกจากกัน แทนการแยกตารางจริง เพื่อรักษาโครงสร้างตารางเดิม

เฉลยอธิบาย

หลัก 3NF กำหนดว่าแต่ละฟิลด์ต้องขึ้นอยู่กับ Primary Key โดยตรง ไม่ใช่ขึ้นอยู่กับฟิลด์ที่ไม่ใช่ Key (Transitive Dependency) ในตารางเดิม DriverName ขึ้นอยู่กับ DriverID และ TruckModel ขึ้นอยู่กับ TruckID ซึ่งเป็น Transitive Dependency การแยกเป็น 3 ตาราง คือ Driver, Truck และ Shipment พร้อม Foreign Key จึงแก้ปัญหาได้ถูกต้องตามหลัก 3NF ส่วนตัวเลือก B ไม่ได้แก้ Redundancy, ตัวเลือก C ยังคง DriverName และ TruckModel ไว้ในตารางเดียวกับ ID ซึ่งยังผิด 3NF และตัวเลือก D ใช้ View ไม่ได้แก้ปัญหาโครงสร้างที่แท้จริง

ข้อสอบอื่นในวิชาความรู้ความสามารถในการวิเคราะห์ ออกแบบ ฐานข้อมูล

ดูข้อสอบวิชานี้ทั้งหมด →