Autor | Zpráva | ||
---|---|---|---|
Arynev Profil * |
#1 · Zasláno: 14. 4. 2011, 09:10:05
Ahoj,
mám tabulku komentáře, a komentáře mohou být přidávané k více druhům obsahu. Například článek, stránka atd...(každý druh obsahu má svou vlastní tabulku) Vyřešil jsem to sloupcem enum, do kterého nastavuju typ obsahu, ale nastává problém při vypsání nejnovějších komentářů a k nim odkazu na obsah. Při vybrání a následném procházení jednotlivých dotazů bych musel kontrolovat podmínky a ke každému jednotlivému komentáři přidat minimálně jeden dotaz. Lze to vyřešit nějak úsporněji? Nebráním se jinému návrhu databáze. Díky za odpovědi |
||
Mastodont Profil |
#2 · Zasláno: 14. 4. 2011, 09:41:08
Já bych zavedl globální jedinečný ID pro všechny typy obsahu a ke komentářům bych ukládal tento ID.
|
||
Arynev Profil * |
#3 · Zasláno: 14. 4. 2011, 09:57:15
Nepřinese to více problémů než užitku? Například při přidání nového záznamu by bylo potřeba kontrolovat poslední ID.
|
||
Mastodont Profil |
#4 · Zasláno: 14. 4. 2011, 10:09:07 · Upravil/a: Mastodont
Při přidání nového záznamu (článku, stránky) bys nejdříve vložil nový záznam do extra tabulky s jediným sloupcem auto increment a přes insert_id získáš nový ID, který použiješ jako id článku a id pro komentáře.
|
||
Kajman_ Profil * |
#5 · Zasláno: 14. 4. 2011, 10:14:28
Arynev:
K posledním komentářům potřebuje např. nadpis článku nebo tak něco? Asi bych to řešil uloženou funkcí, která se použije přímo v dotaze. Také by se dalo vytvořit view, kde bude něco jako enum, idvramcienum, nadpis, url a s tím pak poslední komentáře spojovat (ale to bude asi citelně pomalejší). |
||
Arynev Profil * |
#6 · Zasláno: 14. 4. 2011, 11:15:25
Díky za odpovědi. Jak nad tim přemýšlím, nudu s daty stejně muset pracovat, takže bych se dotazu nevyhnul.
|
||
Kajman_ Profil * |
#7 · Zasláno: 14. 4. 2011, 11:31:01
Když bude ve výpise třeba dvacet posledních komentářů, tak stačí pro získání doplňujících informací udělat jen tolik dotazů, kolik je různých enum.
|
||
Arynev Profil * |
#8 · Zasláno: 14. 4. 2011, 13:39:47
Ano, to mě nenapadlo. Díky
|
||
Časová prodleva: 13 let
|
0