勤怠どうも、こだまです。先日書いた「勤怠管理について調べてみた」を実際にシステムの観点から見た場合、どう落とし込んでいくのかについて今日は考えていこうと。システムを構築する上で、要件が前回でまとまったと考えて、次に行うことといったらデータ設計ですね。いうわけで、今回はデータ構造について考えていきましょう。ちなみに、データベースはMySQLを想定しています。従業員情報まず何より、従業員の勤怠を管理するためには従業員情報が必要かと思います。今回必要になるのは以下の要素かなと。業務統制処理のためもちろん、従業員の情報を管理するためには住所や扶養関連の情報等も必要ですが、今回の勤怠管理に必要な点はこれくらいかなと。従業員番号にTINYINTでは心もとないので、SMALLINTを設定します。言及したい点としては、部署IDの設定ですね。これは、勤怠の申請を行った際に承認を行える人を制限する必要があるからです。営業部の勤怠申請を情報システム部の部長がしてしまっては、責任の所在が曖昧になってしまいます。どの部署の人なのかを明確にする必要がありますね。部署として必要なのは、ひとまず以下の項目があれば良いかなと。従業員IDに責任者を設定する事で、先ほど述べた業務統制を図ります。勤務体系のカラムを追加する事で、残業時間等の労働時間の算出方法の振り分けにも対応する必要があるのかなと。勤怠情報そして、肝となる勤怠情報。今回はmicrosoft-accessに記載してあった例を元に作成しました。TEXT一つ一つの勤怠情報を一行ごとにする事で、後々様々な条件で集計(部署ごと・従業員ごとetc)できるようにしました。休憩時間を分単位で記入する事で、出勤時間と退勤時間の差から休憩時間を引く形にしています。有給休暇に関しては、取得したら1を入れるようにして、アプリケーション側で処理を行えばいいのかな。その他これでひとまず有給休暇や残業時間の算出には対応できますが、休日出勤などはデータだけではどうにもなりません。アプリケーション側で「休日に出勤した場合は給与25%増」みたいなロジックも必要になってきますね。まとめやはり実務を理解していたとしても、それをシステムに落とし込むとなると様々な事を考慮していく必要がでてきますね。ちなみに、僕は全然データベーススペシャリストでもなんでもないので、間違いや、より有効な手法をあるかと思うので、是非にコメントでもいただければなと思っています。