PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak przechowywać godziny otwarcia sklepu w bazie danych SQL?

Bardzo elastycznym i dobrze znormalizowanym sposobem byłoby przechowywanie każdego okresu otwarcia w jednym wierszu w tabeli. Okres otwarcia może być zakodowany jako dzień, w którym się zaczyna, godzina rozpoczęcia i czas trwania. Każdy okres otwarcia jest powiązany z restauracją za pomocą klucza obcego.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker exec - nie może wywołać postgresa ze zmiennymi środowiskowymi

  2. Jak mogę uzyskać funkcję okna Redshift/Postgresql LAG, aby selektywnie wykluczać rekordy?

  3. postgresql łączenie kilku okresów w jeden

  4. Błąd podczas używania R do pobierania danych uwierzytelniających z Windows Cred Vault

  5. Korzystanie z zestawu narzędzi pt-pg-summary Percona dla PostgreSQL