Mysql 高效考勤管理系统的数据库模式
我正在为学校开发一个考勤系统,该系统将同时满足员工和学生的需求 当前数据库架构为Mysql 高效考勤管理系统的数据库模式,mysql,database,database-design,architecture,schema,Mysql,Database,Database Design,Architecture,Schema,我正在为学校开发一个考勤系统,该系统将同时满足员工和学生的需求 当前数据库架构为 出勤率表 id - primary key for this table daydate int(11) - stores timestamp of current day timing_in varchar(18) - Start time for institution timing_out - Closing time for institution status - Status for the day,
出勤率
表
id - primary key for this table
daydate int(11) - stores timestamp of current day
timing_in varchar(18) - Start time for institution
timing_out - Closing time for institution
status - Status for the day, can be working day - 1 or holiday - 2
然后有不同的教职员工和学生表,存储实际出勤值
对于员工,考勤存储在考勤\u staff
中。数据库架构为
attendance_id - foreign key, references attendance table
staff_id - id of staff member, references staff master table
time_in - stores in timing of a staff member
time_out - stores out timing of a staff member
status - attendance status - can be one among the list, like present, absent, casual leave, half day, late mark, on duty, maternity leave, medical leave etc
对于工作人员,我将在表中存储“存在”和“不存在”条目
现在学生的出勤率必须包括在内
由于每天的状态已存储在考勤表中
表中,我们是否可以在学生考勤表中不存储每个学生的当前值
与此类似,学生出勤表将只存储那些在特定日期不在场的日子的条目
考勤\u学生
的模式将为
attendance_id - references attendance table
student_id - references student table
status - will be leave / absent etc other than present.
使用外部联接从考勤表计算当前天数是否有效
提前感谢。您不需要外部联接来计算学生的出勤率。您可以简单地计算出勤表中的记录(一次,因为所有学生都一样),然后从学生出勤表中进行选择以获得缺勤
如果你想通过外部加入来计算出席人数,你可以。如果您在考勤表主键和从学生考勤表到考勤表的外键上都有索引,那么它可能会非常高效。谢谢Joel。目前的状态是否应该存储在数据库中,以及每个学生每天的状态。那我去年某个月某个学生的出勤率呢?如何检查,学生当时是否可以出席。他是否处于活动状态/非活动状态/暂停状态等。因为对于非活动学生,系统中将不提供考勤。@Ehs4n-如果是我,我将明确存储当前状态。我之所以这样做,是因为它可以区分学生在场和数据丢失。在记录出勤情况之前,你无法判断学生是否在场或出勤情况是否“待定”。对于历史数据,如果你在学生离开学校或新学年开始时清理出你的表,那么你可以考虑将另外一组历史档案表作为学年。与其删除离开的学生,不如将其存档。再次感谢您的见解。请您对存档功能进行更多说明。如何实现这一点?@ EHS4N-创建一组表,这些表是生产表的副本,但考虑每年添加一个额外的列。然后,不要只在学年结束时从生产表中删除数据,而是将该过程更改为首先将数据复制到存档表中,并在执行时设置“额外年份”列。然后在制作存档副本后从生产表中删除数据。并非每个存档表都需要“额外年份”列,只有那些尚未嵌入日期的表才需要。感谢您的宝贵建议。:)