3 回答

TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊
如果是我,數(shù)據(jù)庫表會是這樣:
id employeeid submittime
在這個數(shù)據(jù)表里只有打卡時間的概念,沒有上班下班的概念。這樣做的好處是數(shù)據(jù)庫只記錄了員工的原始行為,員工刷卡的時候只要無腦的insert就可以了。判斷用戶某天有沒遲到/早退也很簡單,把他當(dāng)天的所有記錄取出來在程序里搞就可以了,不需要去寫很復(fù)雜的SQL語句。至于有人說每次打卡都查一條數(shù)據(jù),會不會很浪費之類的話,你可以想像下:全球最大的公司能有多少員工,就算每個員工都很健忘每天打個好幾次卡,能有多少數(shù)據(jù)。1W個人的公司,每個人每天打4次卡,每天才4W條數(shù)據(jù),3年才到1000W,這個數(shù)量級數(shù)據(jù)庫根本不需要太考慮優(yōu)化。需要考察某人某月的遲到/早退次數(shù),全部加載到內(nèi)存中最多就100條記錄,毫無壓力。如果后面的打卡記錄會覆蓋之前的呃打卡記錄,這么做也許不會讓你的系統(tǒng)產(chǎn)生什么異常,但是嚴(yán)格來講這樣丟失了數(shù)據(jù)。我想象一個非常非??鋸埖膱鼍埃耗銈児窘⒘朔浅M晟频膯T工行為分析系統(tǒng),通過考勤記錄你發(fā)現(xiàn),員工A每天早上8點打卡,晚上6點打卡,但是經(jīng)常發(fā)現(xiàn)員工A在晚上6點打卡之后,又多次在8點9點又打卡進(jìn)入了公司,到深夜才離開。由此可以推測是不是他的項目經(jīng)常有突發(fā)狀況呢?員工B在早上8點前打卡之后的10幾分鐘內(nèi),又打了一次卡,這種情況多次發(fā)生。由此推測員工B是否比較健忘,或者有焦慮癥(總是擔(dān)心自己沒打卡/擔(dān)心出門沒關(guān)門)?等等……當(dāng)然這種可能跟你的系統(tǒng)毫無關(guān)系,我的意思是說你留著原始數(shù)據(jù)真的一點壞處都沒有。

TA貢獻(xiàn)1828條經(jīng)驗 獲得超13個贊
用邏輯去判斷。數(shù)據(jù)庫只是記錄。
記錄了上班時間。查詢出來 下班的時候讀取當(dāng)天的上班時間值,比對下。有異常做異常的事情,沒異常了保存下下班的時間。
程序是邏輯加算法。其實和數(shù)據(jù)庫真沒關(guān)系。
- 3 回答
- 0 關(guān)注
- 802 瀏覽
添加回答
舉報