Нормализация базы данных для школьной системы управления - PullRequest
15 голосов
/ 03 ноября 2011

Я создаю систему для системы управления школой и придумаю прилагаемую схему базы данных.

Диаграмма базы данных http://oi40.tinypic.com/15x21ig.jpg

Вот как работает система:

  1. В школе много учеников и учителей. Он также имеет много курсов (предметов) преподавал. Уровень обучения может иметь много назначенных курсов. Эти курсы, в свою очередь, будут назначены учащимся в этом конкретном классе.
  2. Уровни учащихся подразделяются на классы и секции. Ученик может быть в 5 классе, но если ученики 5 класса огромны, они делятся на разделы. Например: 5 класс, раздел A, 5 класс, раздел B.
  3. Учащиеся размещаются в уникальных классных комнатах. Классная комната будет уникальной во всем. Классная комната 5 класса Секция A 2010 года будет отличаться от классной комнаты 5 класса Секция A 2011 года.
  4. Учащиеся назначаются родителями. Родитель может иметь более одного ученика в школе.
  5. Один или несколько классных комнат могут быть назначены учителю.
  6. Посещаемость для студентов принимается их учителем ежедневно
  7. Будет много типов экзаменов. Результаты экзаменов сохраняются для каждого предмета (курса).

Я новичок в нормализации базы данных и был бы рад, если бы кто-нибудь дал мне несколько советов, если база данных выглядит хорошо или нет.

EDIT:

Кроме того, будет только одна точка входа в систему. В приведенном выше случае при входе в систему пользователь должен будет выбрать тип пользователя из выпадающего списка. Этот выпадающий список будет использоваться для запроса соответствующей таблицы для входа в систему. Другой альтернативой является использование общей таблицы user, в которой будет храниться user_id, email, password, last_login_date, last_login_ip, но другие данные будут храниться в соответствующих таблицах, таких как student, parent, teacher. Итак, каков предпочтительный / правильный способ его реализации?

1 Ответ

7 голосов
/ 07 ноября 2011

Вы вообще не моделируете GRADE_SECTIONS.

Если в вашей школе нет масштабной программы сноса и строительства, каждый летний отпуск классы будут одинаковыми. Это назначения , которые меняются каждый год. Поэтому CLASSROOMS следует назначить отдельной сущности GRADE_SECTION вместо объединения SECTIONS и CLASSROOMS, как вы это делаете сейчас.

Студенты должны быть назначены на GRADE_SECTIONS, а не на CLASSROOMS.

КУРСЫ должны иметь много экзаменов, а не много EXAM_RESULTS. Просто не имеет смысла, что студенты, изучающие математику и русский язык, могут сдать французский экзамен.

...