ฉันออกแบบคีมาอีคอมเมิร์ซแรกของฉัน ฉันได้อ่านเรื่องนี้มาระยะหนึ่งแล้วและสับสนเล็กน้อยเกี่ยวกับความสัมพันธ์ระหว่างorder_line_itemกับproduct
productสามารถรับการสั่งซื้อ มันมีรายละเอียดที่แตกต่างกัน unit_priceแต่ที่สำคัญที่สุดคือ
order_line_itemมีคีย์ต่างประเทศไปproduct_idซื้อที่quantityซื้อและunit_priceที่จุดในเวลาลูกค้าที่ซื้อสินค้า
สิ่งที่ฉันได้อ่านส่วนใหญ่บอกว่าควรเพิ่มunit_priceon order_line_item(อย่างชัดเจนโดยไม่อ้างอิงผ่านproduct_id) สมเหตุสมผลเนื่องจากร้านค้าสามารถเปลี่ยนแปลงราคาในอนาคตซึ่งจะทำให้การรายงานคำสั่งซื้อการติดตามความสมบูรณ์และอื่น ๆ
สิ่งที่ฉันไม่เข้าใจคือทำไมบันทึกโดยตรงunit_priceไปยังค่าorder_line_itemหรือไม่
การสร้างตารางการตรวจสอบ / ประวัติจะเป็นการดีกว่าการสร้างตารางการunit_priceเปลี่ยนแปลงproductหรือไม่?
เมื่อมีการorder_line_itemสร้างคีย์ต่างประเทศของproduct_auditตารางจะถูกเพิ่มและสามารถดึงราคา (โดยอ้างอิง) จากที่นั่น
ดูเหมือนว่าฉันจะมีข้อดีหลายอย่างในการใช้วิธีนี้ (การทำซ้ำของข้อมูลน้อยลง, ประวัติการเปลี่ยนแปลงราคาเป็นต้น) ดังนั้นทำไมจึงไม่ใช้บ่อยกว่านี้ ฉันยังไม่เจอตัวอย่างของสคีมาอีคอมเมิร์ซที่ใช้วิธีการนี้ฉันทำอะไรหายหรือเปล่า
UDPATE: ดูเหมือนว่าคำถามของฉันที่เกี่ยวข้องกับการเปลี่ยนแปลงอย่างช้าๆมิติ ฉันยังคงสับสนอยู่ว่าในขณะที่การเปลี่ยนมิติช้าเกี่ยวข้องกับคลังข้อมูลและ OLAP ดังนั้นชนิดการเปลี่ยนแปลงมิติช้าสามารถนำไปใช้กับฐานข้อมูลธุรกรรมทางธุรกิจหลักของฉัน (OLTP) ได้หรือไม่ ฉันสงสัยว่าฉันกำลังรวมแนวคิดจำนวนมากเข้าด้วยกันหรือไม่