Autor Zpráva
panasonixxon
Profil *
Ahoj,
potřeboval bych poradit jak nějak čistě vyřešit tento problém. Zatím je to jen takový myšlenkový proces.

Budu mít kalendář který bude zobrazovat v zadané dny události, události mají 2 typy a to jednorázové a opakující se. U jednorázových není problém... 1 událost = 1 řádek v DB

Ovšem vyvstala otázka co s opakujícími, ano napadlo mě mít v tabulce sloupce od-do. A tady narážím. Co když budu chtít opakovat událost pouze každé pondělí. A co když budu potřebovat jedno z těch pondělí změnit. Tím bych si změnil celý řádek a všechny pondělky. Bylo by tedy lepší ukládat každý jeden den jako řádek? To by znamenalo například 1 událost = 7 řádků.

Nebo by bylo lepší si vypíchnout do jiné tabulky pouze změněné dny a zohlednit to při výpisu, vytáhnout události do pole a konkrétní změněný den přebít?


A neprojevoval by se u tohoto řešení problém v případě že bych chtěl kromě dne přidat i hodinu? V pondělí od 12 do 14, ok to uložím do sloupců ke konkrétnímu dní. Ale co ten den co by byl zvlášť vypichlej. Kdybych chtěl následně sečíst kolik hodin za týden/měsíc dána akce trvala?

Protože uložím 3 pondělky od 12h do 14h což je 6h celkem, pak ale změním jedno pondělí na hodnoty 11h -12h a to už je jen 5h celkem.

Budu rád za každou inspirativní radu.
Casero
Profil
Pokud nemáš problém s místem v DB, tak bych byl pro prvni variantu (šablony-udalosti [data o udalosti, ktera nelze změnit a informace o způsobu opakovani)] a konkretni-udalosti [konkretní udalosti navazana na šablonu]). Pro jednotnost bych i neopakujici udalosti cpal jak do šablony tak do konkretni udalosti. Toto řešení je dostatečně robustní, i když začneš přidavat různá opakovaní a různé zpusoby modifikace oproti šabloně. A řekl bych, že bude také rychlejší na většinu operací.

Nezaručuji, že nelze vymyslet robustní řešení i pro druhý způsob, ale když si tak projedu, co bys tak asi mohl požadovat za operace, tak jsem rozhodně pro první variantu.


Teď mě napadá, že zajimavé to začne být, pokud máš opakovaní události do nekonečna. :) Tam už první způsob není dostatečný.
panasonixxon
Profil *
Místo v databázi neřeším, pokud projekt zrealizuji tak nebude cílová skupina freehosting. Na nekonečno nemyslím, vždy bude jasný datum kdy událost začala a do kdy se bude opakovat. Například od 23.9.2016 do 15.6.2017 a v tomto rozmezí by byla nějaká filtrace... Takže pokud bych chtěl jen ty pondělky tak by se vzal v potaz datum 12.6.2017. Události typu 'každé pondělí co kdy nastane' nemám v plánu do tohoto kalendáře přidávat...

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