我正在尝试定义一个表来存储在线成绩单的学生成绩。不过,我无法决定如何做到这一点。
成绩是在三分之一时期由科目给出的。每个学期都有平均成绩,总错过的课程和“恢复成绩”(我不知道正确的英语术语,但如果你低于平均水平,这是一个额外的考试,你试图提高你的成绩) ,我还要存储年度平均值和最终“恢复等级”。基本上,就像这样:
|1st Trimester |2nd Trimester |3rd Trimester
Subj. |Avg. |Mis. |Rec |Avg. |Mis. |Rec |Avg. |Mis. |Rec |Year Avg. |Final Rec.
Math |5.33 |1 |4 |8.0 |0 |7.0 |2 |6.5 |7.0
Sci. |5.33 |1 |4 |8.0 |0 |7.0 |2 |6.5 |7.0
我可以将这些信息存储在一个数据库行中,每一行都是这样的:
1tAverage | 1tMissedClasses | 1tRecoveringGrade | 2tAverage | 2tMissedClasses | 2tRecoveringGrade
等等,但我认为如果scholl决定按照bimester或其他一些时期评分(就像过去3年前一样),这对mantain来说会很痛苦。
我还可以对表格字段进行概括,并使用tinyint标记这些成绩的三个月,或者如果它们是年度决赛。
但是这个人会要求写很多子查询来编写成绩单,这也是一种痛苦。
两者中哪一个更好,还是有其他方式? 感谢
答案 0 :(得分:6)
您可以尝试使用表格对其进行结构化。我没有掌握所有信息,所以我对你可能需要或做的事情做了一些猜测。
TimePeriods:
生:
评分标准:
MissedClasses:
类:
答案 1 :(得分:0)
我认为最好的解决方案是每个时段存储一行。所以你有一个像这样的表:
grades
------
studentID
periodNumber
averageGrade
missedClasses
recoveringGrade
因此,如果它是2个学期,那么你将有1个和2个时期。我建议使用0期来表示“全年的整体”。
答案 2 :(得分:0)
最好有一个表示三个月的第二个表,并且从成绩表中有一个对三个月的外键引用(并在成绩表中存储个别成绩)。然后使用SQL函数SUM和AVG执行平均值,错过的类等。
答案 3 :(得分:0)
(但严重的是,错误的表太多了,不是太少.Handruin是我目前看到的最好的解决方案。)