Я работаю в школе K-12 и разрабатываю систему зачетных книжек.Существующая система дневников, которую мы используем, и которую я также разработал, основана на Excel с VBA.Для меня всегда кошмарно объединять 400+ книг Excel в конце каждого семестра.Во время летнего перерыва я планирую поместить все данные в базу данных для удобства управления и прочее.
Моя проблема заключается в следующем:
Для приложения с интенсивными вычислениями, такого как журнал успеваемости,хорошо хранить вычисления в поле таблицы или лучше хранить ТОЛЬКО необработанные данные и выполнять вычисления только на внешнем интерфейсе?
Принцип работы системы зачетных книжек Excel такой ...
- Учитель записывает каждый балл для каждой оценки каждого ученика в форме балла / максимально возможного балла.(например, Тест 1 = 5/10, Домашняя работа 1 = 20/25 и т. д. )
- Баллы будут рассчитываться в процентах и суммироваться по компонентам.«Компонент» означает «Викторина», «Домашняя работа» и т. Д. Таким образом, будет что-то вроде « Средний уровень экзаменов = 90%,« Среднее домашнее задание »= 80% и т. Д.» »
- У разных предметов будут разные финалыразбивка по оценкам: " Наука = 50% тестов + 50% домашних заданий, математика = 60% тестов + 40% домашних заданий ".
- Затем общая средняя оценка каждого учащегося рассчитывается путем получения среднего значения по всем предметам.
Все вышеперечисленное очень легко сделать в электронной таблице, но я не знаюкак реализовать это в базе данных.
На данный момент, я думаю что-то вроде таблицы, в которой все оценки записываются так:
tbl_scores
id
student_id
term_id
subject_id
component_id
assessment_id
raw_score
highest_possible_score #not sure about this cause this can be implied from assessment_id
Было бы полезносохранить вычисления (процент для каждой записи оценки, среднее по компоненту, среднее по предмету, общее среднее и т. д. в базе данных) и использовать хранимые процедуры и триггеры для их обновления при появлении нового результата?
ИлиЛучше просто хранить исходные результаты и рассчитывать все ТОЛЬКО на интерфейсе?Будет ли эта опция быстрее первой, зная, что запросы SELECT здесь действительно будут более сложными из-за подзапросов?
Кстати, я планирую использовать для этого PostgreSQL.
Заранее благодарен за любой совет.
DashMug