Maneira de armazenar vários horários de abertura de uma loja em um banco de dados

Eu quero armazenar os horários de abertura para diferentes lojas em um banco de dados. No momento, estou trabalhando com a solução mais simples:

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");

Minha próxima ideia para um aprimoramento foi;

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"
);

Mas isso ainda leva a alguns problemas:

Dias com várias vezes não são possíveis. (Das 8h às 11h e das 13h às 18h)Há muitos campos não utilizados / redundantes, pois muitos dos meus conjuntos de dados têm horários fixos todos os dias ou estão abertos 24 horas por dia, sete dias por semana.Eles não são fáceis de serem pesquisados.Feriados não podem ser representados.

Então, agora eu estou querendo saber se existe uma maneira flexível de armazenar os horários de abertura. Talvez em uma sintaxe comoWD[1-5]{8-18},WD[6]{8-14},CD[12/25-12/26]{!0-24} OndeWD significa dia da semana eCD representa um dia de calendário ou um intervalo para exceções e! significafechadas.

Existe uma maneira comum de armazenar as informações como esta?

questionAnswers(1)

yourAnswerToTheQuestion