Autor Zpráva
abc
Profil
Zdravím,

potřeboval bych pomoct s návrhem tabulek databáze sportoviště
Potřebuji nějak ukládat cenové sezóny.
U sezón potřebuji sledovat k jakému sportovišti patří (id_sportoviště - integer), zda je platná (1/0 - tinyint), název sezóny (varchar 20), datum_od (date), datum_do (date).
Toto bych měl momentálně připravené.

Dále potřebuji sledovat u každého dne v týdnu (1-7/0-6 to už je jedno) cenu za jednotlivé hodiny (např. 9-24), každá hodina může být jiná cena.

Jak se řeší takové případy?

Předem děkuji za jakékoliv nápady
Kajman
Profil
Co si udělat obdobně tabulku s rozdělením intervalů pro ocenění
id_sezony, den_v_tydnu, time_od, time_do, id_ceny

a pak si nastavit ty konkrétní ceny
id_ceny cena
abc
Profil
Takhle mě to taky napadlo, ale trošku mě potom děsí vypisování do tabulky celého dne.
Napadlo mě to udělat:
id_sezony, den, h1-h24, což se bude krásně vypisovat, ovšem přijde mi to takové neohrabané a hlavně by potom uživatel musel naplnit hromadu inputů, které by musel naplnit cenou.
Stále mi to ale přijde jendodušší, než aby "hloupý" uživatel musel vymýšlet sezóny stylem čas_od - čas_do
Alphard
Profil
abc:
Stále mi to ale přijde jendodušší, než aby "hloupý" uživatel musel vymýšlet sezóny stylem čas_od - čas_do
I intervaly jde vykreslit do tabulky a umožnit změnu po buňkách. Ale je s tím dost práce.
Sloupce h1-h24 vypadají děsivě. Jak v nich potom budeš hledat třeba nejmenší cenu?
abc
Profil
Jak v nich potom budeš hledat třeba nejmenší cenu?
Nejmenší cenu k ničemu nepotřebuju - nebo ano?

I intervaly jde vykreslit do tabulky a umožnit změnu po buňkách
Změna po buňkách by potom imho musela probíhat tak, že si uživatel zadá cas_od == cas_do, tím pádem by tato cena platila pouze na tuto hodinu.
Nedovedu si představit, že by v krajním případě bylo na den stejně sezón jako případných polí h1-h24 (pokud by měla úplně každá hodina rozdílné ceny)

Nějaká 3. varianta by nebyla? :-)
Alphard
Profil
abc:
Nejmenší cenu k ničemu nepotřebuju - nebo ano?
To jsem si před pár týdny taky myslel :-) Stačí prosté zadání napsat do výpisu služeb nejnižší cenu "Ceny od x Kč"...

Nějaká 3. varianta by nebyla?
Jestli na něco přijdeš, ozvi se.
Kajman
Profil
Nic nebrání tomu, aby v té struktuře bylo pro každou kombinaci sezóny a dne přesně 24 intervalů (24 řádků), pokud Vám editace a ukládání po hodinách výrazně usnadní práci.

Mně by se jako uživateli asi více líbilo nějaké roztahovátko (možná něco takové jsem viděl v google kalendáři nebo v některých telefonech), abych nemusel nastavovat pro každou sezónu každého sportoviště 168 cen.

Možná se zeptejte zadavatele, jestli má představu o zadávání konfigurace ocenění.
abc
Profil
Alphard:
Stačí prosté zadání napsat do výpisu služeb nejnižší cenu "Ceny od x Kč"...
Pěkná připomínka, to by mě asi nenapadlo, díky :-)

Jestli na něco přijdeš, ozvi se.
Ty jsi tedy něco podobného řešil? A jaký byl návrh DB, smím-li se zeptat? :-)
Ještě nad tím budu pár dní přemýšlet a potom to nejspíš o víkendu tedy udělám, jak navrhnul Kajman.
Případně se ozvu v kategorii PHP s tím, že se mi to blbě vypisuje :-)

Kajman:
Ok, tak tedy zatím díky za info. Roztahovátka jsou na mě momentálně mimo rozsah mých schopností (javascript prozatím moc neovládám).
Alphard
Profil
[#8] abc
Ano, nebyl to stejný problém, ale podobný. Nicméně velkou část databáze jsem udělal normalizovaně (jak radí Kajman), ale pár tabulek jsem denormalizoval, v té chvíli mi to přišlo jako docela dobrý nápad. Později jsem zjistil, že to asi dobrý nápad nebyl a předělal jsem to, dokud to nebylo moc pracné. Takže radím udělat to pomocí intervalů i kdyby mělo na týden padnout 7*24 řádků.
abc
Profil
Ahoj,

tak jsem nic jiného nevymyslel (překvapivě :-)) a vrhnul jsem se na programování Kajmanova návrhu.
Měl bych k tomu ještě několik dotazů:
a) proč si ceny neukládat rovnou tabulce sezony. Vždy bude přeci jedna cena k jedné sezóně
b) pokud to budu normalizovat, tak přemýšlím, zda je vhodnější mít v tabulce sezóny id_ceny a tabulku sezony_ceny a v ní id_ceny a cena nebo mít pouze v sezony_ceny sloupce id_sezony a cena

Díky za názory.
Kajman
Profil
Pokud mají různá sportoviště stejnou cenu a mění se najednou, případně jedno sportoviště více termínu se stejnou cenou, bude lepší id_ceny. Záleží na tom, jak to chtějí editovat.

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: