บริษัทผลิตรองเท้ามีตาราง Product (ProductID, Name, Price) และตาราง PriceHistory (PriceHistoryID, ProductID, OldPrice, NewPrice, ChangeDate) ข้อใดระบุปัญหาเชิงการวิเคราะห์ของการออกแบบนี้และแนวทางแก้ไขที่เหมาะสมที่สุด
กตาราง PriceHistory เก็บทั้ง OldPrice และ NewPrice ทำให้ข้อมูลซ้ำซ้อนกับ Price ในตาราง Product ควรเพิ่มคอลัมน์ EffectiveDate และ ExpiryDate ในตาราง PriceHistory แทน เพื่อให้สามารถวิเคราะห์ราคาในช่วงเวลาใดก็ได้โดยไม่ต้องเก็บค่าซ้ำ
ขตาราง Product ไม่มี Foreign Key เชื่อมกับตาราง PriceHistory ทำให้ JOIN ข้อมูลไม่ได้ ควรเพิ่ม Foreign Key ที่ตาราง Product อ้างอิงไปยัง PriceHistoryID เพื่อให้ระบบสามารถติดตามการเปลี่ยนแปลงราคาได้อย่างถูกต้อง
คตาราง PriceHistory ไม่มี Index บนคอลัมน์ ChangeDate ทำให้การค้นหาช้า ควรสร้าง Composite Index บน ProductID และ OldPrice เพื่อเพิ่มประสิทธิภาพการ Query ราคาสินค้าในแต่ละช่วงเวลา
งตาราง Product เก็บเฉพาะราคาปัจจุบันโดยไม่มีการแบ่ง Partition ทำให้วิเคราะห์แนวโน้มราคาไม่ได้ ควรแบ่ง Partition ตาราง Product ตามช่วงราคา เพื่อให้สามารถเปรียบเทียบราคาสินค้าแต่ละประเภทได้
เฉลยอธิบาย
ปัญหาหลักคือตาราง PriceHistory เก็บทั้ง OldPrice และ NewPrice ซึ่งทำให้ข้อมูลซ้ำซ้อนกับ Price ในตาราง Product เช่น NewPrice ของรายการหนึ่งควรเท่ากับ OldPrice ของรายการถัดไป การเพิ่ม EffectiveDate และ ExpiryDate แทนจะทำให้สามารถระบุช่วงเวลาที่ราคานั้นมีผล วิเคราะห์ราคา ณ วันใดก็ได้ และลดความซ้ำซ้อนของข้อมูลได้อย่างมีประสิทธิภาพ ส่วนตัวเลือกอื่นระบุปัญหาที่ไม่ตรงประเด็นหรือแนวทางแก้ไขที่ไม่เหมาะสม