Manera de almacenar varios horarios de apertura de tiendas en una base de datos.

Quiero almacenar los horarios de apertura de diferentes tiendas en una base de datos. En este momento estoy trabajando con la solución más simple:

CREATE TABLE opening_times(
 shop_id int(3) NOT NULL,
 times varchar(1000) NOT NULL
);

INSERT INTO opening_times VALUES(3,"Mon-Fri 8:30 to 18:00
Sat 9:00 to 12:00");

INSERT INTO opening_times VALUES(4,"24/7");

INSERT INTO opening_times VALUES(5,"Mon-Sun 8am-8pm");

Mi siguiente idea para una mejora fue;

CREATE TABLE opening_times(
 shop_id int(3) NOT NULL,
 monday varchar(11) NOT NULL, 
 tuesday varchar(11) NOT NULL, 
 wednesday varchar(11) NOT NULL, 
 thursday varchar(11) NOT NULL, 
 friday varchar(11) NOT NULL, 
 saturday varchar(11) NOT NULL, 
 sunday varchar(11) NOT NULL
);

INSERT INTO opening_times VALUES(
 3,
 "09:30-18:30",
 "09:30-18:30",
 "09:30-18:30",
 "09:30-18:30",
 "09:30-18:30",
 "09:30-12:30",
 "CLOSED"
);

Pero esto todavía conduce a algunos problemas:

Días con tiempos múltiples no son posibles. (8am a 11am y 1pm a 6pm)Hay muchos campos no utilizados / redundantes, ya que muchos de mis conjuntos de datos tienen horarios fijos todos los días o están abiertos las 24 horas, los 7 días de la semanaNo son fáciles de buscar.Las vacaciones no pueden ser representadas.

Así que ahora me pregunto si hay una manera flexible de almacenar los horarios de apertura. Tal vez en una sintaxis comoWD[1-5]{8-18},WD[6]{8-14},CD[12/25-12/26]{!0-24} dóndeWD significa día de la semana yCD representa un día calendario o un rango para excepciones y! mediocerrado.

¿Hay una manera común de almacenar la información de esta manera?

Respuestas a la pregunta(1)

Su respuesta a la pregunta