2014-04-26 30 views
0

爲了更簡單快速的考勤計算,我應該採用哪種方式來存儲IN和OUT時間數據?SQL:在兩列或只有一列存儲IN時間和OUT時間

  1. 商店IN和OUT時間每僱員在單排

enter image description here

  • 存儲單個值(與INOUT位值,0 = IN, 1 = OUT)
  • enter image description here

    +0

    你使用什麼引擎?你使用MySql? –

    +0

    您可能需要另一列來指示來源:員工並不總是時鐘,因此您可能希望管理員進行手動輸入或其他機制來追蹤錯誤/錯誤的條目。 – Gavin

    +0

    SQL Server 2012 – VAAA

    回答

    0

    你的第一個建議的解決方案是好的,但如果你想要去的第二個解決方案,您將需要一個又一個欄,以確定員工的相關Time InTime Out記錄的兩個字段。

    喜歡的東西....

    EmployeeID INT, RecordID INT, TimeClock DATETIME,   INOUT BIT 
    
        101    1   2014-01-01 09:00:05.123  1 
        101    1   2014-01-01 17:10:05.123  0 
        201    2   2014-01-01 09:00:05.123  1 
        201    2   2014-01-01 17:10:05.123  0 
    

    但隨着你的第一個方法,你需要插入記錄,然後更新每個記錄時員工離職,我寧願去爲你的第二個選擇,但我建議額外柱。

    +0

    我該如何管理員工誤打兩次的情況。這樣我只有一個TimeClock入口,而沒有其他IN或OUT記錄。 – VAAA

    +0

    當員工根本不打卡時會發生什麼?這些都是垃圾數據的場景,垃圾數據非常簡單。輸入錯誤的數據後,您無法期待正確的結果。這是你需要在應用層上處理的東西。如果兩個條目是由同一個員工在幾秒鐘內完成的,則拒絕一個條目並僅使用最後一個條目,這種邏輯。 –

    +0

    謝謝,我該如何分配該RecordID,因爲時間記錄不是員工連續的。它真的有意義的RecordID? – VAAA

    0

    及其好去兩列,方便計算

    相關問題