Я был бы признателен за совет по следующим вопросам:Рекомендации по проектированию оптимальной базы данных
Я беру над базой данных оценки для учеников, часть того, что я должен сделать, это переместить его из среды ЛАМПЫ (MySQL) для Windows Azure (MS SQL).
В настоящее время структура базы данных использует одну запись для ученика, проблема заключается в том, что каждый ученик имеет 144 поля для оценочных данных (поскольку мы говорим о 4 предметах, оцениваемых 6 раз в год в течение 6 лет).
Операция по ведению домашнего хозяйства, которая предусматривает работу с каждым учеником и копирование оценок между столбцами, разумно работает в MySQL, но занимает много времени или останавливается в MS SQL, даже после перехода на использование PDO и подготовленных операторов.
мне интересно, будет ли лучше дизайн будет иметь таблицу оценки со следующей структурой:
ид | PupilId | Тема | Год | Срок | Оценка
Буду благодарен за любые мысли о том, является ли это более эффективной структурой.
Stephan
все, что начинается с работы через каждый зрачок, звучит как курсорный курсор, что очень плохо. вам нужно подумать о промежутках наборов данных. – HLGEM
В большинстве баз данных SQL обычно лучше разбивать таблицы со многими столбцами на несколько таблиц. Это не на 100% верно, но только по моему опыту. Это позволяет упростить расширение (вам не нужно добавлять новые столбцы, если вы хотите добавить больше данных, только новые строки) и, как правило, это более чистое решение. –
Структура, о которой вы указали, может работать пока.но лучшая схема может быть эффективно разработана, если мы знаем, как она будет доступна. вы можете привести пример примерного запроса, может быть на простом английском языке, как будут запрашиваться данные. Также вы упомянули, что текущая структура базы данных содержит 144 столбца. это одна таблица. как насчет других таблиц. Я имею в виду, что должно быть больше таблиц, описывающих больше атрибутов объектов Учеников, Субъектов и/или Оценки, правильно? –