Autor | Zpráva | ||
---|---|---|---|
Klout Profil * |
#1 · Zasláno: 8. 1. 2013, 20:47:23
Dobrý den,
nevím zda tohle vůbec jde, zkoušel jsem to hledat, ale popravdě ani moc nevím pod čím. Hrál jsem si i s tabulkama, zkoušel přiřazovat různé indexy, ale stejně bez úspěchu. Jde mi o tohle - mám tabulky „tags“ (id, tag_id, tag_name) a jediný čeho chci docílit, tak aby při vložení stejného názvu (tag_name) se přiřadilo stejné tag_id. Tedy asi takhle - (id, tag_id, tag_name) 1, 1, notebook 2, 1, notebook 3, 1, notebook 3, 2, klávesnice 3, 3, myš 3, 2, klávesnice Díky moc za rady! |
||
Kcko Profil |
#2 · Zasláno: 8. 1. 2013, 20:53:58
A nestačilo by si dotazem zjistit podle názvu jestli tam ten název je a pokud ano tak vrátit jeho ID a to poté vložit jinak vložit jiné ?
|
||
juriad Profil |
#3 · Zasláno: 8. 1. 2013, 21:02:01
porušuješ 2. normální formu, zaděláváš si na problémy; v databázovém modelu se máš snažit redundantní data eliminovat
měl bys tedy mít dvě tabulky: assignments = (id, tag_id), tags =(tag_id, tag_name) SELECT * FROM assignments JOIN tags ON assignments.tag_id = tags.tag_id za předpokladu, že id je produkt/článek/cokoli čemu tag přiřazuješ |
||
Klout Profil * |
#4 · Zasláno: 8. 1. 2013, 21:09:00
Díky moc kluci, oboum. Otevřelo mi to oči, udělal jsem to podle juriada.
|
||
Kcko Profil |
#5 · Zasláno: 8. 1. 2013, 21:46:23
juriad:
v databázovém modelu se máš snažit redundantní data eliminovat Tak to bych si dovolil oponovat. Zrovna v tomhle případě sice ano, ale jsou případy kdy duplicitní data (opakovaná v x tabulkách) mohou DB stroji značně usnadnit život. |
||
JaySee Profil |
Kcko:
Stroj vs. člověk a logika... kdo se v tom pak má hrabat, když jsou duplicity. Jedinou duplicitu, kterou uznávám, je ID. |
||
Kcko Profil |
#7 · Zasláno: 8. 1. 2013, 22:02:25
JaySee:
Duplicita != redundatní data pro potřeby snížení zátěže db serveru. |
||
juriad Profil |
Kcko:
Najdi si něco o předčasné optimalizaci, například http://podnebi.jan-martinek.com/predcasna-optimalizace/ nebo http://www.java.cz/article/optimalizovatcineoptimalizovat Je poněkud nevhodné začátečníkům říkat, že redundance může být někdy vhodná, protože oni nedokaží zatím rozlišit, kdy se skutečně vyplatí a prokáže, že je přínosem byť na úkor zvýšení režie údržby dat. Navíc souhlasím s JaySeem, že široce vhodná je jediná redundance: jednoatributový klíč ID. |
||
Kcko Profil |
juriad:
Ten článek je o ničem. Stejně tak je nevhodné začátečníkům říkat, že jediná správná DB je absolutně bez redundatních dat. Pak budou dotazy vypadat asi takto select while() { milion dalsich selectu protoze zacatenik si nebude umět slozit slozitejsi ci velmi slozity dotaz. } Navic jsou pripady, kdy se to proste jeví jako nejsprávnější řešení pro snížení zátěže. V jedné sofistikované naučné knize o tom pojednával jistý MySQL guru, Welling nebo kdo ... nevzpomenu si a rázně to vysvětloval: přesnou definici si nepamatuji. Dál je zbytečné se o tom bavit názor na to oba máme diametrálně odlišný a neshodneme se. |
||
Časová prodleva: 11 let
|
0