打卡/打卡表的最佳设计是什么?
您是否会将打卡输入/输出存放在同一个表或单独的表中?为什么?
编辑 - 每小时的员工在轮班开始时就会打卡,并在轮班结束时打卡.每小时 - 除了当天开始/结束时的进/出外,豁免员工必须冲出/进入午餐.
假设你的程序有PUNCH IN和PUNCH OUT按钮,那么带有用户ID,插入和打孔字段的时钟表是一个很好的方法
您可以使用其他人建议的事件表对此进行建模,但该模型的问题是您要么必须有一个Type字段(in或out),要么你必须设法判断用户是否正在进行冲压; 也许把它全部放在一行 - 这样如果有人试图打出但从未打过,这是一个微不足道的查询来计算出来,你不必愚弄两个记录和每个类型 - 出对
摘要:一个具有输入/输出日期的表是更少的存储和更简单的查询
请注意,对单个时钟打孔事件进行建模不仅需要额外的(浪费的)事件类型字段,还会使处理不必要地复杂化,并且在记录之间引入1:1关系,这种关系只能通过时间比较找到
编辑:此时我们并不知道OP是使用哑式打卡时钟设备还是智能打卡时钟程序.如果是前者,那么除了记录拳击事件和调和之后别无选择; 如果是后者,则在发生冲击时可以进行协调/检测.