MultiSelect a tabulka m:n – Best practice?
- David Kregl
- Člen | 52
Ahoj!
Narazil jsem na pravděpodobně obvyklý, ale pro mě nejasný problém.
Mám tabulku members a tabulku roles, mezi těmito tabulkami je vazba m:n.
Tabulka roles_map slouží k jejich spojení, obsahuje sloupce member_id a
role_id. Jak nejlépe vyřešit update do této tabulky?
Napadá mě velmi intuitivní řešení. Všechny záznamy pro uživatele x z tabulky roles_map smazat a nahradit je výstupem z multiselectu. Tohle řešení mi však nepřijde úplně košér.
Jak to řešíte vy?
Díky!
- David Kregl
- Člen | 52
Šaman napsal(a):
Některé ORM to taky tak dělají. Problém pak nastává jen tehdy, když to není pravá spojovací tabulka (jen dva sloupce), ale má i ID a třeba nějaké další sloupce (typicky nějaké příznaky té vazby).
Máš-li jen dva sloupce, klidně to řeš jak navrhuješ.
Mám v té tabulce i sloupec id – AI, INT(11). Jaké je nejlepší řešení v takovém případě? Díky
- Šaman
- Člen | 2668
Já používám LeanMapper. To id
by nemělo vadit, jen ti to
bude zbytečně generovat další a další.
V LM, když jsem přidal id
a sloupec s příznakem, tak jsem
si už na to vytvořil entitu a pak kontroloval, jestli už v databázi
existuje, nebo ne. Je to sice víc dotazů, ale ten update se neprovádí
často, takže by to nemělo vadit. V NDb by to mělo jít stejně, jen
nepracuješ s entitou ale Row.