Jak ukládat otevírací hodiny do pgSQL rubrika: Databáze: SQL

6 langpavel
položil/-a 28.9.2019

Zdravím, chtěl bych ukládat otevírací hodiny obchodů do databáze tak, aby bylo možné efektivně filtrovat.
Navíc nevím jak zacházet s různými svátky a individuálními výjimkami.
Dá mi někdo tip?
Hádám, že budu potřebovat min. 4 tabulky.

Komentáře

  • rmaslo : Budou tam obchody s "polední pauzou" ? 23.10.2019
  • plelovsky : Když bude struktura "den, čas od, čas do" tak na tom nezáleží - pro stejný den může být víc intervalů, kdy je otevřeno. 24.10.2019
  • rmaslo : jj. akorát index nad [shop_id, day_of_week] bude neunikátní. 25.10.2019
  • plelovsky : Pokud to má být obecné, tak bude neunikátní. Další věc je, že otevírací hodiny mohou být různé v závislosti na sezóně. Takže struktura může být např. [shop_id, season_id, day_of_week, time_from, time_to]. Co se týče otevírací doby do půlnoci, resp. přes půlnoc, datové typy pro datum a čas neumožňují lidsky srozumitelný zápis "do 24:00", takže musí být výjimka že v time_to může být hodnota 0:00 a dotaz musí být psán tak, aby správně vyhodnotil např. interval "18:00 - 0:00". 30.10.2019
  • Kit : Jakmile do toho chceme zanést výjimky typu svátek či sezóna, tak z té prodejní doby můžeme rovnou udělat ACL. Otázkou je, k čemu takový seznam bude sloužit. Zda pro pouhé zobrazení nebo pro vyhledávání ve stylu "kdo má zrovna teď otevřeno". 30.10.2019
odkaz Vyřešeno
6 langpavel
odpověděl/-a 30.10.2019

Nakonec jsem se rozhodl použít formát, který používá OpenStreetMap.org.

Pro ukládání do DB použiju funkci, která vezme normalizovaný string odpovídající gramatice (kterou asi ještě upravím) a vrátí mi ID; mnoho obchodů má stejnou otevírací dobu.
Pak se s tím dají dělat různé věci ale DB bude pořád pěkně normalizovaná.

Odkazy:
Popis: wiki.openstreetmap.org Key:opening_hours — českyanglickyspecifikace + gramatika
Implementace: GitHub opening_hours project — Implementations for the opening_hours syntax used by OpenStreetMap
projets.pavie.info/yohours — jednoduchý online nástroj na vytvoření otevírací doby
opening_hours evaluation tool — online nástroj na zpracování + vizualizaci pravidla

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.