Как насчет:
create table business (
id int not null auto_increment primary key,
name varchar(255)
);
create table open_hour_range (
id int not null auto_increment primary key,
business_id int,
day_of_week tinyint, /* 0-6 */
open_time time,
close_time time,
foreign key(business_id) references business(id)
);
Это позволяет вам использовать любую комбинацию часов, включая несколько в день. Тем не менее, это может быть немного медленно с точки зрения запросов, так как вам нужно приложить немало усилий, чтобы составить список часов, в которые работает компания.
Кроме того, если вы хотите отображать часы в таком формате, как:
М-Ф 9-5
Са-Су 9-12
Вам необходимо объединить похожие диапазоны в коде вне базы данных. Если вы хотите объединить сортировку, вы можете изменить day_of_week на start_day и end_day.