成绩数据库表

时间:2008-10-31 17:21:55

标签: sql database data-modeling

我正在尝试定义一个表来存储在线成绩单的学生成绩。不过,我无法决定如何做到这一点。

成绩是在三分之一时期由科目给出的。每个学期都有平均成绩,总错过的课程和“恢复成绩”(我不知道正确的英语术语,但如果你低于平均水平,这是一个额外的考试,你试图提高你的成绩) ,我还要存储年度平均值和最终“恢复等级”。基本上,就像这样:

      |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标记这些成绩的三个月,或者如果它们是年度决赛。 但是这个人会要求写很多子查询来编写成绩单,这也是一种痛苦。

两者中哪一个更好,还是有其他方式? 感谢

4 个答案:

答案 0 :(得分:6)

您可以尝试使用表格对其进行结构化。我没有掌握所有信息,所以我对你可能需要或做的事情做了一些猜测。

TimePeriods:

  • ID(INT)
  • PeriodTimeStart(日期时间)
  • PeriodTimeEnd(日期时间)
  • 名称(VARCHAR(50)

生:

  • ID(INT)
  • 姓(VARCHAR(60))
  • 名字(VARCHAR(60))
  • 生日(日期时间)
  • [任何其他相关学生领域 添加信息......比如联系方式 信息等]

评分标准:

  • ID(INT)
  • StudentID(INT)
  • GradeValue(浮点)
  • TimePeriodID(INT)
  • IsRecoveringGrade(布尔值)

MissedClasses:

  • ID(INT)
  • StudentID(INT)
  • 的ClassID(INT)
  • TimePeriodID(INT)
  • DateMissed(日期时间)

类:

  • ID(INT)
  • ClassName(VARCHAR(50))
  • ClassDescription(TEXT)

答案 1 :(得分:0)

我认为最好的解决方案是每个时段存储一行。所以你有一个像这样的表:

grades
------
studentID
periodNumber
averageGrade
missedClasses
recoveringGrade

因此,如果它是2个学期,那么你将有1个和2个时期。我建议使用0期来表示“全年的整体”。

答案 2 :(得分:0)

最好有一个表示三个月的第二个表,并且从成绩表中有一个对三个月的外键引用(并在成绩表中存储个别成绩)。然后使用SQL函数SUM和AVG执行平均值,错过的类等。

答案 3 :(得分:0)

This comes to mind.

(但严重的是,错误的表太多了,不是太少.Handruin是我目前看到的最好的解决方案。)

相关问题