sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur lagrar man en butiks öppettider i en SQL-databas?

Ett mycket flexibelt och väl normaliserat sätt skulle vara att lagra varje öppningsperiod som en rad i en tabell. En öppningsperiod kan kodas som den veckodag den börjar, tiden på dagen den börjar och hur länge den varar. Varje öppningsperiod är kopplad till en restaurang via en främmande nyckel.

CREATE TABLE opening_period
             (restaurant integer,
              weekday integer,
              time time,
              duration interval,
              PRIMARY KEY (restaurant,
                           weekday,
                           time,
                           duration),
              FOREIGN KEY (restaurant)
                          REFERENCES restaurant
                                     (id)
                          ON DELETE CASCADE,
              CHECK (weekday >= 0
                     AND weekday < 7),
              -- prevent overlapping opening periods
              EXCLUDE USING gist (restaurant WITH =,
                                  tsrange('epoch'::timestamp + time + weekday * INTERVAL '1 days',
                                          'epoch'::timestamp + time + weekday * INTERVAL '1 days' + duration,
                                          '[)') WITH &&));



  1. Använd R-variabler till en SQL-fråga

  2. Hitta globala paketvariabler från dataordbok

  3. Effektivt val av närmaste (avstånds)post från en databas

  4. ODP.NET Oracle.ManagedDataAcess slumpmässiga ORA-12570-fel