我看到了其他数据库设计主题,但它们就像记录一天的一次出勤。
我想记录每天 5 门科目的学生出勤率,然后在我的 php 页面上检索它,学生可以在其中输入他的卷号,出勤率将显示给他 15/20,就像 5 行中的 5 个科目一样。其中 15 是他参加的班级总数,20 是所上课的总数。
我知道更好的方法是为不同的实体制作不同的表格,但我无法提出设计。
我想到的是:
包含列的表:
id,学生姓名,日期,主题,学科类(布尔值,是该日期举行的该科目的讲座(,出勤率(布尔值,学生是否参加(
或有 5 个不同的表格,用于 5 个科目,例如:让我们说物理列:ID、学生姓名、日期、参加
但是这两个表都会有很多冗余值。假设对于第二张桌子,对于 70 名学生的 3 天出席,每个名字将重复 3 次,3 个日期将重复 70 次。
有什么更好的方法吗?
附言我不知道MySQL中的外键或任何其他概念,但太天真了,无法在一天内学习和实现它。
我推荐以下结构:
学生表
- ID
- - 每个用户的唯一 ID
- 姓
- 名字 - 可以将其添加到姓氏值中,以便在适当的情况下生成全名
类表
- ID
- - 每个类的唯一 ID
- 类 - 类的名称,例如物理
课程表
- 课程编号
- 课程的日期时间 - 课程开始的日期和时间(您可以在提取数据后添加离开时间(
- 类 ID - 引用的类的 ID
出席表
- 身份证
- 课程编号
- 学生证 - 被推荐学生的身份证号码
- 出勤率 - 该学生的出勤率(例如 P=出席,A=缺勤,L=迟到(
然后,您可以使用最后两个表(课程表和出勤表(中的信息将这些表映射在一起。
或者,您可以将课程表和出勤表合并在一起以形成:
出勤和课程表
- 课程编号
- 课程的日期时间 - 课程开始的日期和时间(您可以在提取数据后添加离开时间(
- 类 ID - 引用的类的 ID
- 学生证 - 被推荐学生的身份证号码
- 出勤率 - 该学生的出勤率(例如 P=出席,A=缺勤,L=迟到(