sql >> Database >  >> RDS >> PostgreSQL

Hoe bewaar je openingstijden van een winkel in een SQL-database?

Een zeer flexibele en goed genormaliseerde manier zou zijn om elke openingsperiode als één rij in een tabel op te slaan. Een openingsperiode kan worden gecodeerd als de weekdag waarop deze begint, de tijd van de dag waarop deze begint en de duur ervan. Elke openingsperiode is via een externe sleutel gekoppeld aan een restaurant.

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. Fout bij het afdrukken van REFCURSOR-variabele als OUT-parameter in procedure in Oracle 11g

  2. Mysql:vind het aantal rijen die achter elkaar dezelfde waarde hebben

  3. jdbcTemplate is null en genereert een null-aanwijzeruitzondering

  4. postgres herkent de tijdelijke tabel niet in functie