Loading...

No image

どのくらいが長時間労働?~勤怠管理について調べてみた【データ構造編】~

どうも、こだまです。

先日書いた「勤怠管理について調べてみた」を実際にシステムの観点から見た場合、どう落とし込んでいくのかについて今日は考えていこうと。

システムを構築する上で、要件が前回でまとまったと考えて、次に行うことといったらデータ設計ですね。というわけで、今回はデータ構造について考えていきましょう。ちなみに、データベースはMySQLを想定しています。

従業員情報

まず何より、従業員の勤怠を管理するためには従業員情報が必要かと思います。
今回必要になるのは以下の要素かなと。

カラム名 備考
従業員ID SMALLINT
従業員名 VARCHAR(10)
部署ID TINYINT 業務統制処理のため

もちろん、従業員の情報を管理するためには住所や扶養関連の情報等も必要ですが、今回の勤怠管理に必要な点はこれくらいかなと。従業員番号にTINYINTでは心もとないので、SMALLINTを設定します。

言及したい点としては、部署IDの設定ですね。これは、勤怠の申請を行った際に承認を行える人を制限する必要があるからです。
例えば、営業部の勤怠申請を情報システム部の部長がしてしまっては、責任の所在が曖昧になってしまいます。なので、しっかりとどの部署の人なのかを明確にする必要がありますね。

というわけで部署情報

部署として必要なのは、ひとまず以下の項目があれば良いかなと。

カラム名 備考
部署ID TINYINT
部署名 VARCHAR(20)
従業員ID SMALLINT 部署の責任者を設定
勤務体系 ENUM フレックス制度や裁量労働制に対応

従業員IDに責任者を設定する事で、先ほど述べた業務統制を図ります。
また、勤務体系のカラムを追加する事で、残業時間等の労働時間の算出方法の振り分けにも対応する必要があるのかなと。

勤怠情報

そして、肝となる勤怠情報。今回はmicrosoft-accessに記載してあった例を元に作成しました。

カラム名 備考
勤怠ID INT
従業員ID SMALLINT
日付 DATE
出勤時間 TIME
退勤時間 TIME
休憩時間 TINYINT 分単位で登録
有給休暇 TINYINT(1) 有給の場合は1
欠勤 TINYINT(1) 欠勤の場合は1
備考 TEXT

一つ一つの勤怠情報を一行ごとにする事で、後々様々な条件で集計(部署ごと・従業員ごとetc)できるようにしました。
また、休憩時間を分単位で記入する事で、出勤時間と退勤時間の差から休憩時間を引く形にしています。
有給休暇に関しては、取得したら1を入れるようにして、アプリケーション側で処理を行えばいいのかな。

その他

これでひとまず有給休暇や残業時間の算出には対応できますが、休日出勤などはデータだけではどうにもなりません。なので、アプリケーション側で「休日に出勤した場合は給与25%増」みたいなロジックも必要になってきますね。

まとめ

やはり実務を理解していたとしても、それをシステムに落とし込むとなると様々な事を考慮していく必要がでてきますね。
ちなみに、僕は全然データベーススペシャリストでもなんでもないので、間違いや、より有効な手法をあるかと思うので、是非にコメントでもいただければなと思っています。

それではこれにて。ではでは。

参考
http://microsoft-access.net/start/table-7.html

情報戦略テクノロジー