Ещё есть идеи по организации этого всего:

Пользователь имеет имя, номер (id), список групп и оценок.

Разницы между учителем и учеником нет. Ученик может создать свою группу (по типу «киберспорт» или «программирование») и быть там учителем, а учитель может быть учеником на курсе подготовки.

Почти всё — это группа. Группа состоит из пользователей (в т.ч. учителей), уроков и подгрупп. Все уроки группы показываются и в подгруппах.

Так может выглядеть иерархия:
serv.er > ГБОУ школа № 123 > Начальная школа > Первые классы > 1 «Ы» > Русский язык.

Учитель указывается не в группе, а в уроке. Таким образом можно легко заменять уроки.

Урок состоит из необязательной темы, домашки, группы (одной), времени, длительности и списка оценок. Предмета у урока (по типу "алгебра" или "русский язык") нет. За предмет считается группа, в которой этот урок находится.

Оценка принадлежит не учителю, а ученику. У нее есть значение, вес и комментарий. Также она принадлежит уроку.