Нормализация базы данных для системы школьного управления
Я создаю систему для системы управления школой и придумаю прилагаемую схему базы данных.
Вот как работает система:
- В школе много учеников и учителей. Он также имеет много курсов (предметов) преподавал. Уровень обучения может иметь много назначенных курсов. Эти курсы, в свою очередь, будут назначены учащимся в определенном классе.
- Уровни студентов подразделяются на классы и секции. Ученик может быть в 5 классе, но если ученики 5 класса огромны, они делятся на разделы. Например: 5 класс, раздел A, 5 класс, раздел B.
- Студенты размещаются в уникальных классных комнатах. Классная комната будет уникальной во всем. Класс 5 класса А секции 2010 года будет отличаться от класса 5 класса Секции А 2011 года.
- Студенты назначаются родителями. Родитель может иметь более одного ученика в школе.
- Один или несколько классных комнат могут быть назначены учителю.
- Ученики ежедневно посещают учителей
- Будет много видов экзаменов. Результаты экзаменов сохраняются для каждого предмета (курса).
Я новичок в нормализации базы данных и был бы рад, если бы кто-нибудь дал мне несколько советов, если база данных выглядит хорошо или нет.
EDIT:
Кроме того, будет только одна точка входа. В приведенном выше случае при входе в систему пользователь должен будет выбрать тип пользователя из выпадающего списка. Этот выпадающий список будет использоваться для запроса соответствующей таблицы для входа в систему. Другой альтернативой является использование общей таблицы user
, в которой будет храниться user_id, email, password, last_login_date, last_login_ip
, но будут храниться другие подробности в соответствующих таблицах, таких как student, parent, teacher
. Итак, каков предпочтительный/правильный способ его реализации?
Ответы
Ответ 1
Вы вообще не моделируете GRADE_SECTIONS.
Если в вашей школе не будет огромных программ по сносу и строительству, каждый летний отпуск в классе будет таким же. Это задания, которые меняются каждый год. Таким образом, CLASSROOMS следует назначать отдельному объекту GRADE_SECTION вместо объединения SECTIONS и CLASSROOMS, как вы это делаете сейчас.
Студенты должны быть назначены GRADE_SECTIONS, а не CLASSROOMS.
КУРСЫ должны иметь много EXAMS, а не много EXAM_RESULTS. Просто не имеет смысла, что французский экзамен может быть взят учащимися, изучающими математику и русский язык.