【问题标题】:using single field for IN out tinme in table在表中使用单个字段作为输入输出时间
【发布时间】:2014-01-16 07:40:50
【问题描述】:

我们有一个用于考勤的生物识别软件,您将手指按在传感器上,它会将您的 IN/OUT 时间放入 SQL 数据库中,它是桌面应用程序,但老板要求我在 asp.net MVC 中制作相同但 Web 应用程序,现在我们有2张桌子

tblEmployee

SerialId
EmpId
EmpName
DepId




tblAttendance


AtdId
EmpId (FK)
Time(IN/OUT)
Date

现在的问题是,当我上任时,它会在考勤表中添加新记录,而当我离开办公室时,它会再次在考勤表中输入 OUT 时间的整个记录​​,它对 IN 和 OUT 都使用相同的字段 TIME。所以想解决这个问题,比如保持单日记录,只改变进/出时间?

【问题讨论】:

    标签: asp.net sql database sql-server-2008


    【解决方案1】:

    这对我来说看起来很正常,但如果你想达到你所要求的,你可以像这样更改表定义 -

    tblAttendance
    
    AtdId
    EmpId (FK)
    Date --Just the date for every day
    Time_IN
    Time_OUT
    

    现在您需要确定它是哪一次滑动 - IN 或 OUT 并更新特定值。对于每个 IN 都会有一个新行 - 您可以控制特定 DATE - 每个 DATE 一行 - 复合主键 - AtdId、EmpId (FK)、Date

    注意 - 随着时间的推移,上述方法会减慢冲入/冲出过程。注册滑动需要相对较长的时间。您当前的数据库结构更适合长期使用。如果您想以任何特定格式显示数据,您应该根据您的要求设计视图。

    【讨论】:

    • @James - 根据您问题中的现有设计,每个 IN/OUT 都将简单地 INSERT 一条新记录 - 它不必 seek 任何东西。但是根据我在回答中所说的更改方法,您必须寻找每个 IN/OUT - 检查这是否是当天的第一个 IN 然后 INSERT,或者当天的一个 IN 是否已经完成,然后更新。 当您的数据增长时,这种查找和更新将消耗更多时间(与简单的 INSERT 相比)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多