Autor Zpráva
Ugo
Profil
Ahoj, moc mi to nemyslí a nemám fantasii tak vás poprosím o pomoc, nevíte jak navrhnout universální databázi s parametry produktů:

- produkt má neomezeně parametrů (to není problém)
- parametr má neomezené možností (taky není problém) (až potud včetně vyhledávání to mám)

- parametr je závislý na hodnotách jiných parametrů
- hodnota parametru je závislá na hodnotách jiný parametrů

dám příklad - autobazar:
mám vybráno "osobní autmobil" takže jiný parametr "značka" ví že má být aktivní a má nabývat hodnot Škoda, Ford ... vyberu Ford a parametr model ví, že má nabývat hodnot Focus, Mondeo .. a má vynechat Transit, protože je to Ford, ale není osobní.

napadlo mě něco jako sloupeček [ID parametru zavislosti,...,...] ;ID hodnoty,...,... ; ...,...,... ; ...,...,... ; ale to je ošklivé, chce to moc spracování na výstupu a o tom že bych věděl jak přesně to použít se taky nedá mluvit :-)

Budu vděčný za každý nápad, díky.
jenikkozak
Profil
1) Tabulka s produkty - id, název...
2) Tabulka s parametry - id produktu, název a hodnota parametru.
Zbytek ať řeší aplikace pomocí vhodných dotazů na tyto dvě tabulky. Např. u prvního problému: SELECT DISTINCT znacka FROM produkty WHERE typ='osobni', u druhého: SELECT nazev FROM produkty WHERE typ='osobni' AND znacka!='Ford'. Případně si můžeš udělat další tabulky, např. se značkami auto a do tabulky s produkty neuvádět název značky, ale její id.
Ugo
Profil
resp. další nápad :) už trochu systematičtější - tabulky param_dependecies a param_values_dependecies, vždy ID parametru a hodnoty, nevim teda jak to pak inteligentně spojit dotazem, ale mohlo by to jít i když je to spousta dat navíc.

jenikkozak:
dík, blbý je že na straně aplikace to řešit musim (jinak to ani nejde), ale potřebuju to universální čili abych v adminu změnil že značka najednou neni značka ale je to spotřeba a je závislá třeba na typu motoru nebo to předělal úplně na jiný server např. realitní aniž bych musel sáhnout do kódu, třeba mě něco napadne v MHD nebo doma na WC :D
jenikkozak
Profil
Ugo:
dík, blbý je že na straně aplikace to řešit musim (jinak to ani nejde),
No však. Spojení tabulek řeš v databázi a ne při návrhu databáze.

ale potřebuju to universální čili abych v adminu změnil že značka najednou neni značka ale je to spotřeba a je závislá třeba na typu motoru
Jasně, chápu. Řekneš si, že hodnoty „Škoda“, „Ford“ a „Toyota“ nejsou značkami, ale spotřebou. V pořádku.

nebo to předělal úplně na jiný server např. realitní aniž bych musel sáhnout do kódu, třeba mě něco napadne v MHD nebo doma na WC :D
Určitě by pomohlo tabulky neoznačovat jako param_dependecies a param_values_dependecies, nýbrž table1 a table2, protože pak do nich budeš moci ukládat na jiném serveru počet semínek cibule a na jiném logy změny tabulky známek.
Ugo
Profil
jenikkozak:
ale počet semínek by se hodil, poznamenám si :) no nějak to pořešit pude, je jasné že nejvíc toho bude v samotnym skriptu, ale chtěl bych si propracovanym návrhem ušetřit práci jak s administrací tak s výpisy a ovládáním toho chaosu
Kajman
Profil
Ugo:
Tu filtraci chcete provádět až nad vloženými daty nebo chcete závislost možností ovlivňovat již pro zadávání dat?

jenikkozak:
Pokud se bavíme o neomezeném počtu parametrů, tak dávat každý parametr do zvláštního sloupce nemusí být vhodné a často se používá právě univerzální Ugovo řešení.
Ugo
Profil
Kajman:
přesně nechápu dotaz, v administraci potřebuji nadefinovat závislosti (při zadávání tedy 100% volnost - žádné filtry) a při zobrazení filtrovat, takže až nad již vloženými daty - z tohohle úhlu pohledu.

a z uživatelova potřebuji měnit možné parametry za chodu ajaxem čili již při zadávání dat měnit postupně

PS - neomezený počet parametrů mám, navíc jsou závislé na kategorii, bohužel zde potřebuji ještě universálnější řešení no :)
Kajman
Profil
Pokud to chcete filtrovat nad vloženými daty, tak si závislosti v administraci definovat nemusíte a poznáte je podle uložených dat - to se snaží nastínit jenikkozak.

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:

0