记录学生出勤情况的好桌子设计是什么


What would be good table design for recording attendance of students

我看到了其他数据库设计主题,但它们就像记录一天的一次出勤。

我想记录每天 5 门科目的学生出勤率,然后在我的 php 页面上检索它,学生可以在其中输入他的卷号,出勤率将显示给他 15/20,就像 5 行中的 5 个科目一样。其中 15 是他参加的班级总数,20 是所上课的总数。

我知道更好的方法是为不同的实体制作不同的表格,但我无法提出设计。

我想到的是:

包含列的表:

id,学生

姓名,日期,主题,学科类(布尔值,是该日期举行的该科目的讲座(,出勤率(布尔值,学生是否参加(

或有 5 个不同的表格,用于 5 个科目,例如:让我们说物理列:ID、学生姓名、日期、参加

但是这两个表都会有很多冗余值。假设对于第二张桌子,对于 70 名学生的 3 天出席,每个名字将重复 3 次,3 个日期将重复 70 次。

有什么更好的方法吗?

附言我不知道MySQL中的外键或任何其他概念,但太天真了,无法在一天内学习和实现它。

我推荐以下结构:

学生表

    ID
  1. - 每个用户的唯一 ID
  2. 名字 - 可以将其添加到姓氏值中,以便在适当的情况下生成全名

类表

    ID
  1. - 每个类的唯一 ID
  2. 类 - 类的名称,例如物理

课程表

  1. 课程编号
  2. 课程的日期时间 - 课程开始的日期和时间(您可以在提取数据后添加离开时间(
  3. 类 ID - 引用的类的 ID

出席表

  1. 身份证
  2. 课程编号
  3. 学生证 - 被推荐学生的身份证号码
  4. 出勤率 - 该学生的出勤率(例如 P=出席,A=缺勤,L=迟到(

然后,您可以使用最后两个表(课程表和出勤表(中的信息将这些表映射在一起。


或者,您可以将课程表和出勤表合并在一起以形成:

出勤和课程表

  1. 课程编号
  2. 课程的日期时间 - 课程开始的日期和时间(您可以在提取数据后添加离开时间(
  3. 类 ID - 引用的类的 ID
  4. 学生证 - 被推荐学生的身份证号码
  5. 出勤率 - 该学生的出勤率(例如 P=出席,A=缺勤,L=迟到(
相关文章: