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