成绩数据库表

Gab*_*abe 1 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
Run Code Online (Sandbox Code Playgroud)

我可以将这些信息存储在一个DB行中,每行如下:

1tAverage | 1tMissedClasses | 1tRecoveringGrade | 2tAverage | 2tMissedClasses | 2tRecoveringGrade
Run Code Online (Sandbox Code Playgroud)

等等,但我认为如果scholl决定通过bimester或其他一些时期评分(就像过去3年前一样),这将是一种痛苦.
我还可以对表格字段进行概括,并使用一个tinyint来标记这些成绩的三个月,或者它们是否是年度决赛.但是这个会要求很多子查询来编写报告卡,这也是一种痛苦.

哪两个更好,还是有其他方式?谢谢

Han*_*uin 6

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

TimePeriods:

  • ID(INT)
  • PeriodTimeStart(DATETIME)
  • PeriodTimeEnd(DATETIME)
  • 名称(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(DATETIME)

类别:

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