Недавно меня попросили разработать модель приложения учебного плана (на Java), касающуюся сущностей Студент / Учитель / Семестр / Курс. Это что-то вроде проблемы дизайна электронной таблицы.
Условие было следующее: студент может записаться на курс, преподаваемый каким-либо учителем, на семестр, происходящий в определенное время, например, на семестр-2.
Учащийся может иметь несколько курсов, которые преподаются несколькими учителями (каждый учитель преподает определенный курс) несколько раз (каждый курс происходит в уникальный семестр).
Таким образом, комбинация студент + курс + учитель + семестр уникальна.
Каким будет умный дизайн?
Первоначально я начал с класса, имеющего идентификатор студента и карту, где на карте «key» установлено значение «Course-id», а «value» - другой класс, скажем TeacherSemester.
Класс TeacherSemesterclass содержит значения TeacherId и SemesterId.
Но это не похоже на масштабируемое решение.
Кто-нибудь может предложить лучший дизайн?
Любое обсуждение будет полезно.
Thaks