我正在尝试定义一个表来存储在线成绩单的学生成绩。不过,我无法决定如何去做。
成绩是按学科在三个月内给出的。每个学期都有一个平均成绩,缺课总数和一个“恢复成绩”(我不知道英语中的正确术语,但如果你低于平均水平,这是一个额外的测试,试图提高你的成绩) ,我还得存储年平均值和最终“恢复等级”。基本上是这样的:
|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
等等,但我认为如果学校决定按双学期或其他某个时期(就像 3 年前以前那样)进行评分,这将是一种痛苦。
我还可以概括表字段,并使用 tinyint 来标记这些成绩属于哪个学期,或者它们是否是年度总决赛。
但是这个会要求很多子查询来写成绩单,维护起来也很痛苦。
这两者哪个更好,或者有其他方法吗? 谢谢
最佳答案
你可以尝试用你的表来构建它。我没有所有信息,所以我猜测了您可能需要什么或如何使用这些信息。
时间段:
- ID(整数)
- 周期时间开始(日期时间)
- PeriodTimeEnd(DateTime)
- 姓名(VARCHAR(50)
学生们:
- ID(整数)
- 名字(VARCHAR(60))
- 姓氏(VARCHAR(60))
- 生日(日期时间)
- [任何其他相关学生领域 已添加信息...例如联系方式 信息等]
评分:
- 身份证(整数)
- 学号(国际)
- 成绩值( float )
- TimePeriodID(INT)
- IsRecoveringGrade( bool 值)
缺课:
- 身份证(整数)
- 学号(国际)
- 类ID(整数)
- TimePeriodID(INT)
- DateMissed(日期时间)
类:
- 身份证(整数)
- 类名 (VARCHAR(50))
- 类描述(文本)
关于sql - 成绩数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/254278/