Из того, что я вижу в вашем вопросе, похоже, что у вас есть несколько ограничений, которые вы бы хотели обработать на стороне базы данных.
• У меня есть таблица, которая содержит доступные места, и таблица с реальными классами.
Можно разработать более подробную информацию о дизайне таблицы, но для этого нужна просто схема таблицы для хранения необходимой вам информации
• Каждое место имеет свой уникальный график
Как насчет создания триггера на вставках, чтобы убедиться, что класс, который вставляется в расписание, не конфликтует с каким-либо другим расписанием?
• Каждый урок может быть запланирован в любом месте и в любое время, за небольшим исключением:
• Один класс может занимать один временной интервал (например, если класс A запланирован на месте P1 в 12:00 на 1 час, следующее вхождение класса A можно разместить только до 12:00 или после 13:00 в любом месте. у ведьмы есть свободный временной интервал; запрещено планировать один раз класс А в двух местах)
Я бы обработал это ограничение и в триггере
• В одном месте может быть один класс с временным интервалом
Обработать это ограничение в триггере
• Модель должна поддерживать управление версиями / историю запланированных классов
Имейте отдельную таблицу, которая отражает фактическую таблицу, которая у вас есть для расписаний. Когда новые записи вставляются в основную таблицу, вы можете запускать обновления и время обновления / вставки / удаления в таблицу с историей
Надеюсь, это поможет вам с некоторыми идеями.
-Vijay