Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Michal Kuba
Tvůrce
Avatar
Michal Kuba:22.6.2019 17:45

Ahoj,

řeším takovou delikátní věc a zajímaly by mě vaše názory.

Dejme tomu, že mám databázi produktů a každý jeden produkt může mít X kategorií - kategorie mají vlastní tabulku. Potom je párovací tabulka, kde se eviduje ID produktu a ID kategorie, tedy product_has_ca­tegory.

Kategorie jsou v multiselectu při editaci či přidávání produktu.

Pokud produkt přidávám, tak je jasný, že potom iteruji nad vybranými kategoriemi a vložím vždy do párovací tabulky ID produktu a kategorie.

Ale co když produkt edituji a měním i kategorie? Co je nejefektivnější způsob?
Respektive dá se s klidným svědomím použít to, že při editaci produktu vždy nejprve vymažu z párovací tabulky všechny záznamy s daným ID produktu a následně opět iterací nad kategoriemi z multiselectu vytvořím záznamy kde páruji ID produktu a kategorie?

Předem díky! :)

 
Odpovědět
22.6.2019 17:45
Avatar
Lu Kiss
Člen
Avatar
Odpovídá na Michal Kuba
Lu Kiss:22.6.2019 18:09

Dělal bych to jak píšeš, při ukládání vymazat z tabulky product_has_ca­tegory záznamy pro daný produkt a poté přidat záznamy o kategoriích které byly v tom multiselectu.
edit: omylem jsem ti dal palec dolů :(

Editováno 22.6.2019 18:10
 
Nahoru Odpovědět
22.6.2019 18:09
Avatar
Odpovídá na Michal Kuba
Martin Konečný (pavelco1998):22.6.2019 18:14

Ahoj,

pokud na té tabulce 'product_has_ca­tegory' nezávisí něco jiného (např. trigger ON DELETE, nebo tam není nějaký cizí klíč apod.), tak je to asi v pořádku. Jedině si budeš plácat čísla pro ID v auto increment :D
Samozřejmě pod podmínkou, že ta celá operace proběhne v transakci.

Nahoru Odpovědět
22.6.2019 18:14
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.