В настоящее время я переписываю приложение, с помощью которого учителя могут планировать учебный план онлайн.
Приложение ведет учителей через процесс создания единицы работы для своих учеников. Инструмент в настоящее время используется в трех штатах, но у нас есть планы стать намного больше.
Одна из основных карт, используемых в приложении, заключается в том, что все результаты учащихся предварительно загружаются в систему. Это позволяет учителям искать или просматривать и выбирать, какие результаты будут достигнуты в каждой единице работы.
Когда я изначально проектировал систему, я исходил из того, что все результаты учеников следовали схожей иерархии. То есть есть именованные вложенные контейнеры, а затем результаты.
Исходный набор результатов, который я ввел, был трехуровневым. Таким образом, моя база данных имеет следующую структуру:
=========================
Таблицы, выделенные жирным шрифтом
h1
id, Name
h2
id, parent___id (h1_id), Имя
h3
id, parent___id (h2_id), Имя
результат
id, parent___id (h3_id), Имя
=========================
Помимо очевидной невозможности добавить n / уровни иерархии, этот метод также затруднил отображение списка всех стандартов без рекурсивных запросов к базе данных.
После того, как результаты учеников (и их родительские категории) были добавлены, есть очень мало причин для их изменения каким-либо образом. Основное требование - их легко и эффективно читать.
До настоящего времени все результаты учащихся из разных школ / штатов / стран примерно соответствовали моему предположению. Это не всегда так.
Все существующие данные должны, конечно, передаваться из текущей базы данных.
Учитывая вышесказанное, каков наилучший для меня способ хранения всех различных наборов результатов учащихся? Некоторые из идей, которые у меня были, перечислены ниже.
Продолжайте использовать 4 таблицы в базе данных, выбирая либо использовать recusion, либо множество объединений
Использовать вложенные множества
XML (Глобальный XML-файл для всех наборов или XML-файл для каждого)