Projektuję mój pierwszy schemat eCommerce. Od jakiegoś czasu czytam ten temat i jestem trochę zdezorientowany relacjami między order_line_item
aproduct
product
Puszki zostały zakupione. Ma różne szczegóły, ale najważniejsze jest unit_price
.
order_line_item
Posiada klucz obcy do product_id
zakupiona, to quantity
zakupiono i unit_price
przy momencie klient zakupił produkt.
Większość z tego co czytałem, mówi, że unit_price
na order_line_item
należy wyraźnie dodanej (czyli nie poprzez odwołanie product_id
). Ma to sens, ponieważ sklep może w przyszłości zmienić cenę, co zepsuje raporty zamówień, śledzenie, integralność itp.
Nie rozumiem tylko, dlaczego bezpośrednio zapisać unit_price
wartość order_line_item
?
Czy nie byłoby lepiej stworzyć tabelę audytu / historii, która dokumentuje unit_price
zmianę product
?
Po utworzeniu an dodawany jest order_line_item
klucz obcy product_audit
tabeli i stamtąd można pobrać cenę (przez odniesienie).
Wydaje mi się, że stosowanie tego podejścia ma wiele zalet (mniej powielania danych, historii zmian cen itp.), Więc dlaczego nie jest częściej stosowane? Nie spotkałem się z przykładem schematu eCommerce, który wykorzystuje to podejście, czy coś mi brakuje?
UDPATE: Wygląda na to, że moje pytanie dotyczy powolnie zmieniającego się wymiaru . Nadal jestem zdezorientowany, ponieważ powolnie zmieniający się wymiar dotyczy hurtowni danych i OLAP. Czy zatem w mojej głównej bazie danych procesów biznesowych (OLTP) można zastosować typy Slowy Changing Dimension? Zastanawiam się, czy pomieszam wiele pojęć, Byłbym bardzo wdzięczny za pewne wskazówki.