ในการออกแบบระบบการขายอนลาইน ข้อมูลส่วนลด (Discount) อาจใช้ได้ในหลายสถานการณ์: ส่วนลดต่อสินค้าบางชนิด ส่วนลดต่อลูกค้าVIP ส่วนลดต่อจำนวนซื้อ ส่วนลดตามเทศกาล ควรออกแบบอย่างไร
กสร้างตาราง ProductDiscount, CustomerDiscount, QuantityDiscount, PromotionDiscount โดยใช้กรรมการเชื่อมโยง Discount เดียว
ขเก็บข้อมูลทั้งหมดในตาราง Order และคำนวณส่วนลดทำนายหลังจากบันทึก
คสร้างฟิลด์ Discount ในตาราง Product, Customer, OrderItem, Promotion แล้วใช้ Logic ในโปรแกรมเพื่อตัดสินใจว่าส่วนลดใดจะใช้
งสร้างตาราง Discount เดียวที่เก็บประเภทส่วนลด ขอบเขต (Range) เงื่อนไข และค่าส่วนลด พร้อมเก็บข้อมูลตัวอ้างอิง (Reference) ไปยังที่สอง Product/Customer/Promotion
เฉลยอธิบาย
การออกแบบที่ยืดหยุ่นต้องสร้าง Discount เป็นตารางกลาง (Hub Table) ที่เก็บ: DiscountID, DiscountType (e.g., 'Product', 'Customer', 'Quantity', 'Promotion'), Condition, DiscountValue, StartDate, EndDate จากนั้นสร้างตาราง Product_Discount, Customer_Discount, Order_Item_Discount, Promotion_Discount เพื่อเชื่อมโยง ตัวเลือก A ไม่เป็นระเบียบและจะเกิดซ้ำซ้อน ตัวเลือก C ใกล้เคียง แต่ B เป็นการออกแบบที่ Scalable และ Normalized มากกว่า ตัวเลือก D ไม่เป็นระเบียบและผิดหลักการ