ตาราง 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 ไม่ถูกต้อง