PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да съхраня работното време на магазин в SQL база данни?

Много гъвкав и добре нормализиран начин би бил всеки период на отваряне да се съхранява като един ред в таблица. Периодът на отваряне може да бъде кодиран като деня от седмицата, в който започва, часа от деня, в който започва, и продължителността, в която продължава. Всеки период на отваряне е свързан с ресторант чрез външен ключ.

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. Postgres:модифицира всеки елемент от масива

  2. sql генерира уникално име на таблица/изглед

  3. Как да показвате нулеви стойности при изпълнение на заявки в psql (PostgreSQL)

  4. Последователността не съществува, когато съществува - Postgres/Spring Boot

  5. datagrip Не може да се прилагат промени Тази таблица е само за четене. Промените в редактора на клетки не могат да бъдат приложени