ตาราง SalesReport (ReportID, SalesRepID, SalesRepName, RegionID, RegionName, TotalSales) มีปัญหาการออกแบบอะไร และควรแก้ไขอย่างไร

ตารางนี้ไม่มีปัญหาใดๆ เพราะเก็บข้อมูลรายงานยอดขายซึ่งควรเป็น Denormalized
ตารางนี้ละเมิด 3NF เพราะ SalesRepName ขึ้นกับ SalesRepID (ไม่ใช่ ReportID โดยตรง) ควรสร้างตาราง SalesRep และ Region แยกต่างหาก
ตารางนี้ละเมิด 1NF เพราะมีข้อมูลชื่อและรหัสในตารางเดียวกัน ควรแยกเป็น 4 ตาราง
ตารางนี้ละเมิด 2NF เพราะ SalesRepName ขึ้นกับ SalesRepID บางส่วน ควรสร้างตาราง SalesRep และ Region แยกต่างหาก

เฉลยอธิบาย

ปัญหานี้คือ Transitive Dependency ซึ่งละเมิด 3NF เพราะ SalesRepName ขึ้นอยู่กับ SalesRepID (ไม่ใช่คีย์หลัก ReportID โดยตรง) เช่นเดียวกับ RegionName ขึ้นกับ RegionID วิธีแก้คือสร้างตาราง SalesRep (SalesRepID, SalesRepName) และ Region (RegionID, RegionName) แล้วเก็บแค่ FK ใน SalesReport ตัวเลือก B ผิดเพราะ Partial Dependency เกิดกับ Composite Key แต่ที่นี่ ReportID เป็น Single Key จึงเป็น Transitive ไม่ใช่ Partial ตัวเลือก A และ C ไม่ถูกต้อง

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

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