我正在为K-12学校工作,并且正在开发成绩簿系统。我也使用的现有的成绩簿系统是基于Excel和VBA开发的。对于我来说,每学期末合并400个Excel工作簿总是一场噩梦。在暑假期间,我打算将所有数据放在数据库中以便于管理和管理。需要针对学校评分系统的数据库设计建议
我的问题是这样的:
对于这样一个成绩簿计算密集型应用,是很好的计算存储在一个表中字段,或者是它更好地只存储原始数据并执行计算仅在前端?
Excel的成绩簿系统的工作原理是这样的方式......
- 教师档案中得分/最高分的形式,每个分数为每个学生的每一个评价。 (例如测验1 = 5/10,家庭作业1 = 20/25等)
- 分数将按百分比计算并按每个组分进行汇总。 “组件”意味着测验,家庭作业等。所以会有类似于“测验平均= 90%,家庭作业平均= 80%等等”
- 不同的科目将有不同的最终成绩明细,如“科学= 50%测验+ 50%家庭作业,数学= 60%测验+ 40%Homeworks“。
- 然后,每个学生的总平均成绩通过获得所有科目的平均值来计算。
以上所有内容在电子表格中都很容易制作,但我不知道如何在数据库中实现它。
由于瞬间,我想的东西就像所有的评估都记录像这样的表:
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
除了我的文章,我想到的其中一个想法是继续使用Excel作为数据库的前端。 Excel每次都进行计算,并且(可能)将计算结果存储回数据库。 – dashmug 2012-03-12 16:22:42