我对数据库表的设计存在疑问,以跟踪学生的出勤情况.目前,我的桌上学生至少有4000名学生.
创建一个出勤数据库来跟踪他们的出勤率将近4000 * 30天* 12个月=> ~1,400,000行(忽略假期/星期日).
出勤表将包括:
id (INT)
student_id (INT)
course_id (INT)
data (DATETIME)
present/absent (TINYINT, as I'll store 1/0)
comments
我正在使用PHP / MySql.随着桌子变得如此之大,还有其他方法吗?
解决方法:
为了进一步扩展@Twinkles的替代方案,我担心你为什么要在你的考勤数据中存储现在和缺席的学生.是因为您希望能够运行显示所有孩子的报告以及他们是否在某一天缺席?有一个更好的方法来做到这一点.
我见过的大多数系统都存储了学生所在的系统(正面出勤)或学生缺席(负面出勤,尽管很少被该名称所引用).关于使用哪种决定取决于学校的结构和报告要求(以及他们向谁报告).
如果您因为学校因缺席跟踪逃学生等原因而缺席学校时,您应该使用标准(负面)出勤结构.美国大多数K-12学校都是这样做的.
如果你在学校只有在经过验证的小时数后才能获得课程奖励(例如,Johnny在完成课程作业并参加了12节课程之前没有通过课程),那么可以使用正面的出勤结构.
假设您的数据如下所示:(为简单起见,忽略示例中的course_id)
Attendance:
id | student_id | date |
------------------------------
1 | 2 | 2013-10-24 |
Students:
student_id | studen