75 lines
2.7 KiB
SQL
75 lines
2.7 KiB
SQL
-- =============================================================================
|
|
-- 勤怠休暇管理システム(サブシステム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
|
|
);
|
|
|
|
|
|
-- 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
|
|
);
|
|
|
|
|
|
-- 3. HOLIDAY_CALENDAR(休日カレンダー)
|
|
-- 祝日のみ列挙。土日は曜日判定で処理。
|
|
CREATE TABLE HOLIDAY_CALENDAR (
|
|
HOLIDAY_DATE CHAR(8) NOT NULL PRIMARY KEY,
|
|
DESCRIPTION VARCHAR(50)
|
|
);
|
|
|
|
|
|
-- 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)
|
|
);
|