什么是用于记录学生出勤率的好桌子设计

时间:2013-10-05 14:00:02

标签: php mysql sql sql-server database

我看到其他数据库设计主题相同,但它们就像录制一天的单个出席。

我想记录每天5个科目的学生的出勤率,然后在我的php页面上检索它,学生可以在其中输入他的参赛号码,并且他的出席率将被显示为15/20,而5个科目中的5个科目线。其中15人是他上过的课程总数,20人是所持有的课程总数。

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

我想到的是:

包含列的表:

id,学生姓名,日期,科目,科目类(布尔,在此日期举办的该科目讲座),出勤(布尔,学生是否参加)

或者 有5个主题的5个不同的表,如: 让我们说物理学 列: 身份证,学生姓名,约会,参加

但这两个表都有很多冗余值。让我们说第二张桌子,为70名学生出席3天,每个名字将重复三次,3个日期将重复70次。

有更好的方法吗?

P.S。我不知道MySQL中的外键或任何其他概念,但却太天真,无法学习并在一天内实现它。

1 个答案:

答案 0 :(得分:2)

我推荐以下结构:

学生表

  1. ID - 每个用户的唯一ID
  2. 名字 - 可以将其添加到Surname值以在适当的位置生成全名
  3. 课程表

    1. ID - 每个班级的唯一ID
    2. 类 - 类的名称,例如物理
    3. 课程表

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

        1. ID
        2. 课程ID
        3. StudentID - 被提及的学生的身份证号码
        4. 出勤率 - 此学生的出勤率(例如P =现在,A =缺席,L =迟到)
        5. 然后,您可以使用最后两个表中的信息(课程表出席表)将这些表映射到一起。


          或者,您可以合并课程表出席表以形成:

          出勤和课程表

          1. 课程ID
          2. 课程的日期时间 - 课程开始的日期和时间(您可以在提取数据后添加离开时间)
          3. ClassID - 引用的类的ID
          4. StudentID - 被提及的学生的身份证号码
          5. 出勤率 - 此学生的出勤率(例如P =现在,A =缺席,L =迟到)