diff --git a/README.md b/README.md index 917c449..8c24b38 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ production/ ├── sub/ # 共通サブプログラム ├── cpy/ # COPY書式ファイル(レコード定義・連絡領域) ├── bin/ # 実行ファイル(.exe)+サブプログラムDLL(.dll) +├── ddl/ # DB2スキーマ定義(DDL) ├── design/ # サブシステム全体設計書 ├── 詳細設計書/ # 詳細設計ドキュメント └── 使用資源一覧/ # 使用資源一覧(COPY・CALL・I/Oファイル・DBテーブル) diff --git a/ddl/schema_kin.sql b/ddl/schema_kin.sql new file mode 100644 index 0000000..bece146 --- /dev/null +++ b/ddl/schema_kin.sql @@ -0,0 +1,97 @@ +-- ============================================================================= +-- 勤怠休暇管理システム(サブシステムA)DBスキーマ +-- 対象DB2: DB2 for z/OS +-- ローカル開発: SQLite(型宣言はDB2準拠、SQLiteが許容する範囲で記述) +-- ============================================================================= + +-- 1. EMP_MASTER(社員マスタ) +-- 全社員の基本情報。サブシステムAでは参照のみ。 +CREATE TABLE EMP_MASTER ( + EMP_ID CHAR(8) NOT NULL PRIMARY KEY, + DEPT_ID CHAR(4) NOT NULL, + EMP_NAME VARCHAR(50) NOT NULL, + STATUS CHAR(1) NOT NULL +); + +INSERT INTO EMP_MASTER VALUES ('EMP00001', 'D001', '山田太郎', '1'); +INSERT INTO EMP_MASTER VALUES ('EMP00002', 'D002', '鈴木花子', '1'); +INSERT INTO EMP_MASTER VALUES ('EMP00009', 'D003', '佐藤健一', '9'); +INSERT INTO EMP_MASTER VALUES ('EMP00010', 'D001', '田中実', '1'); + +-- 2. LEAVE_RECORDS(休暇申請記録) +-- 休暇申請の生データ。取消はDELETEで物理削除。 +CREATE TABLE LEAVE_RECORDS ( + APPLICATION_ID INTEGER NOT NULL PRIMARY KEY, + EMP_ID CHAR(8) NOT NULL, + LEAVE_TYPE CHAR(2) NOT NULL, + START_DATE CHAR(8) NOT NULL, + START_TIME CHAR(4) NOT NULL, + END_DATE CHAR(8) NOT NULL, + END_TIME CHAR(4) NOT NULL, + STATUS CHAR(1) NOT NULL +); + +INSERT INTO LEAVE_RECORDS VALUES (1, 'EMP00001', '01', '20260615', '0900', '20260616', '1800', '1'); +INSERT INTO LEAVE_RECORDS VALUES (2, 'EMP00002', '02', '20260617', '0900', '20260617', '1200', '1'); +INSERT INTO LEAVE_RECORDS VALUES (3, 'EMP00001', '04', '20260620', '0900', '20260620', '1800', '9'); + +-- 3. HOLIDAY_CALENDAR(休日カレンダー) +-- 祝日のみ列挙。土日は曜日判定で処理。 +CREATE TABLE HOLIDAY_CALENDAR ( + HOLIDAY_DATE CHAR(8) NOT NULL PRIMARY KEY, + DESCRIPTION VARCHAR(50) +); + +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260101', '元日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260112', '成人の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260211', '建国記念の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260320', '春分の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260429', '昭和の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260503', '憲法記念日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260504', 'みどりの日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260505', 'こどもの日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260720', '海の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260811', '山の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260921', '敬老の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260922', '国民の休日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260923', '秋分の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20261012', '体育の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20261103', '文化の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20261123', '勤労感謝の日'); + +-- 4. SICK_LEAVE_RATE(病欠控除率) +-- 全社員共通の病欠控除率。 +CREATE TABLE SICK_LEAVE_RATE ( + LEAVE_TYPE CHAR(2) NOT NULL PRIMARY KEY, + DEDUCTION_RATE DECIMAL(3,2) NOT NULL +); + +-- 5. DAILY_RECORDS(日別勤怠記録) +-- 1社員1日の勤怠情報。出勤日のみレコード存在。 +CREATE TABLE DAILY_RECORDS ( + EMP_ID CHAR(8) NOT NULL, + TARGET_DATE CHAR(8) NOT NULL, + TIME_IN CHAR(4) NOT NULL, + TIME_OUT CHAR(4) NOT NULL, + ANNUAL_LEAVE_H DECIMAL(6,1) NOT NULL, + PERSONAL_LEAVE_H DECIMAL(6,1) NOT NULL, + OFFICIAL_LEAVE_H DECIMAL(6,1) NOT NULL, + SICK_LEAVE_H DECIMAL(6,1) NOT NULL, + UNAPPROVED_ABSENT_H DECIMAL(6,1) NOT NULL, + UPDATED_AT TIMESTAMP NOT NULL, + PRIMARY KEY (EMP_ID, TARGET_DATE) +); + +-- 6. MONTHLY_ABSENCE(月次統計) +-- DAILY_RECORDSの月次集計サマリ。 +CREATE TABLE MONTHLY_ABSENCE ( + EMP_ID CHAR(8) NOT NULL, + YEAR_MONTH CHAR(6) NOT NULL, + ANNUAL_LEAVE_H DECIMAL(6,1) NOT NULL, + PERSONAL_LEAVE_H DECIMAL(6,1) NOT NULL, + OFFICIAL_LEAVE_H DECIMAL(6,1) NOT NULL, + SICK_LEAVE_H DECIMAL(6,1) NOT NULL, + UNAPPROVED_ABSENT_H DECIMAL(6,1) NOT NULL, + UPDATED_AT TIMESTAMP NOT NULL, + PRIMARY KEY (EMP_ID, YEAR_MONTH) +); diff --git a/ddl/schema_zan.sql b/ddl/schema_zan.sql new file mode 100644 index 0000000..13ab519 --- /dev/null +++ b/ddl/schema_zan.sql @@ -0,0 +1,31 @@ +-- ============================================================================= +-- 残業統計管理システム(サブシステムB)DBスキーマ +-- 対象DB2: DB2 for z/OS +-- ローカル開発: SQLite(型宣言はDB2準拠、SQLiteが許容する範囲で記述) +-- ============================================================================= + +-- 1. OVT_APPLICATIONS(個別加班申請テーブル) +-- 1件=1回の残業申請。STATUS=9で取消。 +CREATE TABLE OVT_APPLICATIONS ( + APPL_ID CHAR(8) NOT NULL PRIMARY KEY, + EMP_ID CHAR(8) NOT NULL, + APPL_DATE CHAR(8) NOT NULL, + OVT_TYPE CHAR(1) NOT NULL, + START_TIME CHAR(4) NOT NULL, + END_TIME CHAR(4) NOT NULL, + OVT_HOURS DECIMAL(4,1) NOT NULL, + STATUS CHAR(1) NOT NULL, + UPDATED_AT TIMESTAMP NOT NULL +); + +-- 2. OVT_MONTHLY(月次集計テーブル) +-- 社員別・年月別・種別別の残業時間集計。 +CREATE TABLE OVT_MONTHLY ( + EMP_ID CHAR(8) NOT NULL, + YEAR_MONTH CHAR(6) NOT NULL, + OVT_TYPE CHAR(1) NOT NULL, + OVT_HOURS DECIMAL(6,1) NOT NULL, + OVT_COUNT INTEGER NOT NULL, + UPDATED_AT TIMESTAMP NOT NULL, + PRIMARY KEY (EMP_ID, YEAR_MONTH, OVT_TYPE) +);