關於考勤資料的思考(MySQL)

2021-08-27 20:32:07 字數 1497 閱讀 7540

最近考勤系統老是出錯,不知道公司考勤是怎麼做的。因為自己對mysql用的也不多,這裡根據自己的想法參考了別人的部落格,加上自己的驗證。學到了一些收穫,在這裡記下來。

考勤系統最關心的是簽到與簽退,這裡簽到是第一次打卡的時間,簽退是最後一次打卡的時間。(這麼做記錄會不全面,不推薦,只做驗證用)

這裡我們不關心中間打了多少次卡,只記錄第一次和最後一次的時間。所以簽到只能是「insert ignore into」,簽退是「insert into … on duplicate update time=now()」。這裡建立表的時候不能指定 primary key,否則主鍵衝突會發生,從而覆蓋簽到的值。我們想到的是依靠「uid,批次」作為唯一索引,如果同一天的同一批次有衝突,則更新。

下面是建表操作的一些語句,day指定的是日期、batch指定上下班、time指定具體時間,因為只做驗證,語句比較簡陋:

建表語句

create

table schedule (

dayint

notnull

, batch int

notnull

,time

text

notnull);

建立唯一索引

create

unique

index u_idx on schedule(

day, batch)

;每打一次卡都會執行下面兩條語句

insert

ignore

into schedule (

day, batch,

time

)values

(20180911,0

,now()

);insert

into schedule (

day, batch,

time

)values

(20180911,1

,"1")on

duplicate

keyupdate

time

=now()

;

驗證結果正確,這裡就不貼圖了。

方法是每次打卡都被記錄下來。這樣在記錄上非常完備,對使用者來說非常友好。

在計算上只關心當天第一次和最後一次,這也非常容易實現。

insert

into schedule (

day,

time

)values

(20180911

,"1");

最早時間

select

*from schedule order

bytime

asclimit1;

最晚時間

select

*from schedule order

bytime

desc

limit1;

這裡time可以用時間戳,方便排序

考勤錄入 順藤摸瓜式的思考

背景就不介紹了!紙質考勤 excel彙總 資料庫 資料庫,這兒是我做的事 人員流動性大,且基本工資不一樣等等原因,到我那就煩了。後來就想能不能搞個網頁讓他們自己錄入,後台直接連線資料庫呢?1.網頁?那就html,html能和資料庫互動嗎?問了之前同事同學,說不行!2.什麼網頁能和資料庫互動呢?有時你...

關於大資料的思考

關於大資料的思考 大資料思維與決策 讀後感 21世紀的競爭是資料的競爭,誰掌握資料,誰就掌握未來。馬雲 不難理解大資料在我們生活的重要性。隨著科技發展,網路無處不在,儲存資訊的本質是數字0和1 至少目前的計算機是如此 因而可以說資料無處不在。在 大資料思維與決策 中,作者採用大量例子說明近20年來大...

mysql考勤資料庫設計 mysql 資料庫設計

正規化 大概有8種正規化,遵循前三個一般資料庫就沒有問題 1 列不能再拆分 比如一列中有姓名,又有性別,就是沒有遵循這一條正規化 order id product id price quantity product name 111 11 123 good pen order id 和 produc...