Мне нужно спроектировать систему бронирования для танцевальных классов, используя приложение C # с базой данных sql.
Есть несколько учителей танцев и много студентов.
Каждый учитель должен сообщить свое расписание (с понедельника по воскресенье) (наличие или недоступность).
Таким образом, ученики должны иметь возможность забронировать класс с доступным учителем.Например, первый ученик ищет уроки танцев в понедельник, 8 октября, начало в 17:00 и продолжительность 2 часа.
Система должна иметь возможность искать (в базе данных) всех учителей, которыедоступно в настоящее время ...
Поэтому я ищу лучший дизайн для моих таблиц в БД для моделирования этого бизнеса ..
Первое решение, которое я 'Мы подумали о том, чтобы иметь таблицу, которая представляет «доступность» для каждого учителя:
# Id |TeacherId |Дата |StartTime |EndTime |Статус
1 |17 |8/10/18 |8:00 |8:30 |Доступно 2 |17 |8/10/18 |8:30 |9:00 |Доступно 3 |17 |8/10/18 |9:00 |9:30 |Доступно ... ... ... n |17 |8/10/18 |20:30 |21:00 |Доступно
Статус будет обновляться каждый раз, когда ученик заказывает слот. Или, если Учитель недоступен в определенный день (или час), система должна установить правильный статус для определенного времени.slots .. (например, недоступен).
Это решение задает мне несколько вопросов:
\#Id | TeacherId | Date | StartTime | EndTime | Status
1 | 17 | 8/10/18 | 8:00 | 17:00 | Available
Таблица бронирования:
\#Id | TeacherId | Date | StartTime | EndTime | Status
1 | 17 | 8/10/18 | 9:15 | 10:45 | Booked
1 | 17 | 8/10/18 | 11:00 | 12:00 | Booked
Но я думаю, чтоВторое решение является более сложным для управления доступностью или поиска доступных временных интервалов и т. Д.
Я не знаю, где наиболее подходящий дизайн для решения этой проблемы?