- DB定義
- ユーザーマスタ
- パスワードマスタ
- 役割マスタ
- ユーザー役割マスタ
- グループマスタ
- グループ階層マスタ
- ユーザー所属グループ階層マスタ
- 会社設定マスタ
- ユーザー契約マスタ
- 事業場マスタ
- 月報承認役割マスタ
- 契約マスタ
- 限度時間マスタ
- 休憩時間マスタ
- 休憩時間詳細マスタ
- 契約特定期間マスタ
- 契約フレックス時間設定マスタ
- 休暇設定マスタ
- カレンダーマスタ
- カレンダー詳細マスタ
- カレンダー所定労働日数マスタ
- カレンダー詳細勤務時間マスタ
- カレンダー詳細休憩時間マスタ
- 打刻
- 仮打刻
- 打刻訂正ワーク
- 打刻予約
- 月報
- 月報詳細
- 月報チケット
- 月報承認
- 月報コメント
- 月報詳細集計
- 月報元データワーク
- チケット
- チケット階層
- チケットテンプレート
- チケット予約
- チケット手動付与履歴
- 有休付与実績
- 有休付与日数マスタ
- 監視設定マスタ
- 通知
- 標準産業分類
DB定義
自作勤怠管理システムのDB定義です。SQL Serverを想定しています。
桁数定義が関係ない型の場合、桁に「-1」と書かれている場合があります。
ユーザーマスタ
社員とユーザーを同じものとして扱う。
労働基準法第107条の「労働者名簿」と同等の機能を持つ。
→「遅滞なく訂正」できるマスタメンテ機能が必要。(労働基準法第107条)
法的に重要な書類なので、編集できる人を限定して、可能なら変更ログも残ると安心。
→退職日から3年間は保存が必須。5年間保存する可能性も考えておく。
(労働基準法第109条で「5年間保存」と書かれていて、労働基準法第143条で「当分の間3年間保存」と書かれている)
項目は労働基準法 第53条(様式第19号)を参考に決定した。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
ログインID | nvarchar | 100 | 0 | FALSE | TRUE | 内部的にはメールアドレスと同じ値を格納する。重複はNG。 |
メールアドレス | nvarchar | 100 | 0 | FALSE | TRUE | |
氏名 | nvarchar | 100 | 0 | FALSE | TRUE | 労働者名簿必須事項 |
氏名カナ | nvarchar | 100 | 0 | FALSE | FALSE | 氏名のソート用。入力されていない場合は氏名の文字コードでソート。 |
性別 | tinyint | 0 | 0 | FALSE | TRUE | 労働者名簿必須事項 1:男 2:女 (0:未回答) |
生年月日 | datetime | 0 | 0 | FALSE | TRUE | 労働者名簿必須事項 |
住所 | nvarchar | 200 | 0 | FALSE | TRUE | 労働者名簿必須事項 |
従事する業務の種類 | nvarchar | 100 | 0 | FALSE | FALSE | 労働者名簿必須事項 労働基準法施行規則 第53条2項 従業員が30名未満なら入力不要。 |
入社日 | datetime | -1 | 0 | FALSE | TRUE | 労働者名簿必須事項 「雇入れ年月日」と同じ意味。この日を基準に有休が発生する。継続勤務の場合に変更してはならない。 |
退職日 | datetime | -1 | 0 | FALSE | FALSE | 労働者名簿必須事項 退職日または死亡日。労働基準法 第109条により、この日付から3年間は絶対に保存が必要。退職日当日も労働契約は生きている。 |
退職事由 | nvarchar | 1000 | 0 | FALSE | FALSE | 労働者名簿必須事項 退職または死亡事由(退職の事由が解雇の場合にあっては、その理由を含む。) |
履歴 | nvarchar | 1000 | 0 | FALSE | FALSE | 労働者名簿必須事項 記載内容について明確な指定はない。 |
管理監督者フラグ | bit | 0 | 0 | FALSE | TRUE | 労使協定の届出書を作成する際、「常時使用する労働者数」の計算をするために使う。trueのデータは労働者に含めない。 |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 10 | 0 | FALSE | FALSE |
パスワードマスタ
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
パスワード | varchar | MAX | 0 | FALSE | TRUE | |
失敗カウント | int | 0 | 0 | FALSE | FALSE | |
ロックアウト終了時間 | datetime | 0 | 0 | FALSE | FALSE | |
打刻専用トークン | varchar | MAX | 0 | FALSE | FALSE | 重複不可。スマホから打刻するときにこの値でユーザー識別する。 |
役割マスタ
月報などの承認順位を定義するテーブル。
承認レベルに下記のような値をセットする
一般:1
上長:10
総務:50
社長:99
ついでに、システム内の各機能へのアクセス権も管理するようにしました。
・月報締処理アクセス権 (月報の締め処理を実行できる)
・システム管理者 (マスタメンテ機能全般にアクセスできる)
・個人情報アクセス権 (ユーザーマスタにアクセスできる)
・月報承認アクセス権 (月報に承認印を押せる。上長以上のユーザー全員が該当する。)
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
役割ID | nvarchar | 10 | 0 | TRUE | TRUE | |
役割名 | nvarchar | 100 | 0 | FALSE | FALSE | |
承認レベル | int | 0 | 0 | FALSE | TRUE | 承認に関わらないデータであれば0。数値が大きい方が上位の承認者。 |
ソート順 | int | 0 | 0 | FALSE | FALSE | 承認レベル0のデータを並び替えるときに使う。その他はnull。 |
ユーザー役割マスタ
ユーザーと役割を紐付ける
単一のユーザーに同レベルの役割が紐づくことはない想定
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 10 | 0 | TRUE | TRUE | |
役割ID | nvarchar | 10 | 0 | TRUE | TRUE | |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
グループマスタ
会社の部課に相当する情報を保持する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
グループID | int | 10 | 0 | TRUE | TRUE | |
グループ名 | nvarchar | 100 | 0 | FALSE | TRUE |
グループ階層マスタ
グループのツリー構造を管理する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
親グループID | int | 10 | 0 | TRUE | TRUE | |
子グループID | int | 10 | 0 | TRUE | TRUE | |
深度 | int | -1 | 0 | FALSE | TRUE |
ユーザー所属グループ階層マスタ
ユーザーとグループの紐付け情報を保持する。
ユーザーが所属するグループのみを保持する。親グループを辿る場合はグループ階層マスタを使う。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
グループID | int | 10 | 0 | TRUE | TRUE | |
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
深度 | int | -1 | 0 | FALSE | TRUE | 現状0しか用意しない想定。 |
会社設定マスタ
1件だけ登録する。
帳票出力時に使用する会社名や、勤怠管理システム全体の設定情報を混ぜて保存している。
標準労働時間 ~ カレンダー年初日 までのカラムは運用中に変更されると非常に都合が悪く、運用開始時に固定値を入れたままメンテナンスしない想定。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
会社ID | int | 0 | 0 | TRUE | TRUE | 0固定 |
標準労働時間 | decimal | 10 | 1 | FALSE | TRUE | 会社で最も長い労働時間を分単位で設定する。基本は480分。有休チケット付与時の初期ポイントとしても使う。 |
チケット付与タイプ | int | 0 | 0 | FALSE | TRUE | 有休の付与方法。0:全社員一律、1:個人の入社日基準 |
チケット付与日 | char | 4 | 0 | FALSE | TRUE | 有休付与が全社員一律である場合、有休の付与日 MMDD |
カレンダー年初日 | char | 4 | 0 | FALSE | TRUE | カレンダーを年単位で入力するとき、年の最初の日付。年度の最初の日・決算日の翌日・1月1日など。MMDD形式。 |
法人名 | nvarchar | 512 | 0 | FALSE | FALSE | 帳票出力の際に使用する会社名。未設定でも構わないが、帳票がおかしな表示になる。 |
使用者職名 | nvarchar | 100 | 0 | FALSE | FALSE | 帳票出力の際に使用する。事業場マスタの同名項目で上書き可能。 |
使用者 | nvarchar | 100 | 0 | FALSE | FALSE | 帳票出力の際に使用する。基本的に社長の名前を登録する。事業場マスタの同名項目で上書き可能。 |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
ユーザー契約マスタ
ユーザーと契約を紐付ける。任意の時点で複数の契約が紐付く場合は入力エラーとする。
最初の契約開始日~退職日まで常に契約が紐付いている必要がある。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
事業場ID | int | 0 | 0 | FALSE | TRUE | 所属する事業場が変わるタイミングで月報を作る必要がある。 |
契約ID | int | 0 | 0 | FALSE | TRUE | |
カレンダーID | int | 0 | 0 | FALSE | TRUE | シフト勤務の場合はカレンダーだけを付け替える想定 |
契約開始日 | datetime | 0 | 0 | TRUE | TRUE | 基本的に入社日と同じ。 勤怠管理システム運用開始時点で在籍している社員は、運用開始日を入力する。 |
契約終了日 | datetime | 0 | 0 | FALSE | FALSE | この瞬間をもって契約が終了する、次のFromと同じ値を入力する。終了日が未定の場合はNULL。 |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
事業場マスタ
労働基準法に登場する「使用者は、当該事業場に、労働者の過半数で組織する~」の事業場を示す。労使協定に関する情報を持つ。
また、月報全体の計算ロジックに関する設定も持っている。
所属する事業場が変わるタイミングで月報を別々に作る必要がある。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
事業場ID | int | 0 | 0 | TRUE | TRUE | |
事業場名 | nvarchar | 100 | 0 | FALSE | TRUE | |
解釈ロジック | nvarchar | 100 | 0 | FALSE | TRUE | 月報全体の集計に関する処理ロジック名 ソースコードのクラス名をセットして、この設定をもとに呼び出すクラスを切り替える。 |
締日 | tinyint | 0 | 0 | FALSE | TRUE | 月ごとの締処理の日付をセット。月末日であれば31をセットする。 |
特例事業場フラグ | bit | 0 | 0 | FALSE | TRUE | 1週間の労働時間の限度が変化する。通常は40h、特例であれば44h。 |
限度時間の適用フラグ | bit | 0 | 0 | FALSE | TRUE | 基本的にtrue。 trueの場合は限度時間のカウントを行う。限度時間の適用が除外される業種については例外的にfalseになる場合が有り得る。 |
有休チケット買上_期限切れ | bit | 0 | 0 | FALSE | TRUE | ネタ機能「有給休暇の買い上げ」のON/OFFを設定する。 勤怠管理システムの自作-有休の買い上げ |
有休チケット買上_退職 | bit | 0 | 0 | FALSE | TRUE | |
季節休チケット買上_期限切れ | bit | 0 | 0 | FALSE | TRUE | |
季節休チケット買上_退職 | bit | 0 | 0 | FALSE | TRUE | |
事業の種類 | nvarchar | 100 | 0 | FALSE | FALSE | 帳票出力の際に使用する。 |
法人名 | nvarchar | 512 | 0 | FALSE | FALSE | 帳票出力の際に使用する。こちらに入力がある場合、会社設定マスタの値を上書きする。 |
郵便番号 | nvarchar | 8 | 0 | FALSE | FALSE | 帳票出力の際に使用する。フレックスの場合のみ値が入る。 |
所在地 | nvarchar | 1000 | 0 | FALSE | FALSE | 帳票出力の際に使用する。 |
電話番号 | nvarchar | 20 | 0 | FALSE | FALSE | 帳票出力の際に使用する。 |
所轄労働基準監督署 | nvarchar | 100 | 0 | FALSE | FALSE | 帳票出力の際に使用する。 |
使用者職名 | nvarchar | 100 | 0 | FALSE | FALSE | 帳票出力の際に使用する。こちらに入力がある場合、会社設定マスタの値を上書きする。 |
使用者 | nvarchar | 100 | 0 | FALSE | FALSE | 帳票出力の際に使用する。こちらに入力がある場合、会社設定マスタの値を上書きする。 |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
月報承認役割マスタ
事業場単位で月報承認に関与する役割を設定する。月報承認データだけでは承認されたことしか分からないので「あとは誰が承認するのか」を知るために、空の押印欄を表示するときの元データとして使う。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
事業場ID | int | 0 | 0 | TRUE | TRUE | |
役割ID | nvarchar | 10 | 0 | TRUE | TRUE |
契約マスタ
月報の1日分のデータ作成に関わる設定を持つ。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
契約ID | int | 0 | 0 | TRUE | TRUE | |
契約名 | nvarchar | 100 | 0 | FALSE | TRUE | |
解釈ロジック | nvarchar | 100 | 0 | FALSE | TRUE | 日単位での処理ロジック名。 ソースコードのクラス名をセットして、この設定をもとに呼び出すクラスを切り替える。 |
特例事業場フラグ | bit | 0 | 0 | FALSE | TRUE | このフラグがONの場合のみ週44hの労働時間を設定できる。また、特例ではない事業場と紐付けできない。 |
日付変更線 | time | 4 | 0 | FALSE | TRUE | この時刻を境に労働時間を計上する日付を切り替える。0:00~勤務開始時刻のどこかの値になるはず。 前日からの継続をのぞき、1日の中で最初に登場する契約の日付変更線が優先。 |
勤務開始時刻 | time | 4 | 0 | FALSE | TRUE | |
勤務終了時刻 | time | 4 | 0 | FALSE | TRUE | |
休憩設定ID | int | 0 | 0 | FALSE | FALSE | |
所定労働時間(分) | int | 0 | 0 | FALSE | TRUE | 所定労働時間の2倍の時間労働した場合、代休を発生させる。都度計算するのは面倒なので、事前に算出しておく |
時間休利用日数 | int | 0 | 0 | FALSE | TRUE | 時間休を何日分使用して良いか設定する。法的に最大値は5。 休暇設定マスタで使用が禁止されている場合、そちらが優先。 |
法定休日変動 | tinyint | 0 | 0 | FALSE | TRUE | 0:固定、1:週内で変動、2:4週間で4日 法定休日に出勤している場合、所定休日と入れ替えることが出来るかどうか。また、入れ替えられる範囲。 |
超過労働起算日 | datetime | 0 | 0 | FALSE | TRUE | 36協定に記載する労働時間集計の起算日。変形労働制の起算日と大抵一致する。 |
起算曜日 | tinyint | 0 | 0 | FALSE | TRUE | 法定休日を変動させる場合、かつ、変動範囲が週内である場合、起算日となる曜日 0:日~6:土 |
開始打刻丸め種別 | tinyint | 0 | 0 | FALSE | TRUE | 0:加工しない, 1:切り上げ, 2:切り下げ, 3:四捨五入 勤怠管理システムの自作-打刻時刻の丸め |
開始打刻丸め間隔 | smallint | 0 | 0 | FALSE | TRUE | 単位:分 |
終了打刻丸め種別 | tinyint | 0 | 0 | FALSE | TRUE | 0:加工しない, 1:切り上げ, 2:切り下げ, 3:四捨五入 |
終了打刻丸め間隔 | smallint | 0 | 0 | FALSE | TRUE | 単位:分 |
変形労働時間フラグ | bit | 0 | 0 | FALSE | TRUE | false:通常勤務 true:フレックスや変形労働時間制 |
変形労働種別 | tinyint | 0 | 0 | FALSE | TRUE | 通常、1か月、1年、1週間、フレックス。 カレンダーマスタの同名項目と値が一致する場合のみ、紐付けることができる |
変形期間年 | smallint | 0 | 0 | FALSE | FALSE | |
変形期間月 | smallint | 0 | 0 | FALSE | FALSE | |
変形期間日 | smallint | 0 | 0 | FALSE | FALSE | |
変形期間週 | smallint | 0 | 0 | FALSE | FALSE | 入力・表示用 |
変形期間起算日 | datetime | 0 | 0 | FALSE | FALSE | |
変形期間起算日入力タイプ | tinyint | 0 | 0 | FALSE | FALSE | 特定の日付、毎月x日(1か月単位の場合のみ) |
変形期間起算日日付入力値 | smallint | 0 | 0 | FALSE | FALSE | ユーザーの入力値を保持するため。処理には関与しない。 |
変形期間分割月 | smallint | 0 | 0 | FALSE | FALSE | 1年単位の変形労働のみ。変形期間を区分する単位を指定する。 |
変形期間分割日 | smallint | 0 | 0 | FALSE | FALSE | 1年単位の変形労働のみ。変形期間を区分する単位を指定する。 |
フレックス清算期間月 | smallint | 0 | 0 | FALSE | FALSE | フレックスの場合のみ使用する。 清算期間を指定する。 |
フレックス清算期間日 | smallint | 0 | 0 | FALSE | FALSE | |
フレックス総労働時間指定方法 | tinyint | 0 | 0 | FALSE | FALSE | 1:固定値、2:1日n時間×所定労働日数、10:標準となる1日の労働時間 × 所定労働日数(簡単入力機能。挙動は2と同じ) |
フレックス総労働時間固定値 | bigint | 0 | 0 | FALSE | FALSE | 固定値で指定する場合、こちらに値が入る |
フレックス総労働時間1日あたり | time | 0 | 0 | FALSE | FALSE | n時間×所定労働日数で指定する場合、こちらに値が入る |
フレックス完全週休二日制フラグ | bit | 0 | 0 | FALSE | FALSE | 完全週休二日制である場合はTrue。 法定労働時間の限度が変化する。 |
フレックス標準となる1日の労働時間 | int | 0 | 0 | FALSE | FALSE | 単位:分 |
フレックス実働不足繰越フラグ | bit | 0 | 0 | FALSE | FALSE | |
労使協定有効期間From | datetime | 0 | 0 | FALSE | FALSE | |
労使協定有効期間To | datetime | 0 | 0 | FALSE | FALSE | |
労使協定成立年月日 | datetime | 0 | 0 | FALSE | FALSE | |
労使協定当事者職名 | nvarchar | 100 | 0 | FALSE | FALSE | |
労使協定当事者氏名 | nvarchar | 100 | 0 | FALSE | FALSE | |
労使協定当事者選出方法 | nvarchar | 100 | 0 | FALSE | FALSE | 労働組合ではない場合のみ必須 |
旧協定ID | int | 0 | 0 | FALSE | FALSE | 「旧契約」に相当するデータがシステム内に存在する場合、その契約IDを保持する。 |
旧協定の対象期間起算日 | datetime | 0 | 0 | FALSE | FALSE | |
旧協定の対象期間年 | smallint | 0 | 0 | FALSE | FALSE | |
旧協定の対象期間月 | smallint | 0 | 0 | FALSE | FALSE | |
旧協定の対象期間日 | smallint | 0 | 0 | FALSE | FALSE | |
旧協定の労働時間が最も長い日の労働時間数 | int | 0 | 0 | FALSE | FALSE | 単位:分 |
旧協定の労働時間が最も長い週の労働時間数 | int | 0 | 0 | FALSE | FALSE | 単位:分 |
旧協定の対象期間中の総労働日数 | smallint | 0 | 0 | FALSE | FALSE | |
労働時間が最も長い日の労働時間数 | int | 0 | 0 | FALSE | FALSE | 単位:分。 カレンダーを操作する度に再計算し、この項目を更新する。「旧協定の・・・」の元ネタとして参照する。1か月単位、1年単位の場合に値が入る。 |
労働時間が最も長い週の労働時間数 | int | 0 | 0 | FALSE | FALSE | 単位:分。 カレンダーを操作する度に再計算し、この項目を更新する。「旧協定の・・・」の元ネタとして参照する。1か月単位、1年単位の場合に値が入る。 |
対象期間中の総労働日数 | smallint | 0 | 0 | FALSE | FALSE | カレンダーを操作する度に再計算し、この項目を更新する。「旧協定の・・・」の元ネタとして参照する。 |
実質有効期間From | datetime | 0 | 0 | FALSE | FALSE | この契約をユーザーと紐付けることができる期間。自動計算。 労使協定が有効であっても変形期間外であればユーザーとの紐づけ不可。 |
実質有効期間To | datetime | 0 | 0 | FALSE | FALSE | この契約をユーザーと紐付けることができる期間 |
業務の種類 | nvarchar | 100 | 0 | FALSE | FALSE | 帳票出力の際に使用する。複数行入力可能。 |
1週間の平均労働時間数 | int | 0 | 0 | FALSE | FALSE | 単位:分。帳票出力用。処理の簡素化のため、カレンダー登録時に計算して保持する。 |
労働時間が48時間を超える週の最長連続週数 | smallint | 0 | 0 | FALSE | FALSE | 帳票出力用。処理の簡素化のため、カレンダー登録時に計算して保持する。 |
対象期間中の労働時間が48時間を超える週数 | smallint | 0 | 0 | FALSE | FALSE | 帳票出力用。処理の簡素化のため、カレンダー登録時に計算して保持する。 |
対象期間中の最も長い連続労働日数 | smallint | 0 | 0 | FALSE | FALSE | 帳票出力用。処理の簡素化のため、カレンダー登録時に計算して保持する。 |
特定期間中の最も長い連続労働日数 | smallint | 0 | 0 | FALSE | FALSE | 帳票出力用。処理の簡素化のため、カレンダー登録時に計算して保持する。 |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
限度時間マスタ
契約データ1件に対して限度時間データ4件が紐付く。限度時間を超えた分の労働時間は、月報の専用項目に計上される。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
契約ID | int | 0 | 0 | TRUE | TRUE | |
限度時間種類 | tinyint | 0 | 0 | TRUE | TRUE | 0:超過時間、1:限度時間(1日を超え3か月以内の期間)、2:限度時間(1年間)、3:60時間超過 |
限度時間 | bigint | 0 | 0 | FALSE | TRUE | TimeSpan.Ticks。 限度時間最大値は「平成10年労働省告示第154号」に定めが有る。 |
期間年 | tinyint | 0 | 0 | FALSE | TRUE | 「1年間」のときのみ1。 それ以外の場合は0 |
期間月 | tinyint | 0 | 0 | FALSE | TRUE | 限度時間計算期間 0~3のいずれか |
期間日 | tinyint | 0 | 0 | FALSE | TRUE | 限度時間計算期間 0以上 1週間=7日といった感じの値を登録。 アプリ側で最大値を28とする。 |
割増率 | decimal | 6 | 4 | FALSE | TRUE | 限度時間種類のなかで、どちらの割増率が高いかを判定するために使う。 25%であれば0.25のように登録する。 代替休暇への振替時に使用する。給与計算には使わない。 |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
休憩時間マスタ
何となく作ってしまって、何となく使っているテーブル。本来は必要ない。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
休憩設定ID | int | 10 | 0 | TRUE | TRUE | |
休憩設定名 | nvarchar | 100 | 0 | FALSE | FALSE | |
更新日 | datetime | -1 | 0 | FALSE | FALSE | |
更新者 | int | 10 | 0 | FALSE | FALSE |
休憩時間詳細マスタ
契約マスタと紐付く。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
休憩設定ID | int | 10 | 0 | TRUE | TRUE | |
休憩詳細ID | int | -1 | 0 | TRUE | TRUE | |
休憩時間開始 | time | 0 | 0 | FALSE | TRUE | 基準となる日の0時0分を起点とした経過時間。 |
休憩時間終了 | time | 0 | 0 | FALSE | TRUE | 基準となる日の0時0分を起点とした経過時間。深夜2時といった登録時は24時間を超えることも有る。 |
強制休憩 | bit | 0 | 0 | FALSE | TRUE | ONである場合、月報作成時に強制的に休憩時間を計上する。 |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
契約特定期間マスタ
1年単位の変形労働時間制の場合のみ使用する。特定期間の設定を保持する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
契約ID | int | 0 | 0 | TRUE | TRUE | |
連番 | int | 0 | 0 | TRUE | TRUE | |
特定期間From | datetime | 0 | 0 | FALSE | TRUE | |
特定期間To | datetime | 0 | 0 | FALSE | TRUE |
契約フレックス時間設定マスタ
契約情報編集画面で入力したコアタイム・フレキシブルタイムの設定を保持しておくテーブル。この値をカレンダー設定時の初期値として使う。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
契約ID | int | 0 | 0 | TRUE | TRUE | |
連番 | int | 0 | 0 | TRUE | TRUE | |
時刻From | time | 0 | 0 | FALSE | TRUE | |
時刻To | time | 0 | 0 | FALSE | TRUE | |
労働義務 | bit | 0 | 0 | FALSE | TRUE | true:コアタイム false:フレキシブルタイム |
休暇設定マスタ
契約毎に「時間休を取得して良いか」「最小利用単位は何ポイントか」「何ポイントごとに使えるか」を定義する。時間休と代替休暇の場合にこのテーブルを参照する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
契約ID | int | 0 | 0 | TRUE | TRUE | |
チケットタイプ | int | 0 | 0 | TRUE | TRUE | |
使用可否 | bit | 0 | 0 | FALSE | TRUE | true:使用可能。時間休や代替休暇に対応していない場合はfalseにする。 |
最小利用ポイント | decimal | 10 | 1 | FALSE | TRUE | 時間休や代替休暇を使うとき、少なくともこの値以上はポイントを使う必要がある。時間休の場合60以上60単位。それ以外の場合は1以上。 |
ポイント利用単位 | bigint | 10 | 1 | FALSE | TRUE | 時間休や代替休暇を使うときの刻み値。時間休の場合60以上60単位。それ以外の場合は原則1 |
他チケットとの連結使用可否 | bit | 0 | 0 | FALSE | FALSE | チケットタイプが代替休暇の場合のみ使用する。それ以外の場合はNULL。代替休暇チケットのポイントが1日または半日に満たない場合、他の休暇チケットと連結して使用して良いかを指定する。 |
更新日 | date | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
カレンダーマスタ
一つの契約に複数件のカレンダーを紐付けられる。所定休日が違う場合や、変形労働時間制で始業時刻が違う場合にカレンダーを切り替えられる。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
カレンダーID | int | 0 | 0 | TRUE | TRUE | |
並び順 | int | 0 | 0 | FALSE | FALSE | |
カレンダー名 | nvarchar | 100 | 0 | FALSE | FALSE | |
契約ID | int | 0 | 0 | FALSE | TRUE | 当カレンダーが依存する契約IDを保持する。 |
特例事業場フラグ | bit | 0 | 0 | FALSE | TRUE | このフラグがONの場合のみ週44hの労働時間を設定できる。また、特例ではない事業場と紐づけできない。 |
更新日 | datetime | -1 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
カレンダー詳細マスタ
1日ごとに労働義務の有無を設定する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
カレンダーID | int | 0 | 0 | TRUE | TRUE | |
カレンダー日付 | datetime | 0 | 0 | TRUE | TRUE | |
日付タイプ | tinyint | 0 | 0 | FALSE | TRUE | 0:平日(労働義務を課す日)、1:法定休日、2:法定外休日(所定休日)、4:未設定(1年単位の変形労働時間制で敢えて指定していないことを示す) |
備考 | nvarchar | 100 | 0 | FALSE | FALSE | 祝日の名称を格納する。 |
更新日 | datetime | -1 | 0 | FALSE | FALSE | |
更新者 | int | -1 | 0 | FALSE | FALSE |
カレンダー所定労働日数マスタ
ある日付を起点とした所定労働日数を保持する。有休付与の際、このテーブルの所定労働日数をもとに付与日数を決める。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
カレンダーID | int | 0 | 0 | TRUE | TRUE | |
有効期間FROM | datetime | 0 | 0 | TRUE | TRUE | この日以降は有効。 複数件該当するときは、この列の値が最大のデータを使う。 |
週所定労働日数 | int | 0 | 0 | FALSE | FALSE | 有休付与数を決定するために使用する。週・年どちら一方への入力が必須。 |
年所定労働日数 | int | 0 | 0 | FALSE | FALSE | 週以外の期間で定められている場合こちらへ入力する。有休付与数を決定するために使用する。週・年どちら一方への入力が必須。 |
残り労働日数 | smallint | 0 | 0 | FALSE | FALSE | 1年単位の変形労働のみ。最初以外の期間について、労働時間を特定せずに、この値を最大値として決めておけば良い。 |
残り総労働時間 | bigint | 0 | 0 | FALSE | FALSE | 1年単位の変形労働のみ。最初以外の期間について、労働時間を特定せずに、この値を最大値として決めておけば良い。 |
カレンダー詳細勤務時間マスタ
カレンダーの1日ごとに労働義務を課す時間を設定する。フレックスタイム制の場合はフレキシブルタイムの設定も格納する。 時間帯の重複はNG。
当テーブルに変更がある場合、カレンダー詳細マスタの更新日時も変化する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
カレンダーID | int | 0 | 0 | TRUE | TRUE | |
カレンダー日付 | datetime | 0 | 0 | TRUE | TRUE | |
連番 | int | 0 | 0 | TRUE | TRUE | 必ず時間帯を昇順に並べた結果に対して連番を振ること。アプリ内実装で連番の並びに依存している。 |
日付変更線 | text | 0 | 0 | FALSE | TRUE | 連番が異なったとしても全て同じ値を格納する。1日3交代のシフト制で勤務時間が1時間重複している場合を想定した場合、必ず日付変更線を跨いで勤務する者が出ることへの対策 |
勤務開始時刻 | time | 0 | 0 | FALSE | TRUE | |
勤務終了時刻 | time | 0 | 0 | FALSE | TRUE | |
所定労働時間(分) | int | 0 | 0 | FALSE | TRUE | 所定労働時間の2倍の時間労働した場合、代休を発生させる。都度計算するのは面倒なので、事前に算出しておく |
労働義務 | bit | 0 | 0 | FALSE | TRUE | true:コアタイム false:フレキシブルタイム |
カレンダー詳細休憩時間マスタ
カレンダーの1日ごとに休憩時間を設定する。カレンダー編集画面の初回起動時に、契約マスタの値をコピーする形で毎日のデータが登録される。
勤務時間の指定が無く、強制休憩の時間だけを指定するというのも利便性の都合から認める。
当テーブルに変更がある場合、カレンダー詳細マスタの更新日時も変化する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
カレンダーID | int | 0 | 0 | TRUE | TRUE | |
カレンダー日付 | datetime | 0 | 0 | TRUE | TRUE | |
連番 | int | 0 | 0 | TRUE | TRUE | |
休憩時間開始 | time | 0 | 0 | FALSE | TRUE | |
休憩時間終了 | time | 0 | 0 | FALSE | TRUE | |
強制休憩 | bit | 0 | 0 | FALSE | TRUE | ONである場合、月報作成時に強制的に休憩時間を計上する。OFFのデータは帳票出力で使う可能性があるが、勤務時間の計算には関与しない。 |
打刻
打刻1回ごとのデータを保持する。システム内で最も件数が多くなる想定。DateTime型を使うため、精度は3ミリ秒単位。実際の運用でキー重複が発生することは無い想定。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
打刻時刻 | datetime | 0 | 0 | TRUE | TRUE | 打刻された日時。丸め処理を行った結果が入る。 |
打刻種別 | tinyint | 1 | 0 | FALSE | TRUE | 打刻タイプ 0:ニュートラル、1:勤務開始、2:勤務終了 、3:日付越え終了、4:休憩開始、5:休憩終了 勤怠管理システムの自作-打刻種別 |
手動入力フラグ | bit | 0 | 0 | FALSE | TRUE | true:打刻修正画面から入力した false:システム日時を使って打刻した |
IPアドレス | varchar | 39 | 0 | FALSE | FALSE | |
ホスト名 | nvarchar | 256 | 0 | FALSE | FALSE | |
打刻時刻控え | datetime | 0 | 0 | FALSE | TRUE | 実際に打刻された日時。丸め処理を行う前の値が入る。 |
仮打刻
月報修正の際に使用する。月報修正画面でユーザーが入力した通りの時間を登録し、当テーブルのデータをもとに月報を作成する。これにより、月報の新規作成・修正はデータを取得元を変えるだけになり、月報作成ロジックは1つで済む。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
打刻時刻 | datetime | 0 | 0 | TRUE | TRUE | |
打刻種別 | tinyint | 0 | 0 | FALSE | TRUE | |
月報ID | int | 0 | 0 | FALSE | TRUE | 訂正データの元になっている月報ID。 月報を削除するとき、この値をもとに仮打刻データも削除する。 |
打刻訂正ワーク
打刻修正画面で使う。画面で入力した値を一旦このテーブルに格納し、データの重複チェックを行う。毎回DBに問い合わせるより処理速度が早くなるはず。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
打刻時刻 | datetime | 0 | 0 | TRUE | TRUE | |
連番 | int | 0 | 0 | TRUE | TRUE | 画面上で入力した時点では削除ON/OFFの同一値を持ったデータが存在し得る。連番を付けることで見分ける。 |
打刻種別 | tinyint | 0 | 0 | FALSE | TRUE | |
手動入力フラグ | bit | 0 | 0 | FALSE | TRUE | |
削除フラグ | bit | 0 | 0 | FALSE | TRUE | 画面上で削除対象としてチェックされたデータ。 |
打刻予約
打刻されたタイミングで同時に更新すべきチケットの情報を登録しておく。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
チケットID | int | -1 | 0 | TRUE | TRUE | |
予約タイプ | tinyint | 0 | 0 | TRUE | TRUE | 1:開始時刻への打刻、2:終了時刻への打刻 |
更新日 | datetime | -1 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
月報
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
月報ID | int | 10 | 0 | TRUE | TRUE | |
対象年 | int | 0 | 0 | FALSE | TRUE | |
対象月 | int | 0 | 0 | FALSE | TRUE | |
ユーザーID | int | 0 | 0 | FALSE | TRUE | |
締日 | datetime | 0 | 0 | FALSE | FALSE | Null以外 = 締め処理が済んでいる。締め済みであれば変更は不可。締め処理の解除機能を搭載するが、通常の運用で解除されることは無いと考えて良い。 |
実労働時間合計 | bigint | 0 | 0 | FALSE | TRUE | 特別計上(有休の買い上げ)、フレックスの労働時間繰越を加えた実働時間。 |
振替前実労働時間合計 | bigint | 0 | 0 | FALSE | TRUE | 純粋な実動時間の合計。 |
給与支払用実働時間合計 | bigint | 0 | 0 | FALSE | TRUE | 「実労働時間合計」と同じ値。給与計算データ出力時には、こちらの値を使う。 |
超過労働時間合計 | bigint | 0 | 0 | FALSE | TRUE | |
深夜労働時間合計 | bigint | 0 | 0 | FALSE | TRUE | |
休日労働時間合計 | bigint | 0 | 0 | FALSE | TRUE | 法定休日に労働した時間。 |
限度時間外労働時間1 | bigint | 0 | 0 | FALSE | TRUE | 労使協定によって定められた限度時間を超えた分。1日を超え3か月以内の期間 |
限度時間外労働時間2 | bigint | 0 | 0 | FALSE | TRUE | 労使協定によって定められた限度時間を超えた分。1年間 |
法定時間外労働2 | bigint | 0 | 0 | FALSE | TRUE | 超過労働が月60時間を超えた分。代替休暇に振り替えた分は含めない。 |
振替前法定時間外労働2 | bigint | 0 | 0 | FALSE | TRUE | 超過労働が月60時間を超えた分。代替休暇に振り替えた分の値も含む。 |
休業時間合計 | bigint | 0 | 0 | FALSE | TRUE | 休業手当の対象となる時間 |
有給チケットポイント合計 | decimal | 10 | 1 | FALSE | TRUE | プラス値 |
非常時払 | bit | 0 | 0 | FALSE | TRUE | 現状、値が入ることは無い。 |
仮計算フラグ | bit | 0 | 0 | FALSE | TRUE | 出勤率計算のために作られたデータであることを示す。 出勤率計算以外の場面では無視しなければならない。 |
更新日 | datetime | -1 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
月報詳細
月報の1日ごとのデータを保持する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
月報ID | int | 0 | 0 | TRUE | TRUE | |
明細ID | int | 0 | 0 | TRUE | TRUE | |
労働日 | datetime | 0 | 0 | FALSE | TRUE | |
勤務開始時刻 | datetime | 0 | 0 | FALSE | FALSE | |
勤務終了時刻 | datetime | 0 | 0 | FALSE | FALSE | |
休憩時間 | time | 0 | 0 | FALSE | FALSE | |
強制休憩 | bit | 0 | 0 | FALSE | TRUE | 新規登録時はtrue。契約マスタに登録された強制休憩の時間帯に従うことを示す。月報を修正するとき、強制休憩時間に従わず、独自の値を入力することも可能。 |
私用時間 | time | 0 | 0 | FALSE | FALSE | 私用外出チケットの時間。 念のため休憩時間とは分けてある。休憩時間と統合してもおそらく問題ない。 |
実労働時間 | time | 0 | 0 | FALSE | FALSE | |
振替前実労働時間 | time | 0 | 0 | FALSE | FALSE | 代休振替前の実働時間。所定労働時間の2倍労働した場合に、実働時間を半分にして代休に振り替えることが有る。「1週間で40時間した」のチェックの際はこちらの値を使う。 |
超過労働時間 | time | 0 | 0 | FALSE | FALSE | |
深夜労働時間 | time | 0 | 0 | FALSE | FALSE | |
休日労働時間 | time | 0 | 0 | FALSE | FALSE | |
休業時間 | time | 0 | 0 | FALSE | FALSE | |
前日からの継続勤務 | bit | 0 | 0 | FALSE | TRUE | True:前日から継続して勤務している。もし、始業時刻後の労働を残業扱いにする場合、このフラグを使って継続勤務か否かを判定する。 |
日付タイプ | tinyint | 1 | 0 | FALSE | TRUE | カレンダー詳細マスタの同名項目の値をコピーする。月報作成時点でのカレンダー設定を保持するために使う。 |
有給休暇ポイント | decimal | 10 | 1 | FALSE | TRUE | 有給休暇として扱った季節休やら代替休暇やら全てのポイントが入る。1ポイント=通常労働時間1分相当。 給与計算システムへの連携に使用する。 |
労働義務 | tinyint | -1 | 0 | FALSE | TRUE | 出勤率の計算に使用する。0:労働義務なし(または労働義務免除)(全労働日から除く)、1:労働義務があり出勤した(出勤したものと見なす)、2:労働義務があり出勤しなかった。1秒でも出勤していれば義務を果たしたとみなす。 |
法定休暇繰越 | bit | 0 | 0 | FALSE | TRUE | 深夜労働で日付が変わったとき、翌日が法定休日であったため、0:00以降を法定休日労働として計上した場合にtrueとなる。翌月の月報を作成する際にこのフラグを参照し、法定休日を勝手にシフトさせないようにする。 |
備考 | varchar | 200 | 0 | FALSE | FALSE | 未使用。作業内容を保持するつもりで用意したが、アプリ側から入力する方法が無い。 |
所定労働時間(分) | int | 0 | 0 | FALSE | TRUE | 月報作成時点での所定労働時間をコピーしておく。集計処理を簡単にするための対策。 |
フレックス労働義務繰越 | bigint | 0 | 0 | FALSE | FALSE | フレックスタイム制の清算期間の最終日である場合値が入る。次の清算期間に繰り越す労働義務。TimeSpan.Ticks。関係ない場合はnullが入る。 清算期間と月報集計期間が必ず一致する保証が無いため、月報テーブルではなく、こちらに値を持たせる。 |
月報チケット
月報とチケットの紐付けデータを保持するテーブル。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
月報ID | int | 0 | 0 | TRUE | TRUE | |
明細ID | int | 0 | 0 | TRUE | TRUE | |
チケットID | int | 0 | 0 | TRUE | TRUE |
月報承認
承認印に相当するデータ。月報の承認申請を行った時点で、本人~最上位承認者まで全員分のデータを生成する。上長が承認・却下したときは既存のデータを更新する。最初に全員分のデータを作成することで、承認印が押されていない状態の枠を簡単に生成できるようになる。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
月報ID | int | 0 | 0 | TRUE | TRUE | |
承認レベル | int | 0 | 0 | TRUE | TRUE | 1:自己承認。2~99:上長承認。 |
承認ユーザーID | int | 0 | 0 | FALSE | TRUE | |
承認者役割 | nvarchar | 10 | 0 | FALSE | TRUE | 画面表示時、押印欄に表示する役割名を取得するためのキー。 承認レベルは一意の想定だが、主キーではないため検索には使わない |
承認フラグ | bit | 0 | 0 | FALSE | FALSE | true:承認、false:却下、null:未確定(承認申請と同時に作ったデータであり、まだ承認・却下されていない) |
承認日時 | datetime | 0 | 0 | FALSE | TRUE | 承認・却下を行った日時。更新日と同じ値になるが、今後も一致し続ける保証が無いため、別の項目に分けている。 |
更新日 | datetime | 0 | 0 | FALSE | FALSE |
月報コメント
月報を却下するときにコメントを登録するために使う。
却下後に再申請されたとき、なぜ却下したのか確認するために使う。
複数回にわたって申請、却下を繰り返すことが有り得るため、承認データとは分離してログのような形式で保持する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
コメントID | int | 0 | 0 | TRUE | TRUE | |
ユーザーID | int | 0 | 0 | FALSE | TRUE | コメントを書いたユーザーのID |
投稿日時 | datetime | 0 | 0 | FALSE | TRUE | |
月報ID | int | 0 | 0 | FALSE | TRUE | 月報を修正するとき、対象の月報IDを付け替える。月報と紐付かなくなることはない。 |
承認者役割 | nvarchar | 10 | 0 | FALSE | TRUE | |
承認フラグ | bit | 0 | 0 | FALSE | FALSE | true:承認、false:却下、null:未確定 |
コメント本文 | nvarchar | 500 | 0 | FALSE | FALSE |
月報詳細集計
項目は月報詳細テーブル+α。日次バッチで作成した月報データを保持する。
出勤率計算時と上長による残業時間閲覧時に使う。月報詳細テーブルにデータが存在する場合、そちらを優先する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
労働日 | datetime | 0 | 0 | TRUE | TRUE | |
勤務開始時刻 | datetime | 0 | 0 | FALSE | FALSE | |
勤務終了時刻 | datetime | 0 | 0 | FALSE | FALSE | |
休憩時間 | time | 0 | 0 | FALSE | FALSE | |
強制休憩 | bit | 0 | 0 | FALSE | TRUE | 新規登録時はtrue。月報を複数回訂正するとき、強制休憩時間を使うか無視するかを判定する。 |
私用時間 | time | 0 | 0 | FALSE | FALSE | 私用外出チケットの時間。 休憩時間と合計して扱う。 休憩時間と統合してもおそらく問題ない。 |
実労働時間 | time | 0 | 0 | FALSE | FALSE | |
振替前実労働時間 | time | 0 | 0 | FALSE | FALSE | 代休振替前の実働時間。所定労働時間の2倍労働した場合に、実働時間を半分にして代休に振り替えることが有る。「1週間で40時間した」のチェックの際はこちらの値を使う。 |
超過労働時間 | time | 0 | 0 | FALSE | FALSE | |
深夜労働時間 | time | 0 | 0 | FALSE | FALSE | |
休日労働時間 | time | 0 | 0 | FALSE | FALSE | |
休業時間 | time | 0 | 0 | FALSE | FALSE | |
前日からの継続勤務 | bit | 0 | 0 | FALSE | TRUE | True:前日から継続して勤務している。もし、始業時刻後の労働を残業扱いにする場合、このフラグを使って継続勤務か否かを判定する。 |
日付タイプ | tinyint | 1 | 0 | FALSE | TRUE | カレンダー詳細マスタの同名項目の値をコピーする。月報作成時点でのカレンダー設定を保持するために使う。 |
有給休暇ポイント | decimal | 10 | 1 | FALSE | TRUE | 有給休暇として扱った季節休やら代替休暇やら全てのポイントが入る。1ポイント=通常労働時間1分相当。 給与計算システムへの連携に使用する。 |
労働義務 | tinyint | -1 | 0 | FALSE | TRUE | 出勤率の計算に使用する。0:労働義務なし(または労働義務免除)(全労働日から除く)、1:労働義務があり出勤した(出勤したものと見なす)、2:労働義務があり出勤しなかった。1秒でも出勤していれば義務を果たしたとみなす。 |
法定休暇繰越 | bit | 0 | 0 | FALSE | TRUE | 深夜労働で日付が変わったとき、翌日が法定休日であったため、0:00以降を法定休日労働として計上した場合にtrueとなる。翌月の月報を作成する際にこのフラグを参照し、法定休日を勝手にシフトさせないようにする。 |
備考 | varchar | 200 | 0 | FALSE | FALSE | 未使用。作業内容を保持するつもりで用意したが、アプリ側から入力する方法が無い。 |
所定労働時間(分) | int | 0 | 0 | FALSE | TRUE | 月報作成時点での所定労働時間をコピーしておく。集計処理を簡単にするための対策。 |
フレックス労働義務繰越 | bigint | 0 | 0 | FALSE | FALSE | フレックスタイム制の清算期間の最終日である場合、値が入る。次の清算期間に繰り越す労働義務。TimeSpan.Ticks。関係ない場合はnullが入る。 清算期間と月報集計期間が必ず一致する保証が無いため、月報テーブルではなく、こちらに値を持たせる。 |
対象年 | int | 0 | 0 | FALSE | TRUE | 当テーブル独自。 月報集計時に検索しやすくする。 |
対象月 | int | 0 | 0 | FALSE | TRUE | 当テーブル独自。 月報集計時に検索しやすくする。 |
月報元データワーク
月報作成処理で使うワークテーブル。打刻データや契約データを抽出して、一旦このテーブルに書き込む。このテーブルを使うことで処理が単純になるはず・・・
打刻データ1件ごとに、打刻された時点の契約情報を紐付ける。月報作成ロジックでは、このデータを使って労働時間を計算する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
担当範囲FROM | datetime | 0 | 0 | TRUE | TRUE | |
担当範囲TO | datetime | 0 | 0 | FALSE | FALSE | |
連番 | int | 0 | 0 | TRUE | TRUE | |
労働時間計上日 | datetime | 0 | 0 | FALSE | TRUE | |
日付タイプ | tinyint | 0 | 0 | FALSE | TRUE | |
事業場ID | int | 0 | 0 | FALSE | TRUE | |
契約ID | int | 0 | 0 | FALSE | TRUE | |
契約開始日 | datetime | 0 | 0 | FALSE | TRUE | |
契約終了日 | datetime | 0 | 0 | FALSE | FALSE | |
カレンダーID | int | 0 | 0 | FALSE | TRUE | |
日付変更線 | time | 0 | 0 | FALSE | TRUE | |
解釈ロジック | nvarchar | 100 | 0 | FALSE | TRUE | |
事業場解釈ロジック | nvarchar | 100 | 0 | FALSE | TRUE | |
締日 | tinyint | 0 | 0 | FALSE | TRUE | |
勤務開始時刻 | time | 0 | 0 | FALSE | TRUE | |
勤務終了時刻 | time | 0 | 0 | FALSE | TRUE | |
休憩設定ID | int | 0 | 0 | FALSE | FALSE | |
所定労働時間(分) | int | 0 | 0 | FALSE | TRUE | |
法定休日変動 | tinyint | 0 | 0 | FALSE | TRUE | |
超過労働起算日 | datetime | 0 | 0 | FALSE | TRUE | |
起算曜日 | tinyint | 0 | 0 | FALSE | TRUE | |
変形労働時間フラグ | bit | 0 | 0 | FALSE | TRUE | |
同日中契約件数 | int | 0 | 0 | FALSE | TRUE | |
分岐ID | nvarchar | 100 | 0 | FALSE | TRUE | デバッグ用 |
先頭日付変更線 | time | 0 | 0 | FALSE | TRUE | |
本日開始_契約開始日 | datetime | 0 | 0 | FALSE | FALSE | |
本日開始_日付変更線 | time | 0 | 0 | FALSE | FALSE | |
打刻時刻 | datetime | 0 | 0 | FALSE | FALSE | |
打刻種別 | tinyint | 0 | 0 | FALSE | FALSE | |
労働時間強制計上フラグ | int | 0 | 0 | FALSE | FALSE | |
週カウント | int | 0 | 0 | FALSE | FALSE |
チケット
有休をはじめとした休暇の権利や消費を管理するデータ。遅刻や早退の届出書に相当するデータも含む。
勤怠管理システムの自作-チケット
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
チケットID | int | -1 | 0 | TRUE | TRUE | |
ユーザーID | int | 0 | 0 | FALSE | TRUE | |
チケットタイプ | int | 0 | 0 | FALSE | TRUE | |
ポイント | decimal | 10 | 5 | FALSE | TRUE | 通常のチケットは小数1位まで(半休)、調整チケットは小数5位まで入る。調整時に誤差を積み重ねてもポイントに影響が出にくいようにしている。プラス値は権利、マイナス値は権利の消費を示す。1pt=1分。最大値は24時間*60分→1440pt程度。 |
発効日 | datetime | 0 | 0 | FALSE | FALSE | チケットの存在が公表された日。チケットの使用が宣言された日。「3月20日に、4月1日から6か月間有効な定期券を買った」ってときの3月20日。 |
有効期限FROM | datetime | 0 | 0 | FALSE | FALSE | |
有効期限TO | datetime | 0 | 0 | FALSE | FALSE | |
締処理日 | datetime | 0 | 0 | FALSE | FALSE | 月報締め処理日。既に給与計算に使われているだろうから、変更不可。 |
利用日 | datetime | 0 | 0 | FALSE | FALSE | チケットを使用する予定の日、または使用した日。 |
利用時間FROM | datetime | 0 | 0 | FALSE | FALSE | 実際に使用した時間。システム内ではこちらを使う。 |
利用時間TO | datetime | 0 | 0 | FALSE | FALSE | |
申請時間FROM | datetime | 0 | 0 | FALSE | FALSE | 申請の時に記入した時間。申請のときだけ使う。ユーザーが参考程度に見る値。 |
申請時間TO | datetime | 0 | 0 | FALSE | FALSE | |
権利フラグ | bit | 0 | 0 | FALSE | TRUE | True:権利チケットである。 |
取消フラグ | bit | 1 | 0 | FALSE | TRUE | True:取り消されている。代休振替・代替休暇振替チケットを取り消したときにtrueになる。代休を「使用しない」 という意思表示の証として使う。 |
有給フラグ | bit | 0 | 0 | FALSE | TRUE | True:有給である |
労働義務有無フラグ | bit | 0 | 0 | FALSE | TRUE | True:労働義務あり。 Falseの場合は有休付与の計算時に「全労働日」から除く。 Falseには代休・代替休暇・特別休暇・休業(天災やストライキ)・公民権の行使などが該当する。 |
出勤扱い | bit | 0 | 0 | FALSE | TRUE | 特別休暇の場合に使う。有休付与時の出勤率計算で「労働したものとみなす」チケットであればtrue。それ以外はfalse。 |
所定労働時間(分) | int | 0 | 0 | FALSE | FALSE | 時間休の取得日数算出時に使用する。時間休取得時に紐付いている契約の所定労働時間。 |
メモ | nvarchar | 200 | 0 | FALSE | FALSE | |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
チケット階層
チケットの親子関係を保持する。閉包テーブルという仕組みを使ってみた。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
親チケットID | int | 0 | 0 | TRUE | TRUE | |
子グループID | int | 0 | 0 | TRUE | TRUE | |
深度 | int | 0 | 0 | FALSE | TRUE |
チケットテンプレート
チケット手動付与機能用。事前にテンプレートとしてデータを作っておく。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
テンプレートチケットID | int | -1 | 0 | TRUE | TRUE | |
ユーザーID | int | 0 | 0 | FALSE | FALSE | |
チケットタイプ | int | 0 | 0 | FALSE | TRUE | |
ポイント | decimal | 10 | 5 | FALSE | TRUE | チケットテーブルに合わせた桁数。実際には小数1位までしか入らない。 |
発効日 | datetime | 0 | 0 | FALSE | FALSE | チケットの存在が公表された日。チケットの使用が宣言された日。「3月20日に、4月1日から6か月間有効な定期券を買った」ってときの3月20日。 |
有効期限FROM | datetime | 0 | 0 | FALSE | FALSE | |
有効期限TO | datetime | 0 | 0 | FALSE | FALSE | |
締処理日 | datetime | 0 | 0 | FALSE | FALSE | 月報締め処理日。既に給与計算に使われているだろうから、変更不可。 |
利用日 | datetime | 0 | 0 | FALSE | FALSE | チケットを使用する予定の日、または使用した日。 |
利用時間FROM | datetime | 0 | 0 | FALSE | FALSE | 実際に使用した時間。システム内ではこちらを使う。 |
利用時間TO | datetime | 0 | 0 | FALSE | FALSE | |
申請時間FROM | datetime | 0 | 0 | FALSE | FALSE | 申請の時に記入した時間。申請のときだけ使う。ユーザーが参考程度に見る値。 |
申請時間TO | datetime | 0 | 0 | FALSE | FALSE | |
権利フラグ | bit | 0 | 0 | FALSE | TRUE | True:権利チケットである |
取消フラグ | bit | 1 | 0 | FALSE | TRUE | True:取り消されている。代休振替・代替休暇振替チケットを取り消したときにtrueになる。代休を「使用しない」 という意思表示の証として使う。 |
有給フラグ | bit | 0 | 0 | FALSE | TRUE | True:有給である |
労働義務有無フラグ | bit | 0 | 0 | FALSE | TRUE | True:労働義務あり。 Falseの場合は有休付与の計算時に「全労働日」から除く。 Falseには代休・代替休暇・特別休暇・休業(天災やストライキ)・公民権の行使などが該当する。 |
出勤扱い | bit | 0 | 0 | FALSE | TRUE | 特別休暇の場合に使う。有休付与時の出勤率計算で「労働したものとみなす」チケットであればtrue。それ以外はfalse。 |
所定労働時間(分) | int | 0 | 0 | FALSE | FALSE | 時間休の取得日数算出時に使用する。時間休取得時に紐付いている契約の所定労働時間。 |
メモ | nvarchar | 200 | 0 | FALSE | FALSE | |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE | |
チケットテンプレート名 | nvarchar | 100 | 0 | FALSE | TRUE | ユーザーがテンプレートを識別するための名前。 |
有効期間年 | smallint | 0 | 0 | FALSE | TRUE | テンプレートをもとにチケットを作ったとき、有効期限を決めるための値。有効期限Fromからn年後を有効期限Toとする。実務上は0~2程度の値しか入らない想定。 |
有効期間月 | smallint | 0 | 0 | FALSE | TRUE | テンプレートをもとにチケットを作ったとき、有効期限を決めるための値。 |
有効期間日 | smallint | 0 | 0 | FALSE | TRUE | テンプレートをもとにチケットを作ったとき、有効期限を決めるための値。 |
チケット予約
レイアウトはチケットテーブルと同じ。
打刻によって利用時間FromやToに値が入る。FromTo両方に値が入ると、正式なチケットになり、チケットテーブルへ移る。
階層構造を持たない。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
チケットID | int | -1 | 0 | TRUE | TRUE | |
ユーザーID | int | 0 | 0 | FALSE | TRUE | |
チケットタイプ | int | 0 | 0 | FALSE | TRUE | |
ポイント | decimal | 10 | 5 | FALSE | TRUE | チケットテーブルに合わせた桁数。実際には小数1位までしか入らない。 |
発効日 | datetime | 0 | 0 | FALSE | FALSE | チケットの存在が公表された日。 |
有効期限FROM | datetime | 0 | 0 | FALSE | FALSE | |
有効期限TO | datetime | 0 | 0 | FALSE | FALSE | |
締処理日 | datetime | 0 | 0 | FALSE | FALSE | 月報締め処理日。 |
利用日 | datetime | 0 | 0 | FALSE | FALSE | チケットを使用する予定の日、または使用した日。 |
利用時間FROM | datetime | 0 | 0 | FALSE | FALSE | 実際に使用した時間。システム内ではこちらを使う。 |
利用時間TO | datetime | 0 | 0 | FALSE | FALSE | |
申請時間FROM | datetime | 0 | 0 | FALSE | FALSE | 申請の時に記入した時間。申請のときだけ使う。ユーザーが参考程度に見る値。 |
申請時間TO | datetime | 0 | 0 | FALSE | FALSE | |
権利フラグ | bit | 0 | 0 | FALSE | TRUE | True:権利チケットである |
取消フラグ | bit | 1 | 0 | FALSE | TRUE | True:取り消されている |
有給フラグ | bit | 0 | 0 | FALSE | TRUE | True:有給である |
労働義務有無フラグ | bit | 0 | 0 | FALSE | TRUE | True:労働義務あり |
所定労働時間(分) | int | 0 | 0 | FALSE | FALSE | 時間休の取得日数算出時に使用する。時間休取得時に紐付いている契約の所定労働時間。 |
メモ | nvarchar | 200 | 0 | FALSE | FALSE | |
更新日 | datetime | 0 | 0 | FALSE | FALSE | |
更新者 | int | 0 | 0 | FALSE | FALSE |
チケット手動付与履歴
チケットを手動で付与した履歴を保持する。このデータをもとに、既に付与済みかどうかを見分ける。チケットを付与した後に取り消したい場合、このデータからチケットを追跡して削除する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
チケットID | int | 0 | 0 | TRUE | TRUE | 付与した結果発生したチケットID |
テンプレートチケットID | int | 0 | 0 | FALSE | TRUE | 手動付与の際に使用したチケットテンプレートのID |
チケット付与日 | datetime | 0 | 0 | FALSE | TRUE | チケットを付与した際の基準日 |
付与枚数 | int | 0 | 0 | FALSE | TRUE | 同時に付与した枚数。チケットを集計しても良いのだが、履歴を表示する都合上、ここで持った方が簡単だから。 |
ユーザーID | int | 0 | 0 | FALSE | TRUE | チケットの付与対象になったユーザーID。処理を簡単にするため、ここで値を保持する。 |
有休付与実績
ユーザーマスタと紐付く。ユーザーの登録時点で6か月後の付与予定を書き込む。それ以降は有休の付与を行う度に値を更新する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | |
起算日 | datetime | -1 | 0 | FALSE | TRUE | 出勤率計算時に使用するカウント開始日 |
付与予定日 | datetime | -1 | 0 | FALSE | FALSE | 次回の有休付与日。今回出勤率不足により付与されない場合も、有休が発生したであろう日付を書き込む。 |
付与可能性 | tinyint | -1 | 0 | FALSE | TRUE | 未使用 |
出勤日確定日付 | datetime | -1 | 0 | FALSE | FALSE | 未使用 |
チケット付与済 | bit | 0 | 0 | FALSE | TRUE | |
チケット繰越済 | bit | 0 | 0 | FALSE | TRUE | 有休チケットの繰り越しが完了しているかどうか。付与予定日に繰り越しが行われる。バッチが途中で失敗し再実行した場合に多重処理を防ぐための工夫。 |
出勤率 | decimal | 3 | 1 | FALSE | FALSE | 未使用 |
有休付与日数マスタ
有給休暇の付与日数を管理するテーブル。
このテーブルは法律改正時のみ変更される。ユーザーは操作不可。
当システムにおいて「有給休暇」とは労働基準法で最低限与えるように定められている日数だけを指します。
法律の要件を上回る分の休暇は「季節休暇」という名前で管理します。
勤怠管理システムの自作-チケットの種類
※設計ミス
法改正により有休付与日数が変わったとき、適切にデータを書き換えるタイミングがありません。「データの有効期間」を示すカラムを持たせておくべきでした。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
付与日数定義ID | int | 0 | 0 | TRUE | TRUE | |
継続勤務月数 | int | -1 | 0 | TRUE | TRUE | |
週所定労働日数 | int | -1 | 0 | TRUE | TRUE | |
年所定労働日数From | int | -1 | 0 | FALSE | FALSE | 週以外の期間によって労働日数が定められている場合に使用する。この列は飾り。ソース内で日付→週に変換して検索する |
年所定労働日数To | int | -1 | 0 | FALSE | FALSE | |
付与日数 | int | -1 | 0 | FALSE | TRUE |
監視設定マスタ
月報の実働時間や残業時間が一定の数値に達した場合にアラートを発するための設定。バッチ処理内でこのテーブルの値を参照する。アラートが発生した場合、通知テーブルにデータを登録する。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | 監視者のユーザーIDを持つ |
監視対象 | int | 0 | 0 | TRUE | TRUE | どんな項目を監視するかを持つ |
境界値 | decimal | 20 | 1 | TRUE | TRUE | |
部下のみ | bit | 0 | 0 | FALSE | TRUE | true:監視者が属するグループと、配下のグループに属するユーザーのみを対象に監視する。 false:全ユーザーを対象に監視する。 |
通知
システム内で発生した通知を保持しておくテーブル。
月報が却下された場合の通知や、労働時間が一定値を超えた場合のアラート通知などが入る。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
ユーザーID | int | 0 | 0 | TRUE | TRUE | 通知を受け取る人 |
監視対象 | int | 0 | 0 | TRUE | TRUE | コード値を保持 |
境界値 | decimal | 20 | 1 | TRUE | TRUE | 労働時間が40時間を超えた場合であれば「40」の数値が入る。 |
参照先ID | int | 0 | 0 | TRUE | TRUE | 通知の元になったユーザーID(勤務時間アラート時)、月報ID(却下時)。アプリ内でうまい具合に解釈する。 |
対象年 | int | 0 | 0 | TRUE | TRUE | 勤務時間アラートの元になった月報の年 |
対象月 | int | 0 | 0 | TRUE | TRUE | 勤務時間アラートの元になった月報の月。1年間の集計である場合は0 |
通知日時 | datetime | 0 | 0 | FALSE | TRUE | 通知データが登録された日時。複数の通知で同じ値になる場合がある。 |
タイトル | nvarchar | 100 | 0 | FALSE | TRUE | 通知のタイトル、メールの件名として使う文字列 |
本文 | nvarchar | 1000 | 0 | FALSE | TRUE | 通知の本文 |
参照先機能 | int | 0 | 0 | FALSE | FALSE | 参照先画面を判定するための値。例えば月報が却下された場合の通知であれば、月報参照画面と対応するIDを持つ。 |
既読フラグ | bit | 0 | 0 | FALSE | TRUE | true:既読 |
標準産業分類
総務省が公開している日本標準産業分類のデータ。事業場の入力時に参照する。労働基準監督署へ提出する書類に記載する値として使う。
論理名 | 型 | 桁 | 小数桁 | PK | Not Null | 備考 |
---|---|---|---|---|---|---|
改定番号 | int | 0 | 0 | TRUE | TRUE | 改定番号が最大のデータのみを取得する。 |
大分類コード | nvarchar | 5 | 0 | TRUE | TRUE | |
中分類コード | nvarchar | 5 | 0 | TRUE | TRUE | |
小分類コード | nvarchar | 5 | 0 | TRUE | TRUE | |
細分類コード | nvarchar | 5 | 0 | TRUE | TRUE | |
項目名 | nvarchar | 100 | 0 | FALSE | FALSE |