База данных - концептуальная модель дизайна
У нас есть задача смоделировать следующую ситуацию, используя концептуальную модель ERD:
У нас есть учителя и ученики. Студенты входят в группы. Учителя могут преподавать разные уроки / курсы, в то время как курс может преподавать другой учитель. У каждой группы свое расписание. А расписание определяет комнату, курс и преподавателя, который проводит урок.
Инструментом, используемым для создания концептуальной модели ERD, является Oracle Data Modeler (хотя, на мой взгляд, это не имеет большого значения).
Описание задачи немного расплывчато, поэтому я добавил еще несколько определений:
Расписание состоит из дней: пн - пт (возможно, до воскресенья) и говорит, в какой день и в какое время проводится урок и кто дает уроки.
Другое дело, что учитель может иметь "опыт" в преподавании разных уроков, но это не обязательно означает, что он будет давать уроки для какого-то курса. Это также озадачивает меня, как отразить это в модели, а не дублировать сущности и т. Д.
Поэтому я думал добавить дни / часы к расписанию, но тогда день будет атрибутом с несколькими значениями, что недопустимо в реляционной модели, как я понимаю.
Я включаю текущее состояние моей концептуальной модели.
Я создал часть концептуальной модели, однако застрял в дизайне и не уверен, как продолжать с логической точки зрения. Модель прикреплена в виде картинки (не знаю, как экспортировать модель из ODM в некоторый "исходный код").
Могу я попросить вас понять, как вы смоделируете ситуацию? Не нужно включать полные модели, словесное объяснение достаточно.
1 ответ
Когда я прочитал ваш первый абзац, я придумал что-то очень близкое к вашему, за исключением раздела, который обрабатывает расписание. ИМХО вам не нужны таблицы расписания и понедельника. Свяжите группу напрямую с TimeFrame.
Я думаю, что вы путаете таблицы со строками для Timetable / TimeFrame. Нет необходимости в таблице с именем TimeFrame_8:00-8:45. Должен быть только график (между комнатой и учителем на диаграмме), который содержит:
- Дата и время начала
- Дата окончания
- Номер комнаты
- ID учителя
- ID урока
- ID группы
Ваша идея связать Учителя с Уроком, чтобы указать квалификацию учителя, хороша. Ваша заявка должна убедиться, что эта ссылка существует, прежде чем назначить учителя на таймфрейм.
Отказ от ответственности: мой ответ с точки зрения разработчика / исполнителя, а не академического эксперта по базе данных.