Я розробляю свою першу схему електронної комерції. Я дещо читав цю тему і трохи розгублений щодо стосунків між a order_line_item
і aproduct
А 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)? Цікаво, чи змішую я багато понять, дуже вдячний за деякі вказівки.