sql - 成绩数据库表

标签 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

等等,但我认为如果学校决定按双学期或其他某个时期(就像 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/

相关文章:

sql - 工具比较两个不同数据库中的表

database - Postgres 仅向用户授予 SELECT 和 UPDATE 权限

database - 具有链式调用的 Grails 服务类的事务行为

java - 生成唯一的客户 ID/在配置单元中插入唯一的行

MySQL用于统计用户有多少个前10名的分数

php - 数据库模型验证

sql - 需要您在创建表格时提供意见

database - 通过常识确定候选键?

sql - 为什么没有主键的表是一个坏主意?

mysql - 如何检查查询是否使用了mysql中的索引