informacje o produkcje jako relacja czy kolumna ?

0

cześć mam mały problem i nie wiem do końca w którą stronę iść

przypuśćmy, że mam tabele z produktami która posiada: nazwę, opis i cenę

tabela products:
id
name
description
price

dalej, zamówienia trzymam w tabeli orders

i teraz jest pytanie:

przypadek nr 1:
czy tworzyc relacje i przechowywac id produktu czyli moj order bedzie wygladal mniej wiecej tak:

tabela Orders:
id
product_id

minus tego jest taki, ze gdy zmieni się cena produktu, to zamówienia kupione w przeszłości nie będą się zgadzać

rozwiązanie nr 2:

tabela Orders:
id
product_name
product_price

minus taki, ze jest brak powiązania z produktem co uniemożliwi później statystyki, wykresy itp.

przypadek nr 3: (wg mnie najbardziej odpowiedni)

tabela Orders:
id
product_id
product_name
product_price

posiada relacje z produktem oraz zachowuje jego stan z momentu zakupu, wiec jeśli się zmieni cena i nawet opis to wszystko zostaje bez zmian

co sądzicie o moim toku myślenia?

2
  1. relacja jest synonimem słowa tabela (https://pl.wikipedia.org/wiki/Model_relacyjny) - połączenie dwóch tabel to złączenie.

  2. Podejście trzecie jest jak najbardziej prawidłowe - nie może wystąpić sytuacja w której zmiana danych produktu wpłynie na stare zamówienia / statystyki.

Inna sprawa, że raczej będziesz miał tabele orders oraz order_products (gdzie dopiero będzie złączenie do products), a nie trzymał wszystko w orders.

1

Tabele pośrednie, gdzie trzymasz ceny, daty i id z obu tabel. Czyli przypadek trzeci.

0

Oczywiście, że wszystko będzie trzymane w tabeli pośredniej, chciałem tylko przedstawić to w jak najprostszy sposób

ps. nie wiedziałem jak poprawnie nazwać wątek :D

0

No jest jeszcze czwarte rozwiązanie tzn. przypadek nr 1 i stworzenie dodatkowej tabeli np. archive_of_products lub history_of_products, w której rejestrowane byłyby zmiany cen wraz z datami. Odtworzenie historycznego zamówienia wraz z cenami odbywałoby się na podstawie daty zamówienia i dat zmiany. Dodatkowo masz historię jak zmieniały się ceny i brak powielania danych (cena, nazwa) itd. Ale komu by się chciało tak kombinować ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1