Я разрабатываю базу данных для системы управления школами и сталкиваюсь с парой проблем, и я подумал о том, чтобы бросить ее сюда, и кто-то может помочь. У меня есть таблица СТУДЕНТОВ, в которой хранятся детали учащихся и таблица CLASS, в которой содержится информация о классе. В приложении нужно знать, к какому классу должен быть продвинут студент, если он или она сдаст экзамен. Таким образом, таблица классов выглядит в моей конструкции:Управление школой Дизайн базы данных MySQL
+----------------------+
|id | name | parent_id |
+----------------------+
где parent_id
является идентификатором предыдущего класса. Теперь каждый класс имеет более одного потока (например, класс 1 может иметь 3 потока: форма 1A, форма 1B, форма 2B и т. Д.), И каждый поток имеет учащиеся говорят, что форма 1A имеет 40 студентов и т. Д. Таким образом, у меня есть таблица потоков с этим дизайном:
+---------------------------------------------+
| id | student_id | class_id | stream_name |
+---------------------------------------------+
так для каждого потока 40 студентов у меня будет 40 строк в таблице потока и имя потока будет содержать имя типа A, B, C или независимо от пользователь хочет, чтобы он был назван. Это лучший дизайн в отношении моей проблемы? Будет ли этот дизайн влиять на производительность системы каким-либо образом? Каков наилучший подход к разработке баз данных с данной проблемой?
Таблица СТУДЕНТОВ содержит информацию об ученике, как их имя и информацию о родителях.
EDIT: Таблица потоков обновляется каждый раз, когда учащиеся регистрируются или когда новый учебный год зарегистрирован для экземпляра, если я был в потоке A формы 1, тогда все учащиеся этого класса (форма 1) следует повысить до класса 1, сохранив свой поток, поэтому, если бы я был в форме 1А, то в следующем учебном году я буду в форме 2А. Существует таблица ACADEMIC_YEAR, в которой хранится информация об учебном году, например, когда она начинается и заканчивается, и вся информация, также есть таблица EXAM_RESULTS, в которой хранятся результаты для каждого учащегося в конкретном потоке в учебном году. Для записей мне нужно будет знать все течения и классы, которые изучил ученик.
Заранее спасибо
Насколько я понимаю, у вас есть хотя бы СТУДЕНТЫ, КЛАСС и СТРЕЛЫ. Но для того, чтобы оценить, повлияет ли этот дизайн на производительность, нам понадобится дополнительная информация. Как обновляется таблица STREAMS? Какие другие таблицы задействованы? Как часто все меняется? Я не думаю, что кто-нибудь может рассказать вам, какой дизайн лучше всего подходит для ограниченной информации. – MJB
thanx для вашего ответа @MJB, я отредактировал свой вопрос, надеюсь, теперь его ясность. –