Autor Zpráva
Panasonixon
Profil *
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
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 *
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
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
za -- je vždy vysvětlení řádku


parametry 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 *
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
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)
Panasonixon
Profil *
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
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."

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: