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