Дизайн системы бронирования - Sql & C # - PullRequest
0 голосов
/ 08 октября 2018

Мне нужно спроектировать систему бронирования для танцевальных классов, используя приложение 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 .. (например, недоступен).

Это решение задает мне несколько вопросов:

  • Я решаю сокращать каждый день по полчаса (чтобы уменьшить количество строк), ноэто хороший выбор?Почему бы не 15 или 10 минут ..?Другой дизайн?Поскольку каждый раз, когда создается учитель, я хотел бы «генерировать» его расписание на 6 месяцев (180 дней x 24 временных интервала (8:00 - 8:00 вечера))
  • Что произойдет, еслистудент ищет курс с 17:15 до 18:15?Может быть, сложно управлять запросами с таким дизайном?

    • Второе решение, которое я подумал, это иметь таблицу «Бронирование», которая сохраняет только встречи, забронированные у студентов, и так, таблицу Учителя.будет представлять только «наличие» в день ...

\#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

Но я думаю, чтоВторое решение является более сложным для управления доступностью или поиска доступных временных интервалов и т. Д.

Я не знаю, где наиболее подходящий дизайн для решения этой проблемы?

...