Một cách rất linh hoạt và được chuẩn hóa tốt sẽ là lưu trữ mỗi khoảng thời gian mở cửa dưới dạng một hàng trong bảng. Khoảng thời gian mở cửa có thể được mã hóa là ngày bắt đầu trong tuần, thời gian trong ngày bắt đầu và thời lượng kéo dài. Mỗi khoảng thời gian khai trương được liên kết với một nhà hàng thông qua một khóa ngoại.
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 &&));