Autor | Zpráva | ||
---|---|---|---|
Filip Beneš Profil * |
#1 · Zasláno: 23. 6. 2009, 21:30:52
Dobrý den,
chtěl bych se zeptat jaké je nejlepší řešení pro návrh tabulek v databázi MySQL pro konkrétní případ. Mám vytvořenou tabulku articles a do ní vkládám data z formuláře, kde uživatel může zaškrnout jednu a VÍCE kategorií, které se budou k článku vztahovat (kategorie mají samostatnou tabulku category). Napadli mě 2 řešení ale ani jedním si nejsem zcela jistý, proto žádám o radu. 1.řešení => mohu v tabulce articles přidat sloupec categories a vkládam tam celý pole za pomocí serialize(). Toto řešení mi příde ale takové těžkopádné, pak zase data převáděť zpět a hledat v tom by asi nebylo nejvhodnější 2.řešení => mohu, vytvořit třetí tabulku s dvouma sloupci clanekID a categoryID, do které budu vkládat id článku uložené v articles a id categorie uložené v categories s možností že jeden článek, který bude mít více kategorií bude v tabulce na více řádkách .. tohle řešení se mi jeví jako lepší, ale také mi to nepříde jako nejšťastnější. V konečné variantě mě napadlo použití Pohledu pro zjednodušení výpisu, ale i tak se mi to nezdá to pravé ořechové Existuje nějaké lepší řešení? Které z těchto dvou je lepší? Jak to řešíte vy? Děkuji Filip Beneš |
||
Kajman_ Profil * |
#2 · Zasláno: 23. 6. 2009, 21:47:56
2
|
||
AM_ Profil |
#3 · Zasláno: 23. 6. 2009, 22:09:23
2 se neboj, sice budeš mít víc tabulek ale takhle se to správně řeší, od toho je to relační databáze.
|
||
Filip Beneš Profil * |
#4 · Zasláno: 24. 6. 2009, 17:50:04
A jak pak nejlépe řešit ten výpis? je to výhodné pomocí VIEWS, nevíte o nějakym podobným příkladu?
|
||
Časová prodleva: 4 dny
|
|||
Kajman_ Profil * |
#5 · Zasláno: 28. 6. 2009, 15:40:05
Možná bude nejjednodušší uložit si všechny informace o kategoriích podle jejich id. V dotaze pak použít něco jako
select a.*, group_concat(k.categoryID) kategorie from articles a left join tabulka3 k on a.clanekID=k.clanekID group by a.clanekID V php si pak pohrát s těmi čísly a nadělat tam seznam kategorií i s odkazy a tak. |
||
Časová prodleva: 15 let
|
0