Autor | Zpráva | ||
---|---|---|---|
Panasonixon Profil * |
#1 · Zasláno: 3. 7. 2012, 15:19:38
Dobrý den,
potřeboval bych trošku kopnout správným směrem. V současnosti mám pro inzeráty 1 tabulku s kategoriemi, a 1 tabulku s 25 volitelnými poli (val1, val2 ... val25) vím, že to není zrovna dobré... Jeden známý mi poradil udělat tabulky 3, bohužel nějak nezbyl čas na vysvětlení funkčnosti. A já si to nějak neumím představit Jeho návrh: KATEGORIE -------------- id jmeno PARAMETRY -------------- id parametr KAT_PARAMETRY -------------------- id_kategorie id_parametru nevím ale kde bude uložena hodnota... Každá kategorie by prý takto mohla mít volitelný počet parametrů a tím by u některých odpadlo (např. val8 - val25) několik sloupců Každá kategorie bude mít jiné sloupce, tudíž třeba výkon motoru se ke knize nehodí... Nevím tedy kde bude ta informace co sloupec obsahuje a jakou hodnotu... Napadá Vás jiné řešení? Byl bych moc vděčný za rady |
||
Kajman Profil |
#2 · Zasláno: 3. 7. 2012, 15:43:54
Tyto tabulky určí, které parametry se u inzerátu mají vyplňovat. Tyto hodnoty zapíšete do další tabulky.
INZERATY -------- id_inzeratu obecne sloupce INZ_PARAMETRY ------------- id_inzeratu id_parametru hodnota_parametru |
||
Panasonixon Profil * |
#3 · Zasláno: 3. 7. 2012, 15:50:16 · Upravil/a: Panasonixon
Kajman:
Takže tabulka s kategoriemi zůstane? A kde v tomto případě vezmu id_parametru? Vím, že jsem asi otravný... ale mohl by jste mi napsat třeba smyšlené informace do jednotlivých tabulek? Pro lepší pochopení. Omlouvám se, že takhle otravuju. jestli jsem to teď po 3 přečtení pochopil, tak by mohl mít různé parametry inzerát, já bych spíš asi potřeboval v budoucnu přidávat kategorie + jejich parametry v adminu. A to pokud budou mít parametry přímo inzeráty asi bude trochu problém, nebo ne? |
||
juriad Profil |
#4 · Zasláno: 3. 7. 2012, 15:57:44 · Upravil/a: juriad
kategorie: 1, auta 2, pocitace parametry: 1, cena 2, najeto km 3, velikost disku v gb kat_parametry: 1, 1 -- auta, cena 2, 1 -- pocitace, cena 1, 2 -- auta, najeto 2, 3 -- pocitace, disk inzerat: 1, prodam nadupanej pocitac 2, prodam ojete auto inz_parametry: 1, 1, 10000 -- prodam nadupanej pocitac, cena, 10000 kc 1, 3, 320 -- prodam nadupanej pocitac, disk, 320 gb 2, 2, 200000 -- prodam ojete auto, najeto, 200000 km -- je vždy vysvětlení řádkuparametry nemusí být povinné, kdykoli později přidáš řádek do parametry a kat_parametry , tak se (automaticky) objeví jako dostupný při zadávání inzerátu
v mém příkladu není cena auta vyplněná přidání kategorie znamená vložit 1 řádek do kategore a přidat n řádků do kat_parametry
|
||
Panasonixon Profil * |
#5 · Zasláno: 3. 7. 2012, 16:09:09
Vypadá to že jsem to pochopil... Až budu u pracovního pc, tak to vyzkouším. DĚKUJI
P.S. Existuje nějaký hromadný INSERT do více tabulek... Jak tahat data pomocí Join Leftu vím... |
||
juriad Profil |
#6 · Zasláno: 3. 7. 2012, 16:18:57
neexistuje
pokud chceš omezit přenos dat mezi php a db: někdy by šly použít procedury, ale nejsou moc standardní (tady moc nelze, ani nevíš které inserty budeš provádět) pokud ti jde o vložení všeho najdnou: je možné skupinu insertů spustit v transakci (není asi třeba, nejspíš ti nevadí, že může proběhnou select na nehotový inzerát) |
||
Časová prodleva: 6 dní
|
|||
Panasonixon Profil * |
#7 · Zasláno: 9. 7. 2012, 15:36:21 · Upravil/a: Panasonixon
no narazil jsem na jeden problém, pokud budu vkládat hodně parametrů pak to znamená na každý parametr 1 dotaz... to mi nepřijde moc efektivní... nebo na to jdu zase špatně
když vezmu v potaz, že třeba kategorie auta má cca 15 parametrů odlišných od třeba knih tak to by znamenalo 15 insertů abych pokaždé vložil do inz_params id, hodnota a znovu pro další a další atd. |
||
juriad Profil |
#8 · Zasláno: 9. 7. 2012, 15:52:34
A je to opravdu velký problém? Určitě častěji budeš inzeráty zobrazovat (select) než vkládat (insert)
počet insertů můžeš snížit na jeden pro všechny parametry: pročti http://dev.mysql.com/doc/refman/5.5/en/insert.html počínaje "INSERT statements that use VALUES syntax can insert multiple rows." |
||
Časová prodleva: 13 let
|
0