Autor | Zpráva | ||
---|---|---|---|
Draffix Profil |
#1 · Zasláno: 27. 10. 2012, 22:59:24
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 |
#2 · Zasláno: 27. 10. 2012, 23:25:27
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 |
#3 · Zasláno: 28. 10. 2012, 05:58:33
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 |
#4 · Zasláno: 28. 10. 2012, 09:18:55
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 |
#5 · Zasláno: 28. 10. 2012, 10:35:17
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 |
||
Časová prodleva: 11 let
|
0