2

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

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

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

我想到的是:

包含列的表:

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

或者为 5 个科目设置 5 个不同的表格,例如:假设物理列:id、学生姓名、日期、参加过

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

有更好的方法吗?

PS 我不知道 MySQL 中的外键或任何其他概念,但是太天真以至于无法在一天内学习并实现它。

4

1 回答 1

2

我推荐以下结构:

学生表

  1. ID - 每个用户的唯一 ID
  2. 名字 - 这可以添加到姓氏值以在适当的地方生成全名

类表

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

课程表

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

考勤表

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

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


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

出勤和上课表

  1. 课程编号
  2. 课程的日期时间 - 课程开始的日期和时间(您可以在提取数据后添加离开时间)
  3. ClassID - 引用的类的 ID
  4. StudentID - 被推荐的学生的 ID 号
  5. 出勤率 - 该学生的出勤率(例如 P=出席,A=缺席,L=迟到)
于 2013-10-05T14:39:19.737 回答