Autor Zpráva
Draffix
Profil
Zdravím, řeším teď takové dilema. Mám celkem tři jednoduché tabulky:

product
---------
prod_id
prod_name

order_has_product
------------------------
product_prod_id
order_ord_id

order
-------
ord_id

Relaci m:n jsem zvolil proto, že objednávka může mít více produktů a zpětně mi to pak pomůže vyhledat ve kterých objednávkách se produkt nachází. Jenže jsem narazil na problém, a to je množství. Jak do objednávky vložit množství jednoho určitého produktu? Mám to vložit do té tabulky order_has_product jako třetí sloupec? Nebo nějak jinak? Předem děkuji za odpověď
Tori
Profil
Draffix:
Mám to vložit do té tabulky order_has_product jako třetí sloupec?
IMHO: Mně to připadá logické takto, objednané množství je vlastnost produktu-v-objednávce.
Majkl578
Profil
Ano, nejlépe do vazební tabulky. Zvážil bych, jestli by nedávalo smysl ukládat si i aktuální cenu (apod.), jelikož ta se v průběhu času může změnit (a zpětně by se hůře dohledávala „správná“ cenu produktu v době vytvoření objednávky).

Tudíž 3 tabulky s cizími klíči:
products
PK int id
...

orders_products
PFK int order_id (->orders.id)
PFK int product_id (->products.id)
int amount
...

orders
PK int id
...
Draffix
Profil
Majkl578:
To je pravda, nad tím jsem nějak moc nepřemýšlel (nebo přemýšlel ale už zapomněl).

Děkuji vám za odpovědi, moc mi pomohly.
juriad
Profil
dodávám k Majkl578ovi jinou možnost zachování ceny objednávky:
můžeč produkt obohatit o verzi; při změně ceny nebo jakéhokoli jiného atributu se vytvoří pro produkt nový záznam se zvýšenou verzí
potom bys mohl nahradit cizí klíč na product_id za cizí klíč na dvojici (product_id, version) a mít jistotu, že se ti objednáva později nezmění

pří běžném výpisu produktů v obchodu bys používal vždy jen aktuální verzi

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0