-- https://www.phpmyadmin.net/
--
-- 主機： 127.0.0.1
-- 產生時間： 2025-05-29 08:16:12
-- 伺服器版本： 10.4.32-MariaDB
-- PHP 版本： 8.0.30

START TRANSACTION;



--
-- 資料庫： `nsysu_salary`
--

-- --------------------------------------------------------

--
-- 資料表結構 `class_schedules`
--

CREATE TABLE `class_schedules` (
  `class_id` int(11) NOT NULL,
  `employee_id` int(11) NOT NULL,
  `class_name` varchar(100) NOT NULL COMMENT '課名',
  `class_hours` decimal(5,2) DEFAULT NULL COMMENT '時數',
  `class_day` date DEFAULT NULL COMMENT '上課日期',
  `start_time` time DEFAULT NULL COMMENT '開始時間',
  `end_time` time DEFAULT NULL COMMENT '結束時間',
  `hourly_fee` int(11) DEFAULT NULL COMMENT '鐘點費',
  `overtime_rate` decimal(10,2) DEFAULT NULL COMMENT '加班1.34',
  `overtime_rate_167` decimal(10,2) DEFAULT NULL COMMENT '加班1.67',
  `is_recurring` tinyint(1) DEFAULT 0 COMMENT '是否為周期性會議',
  `recurrence_type` varchar(30) DEFAULT NULL COMMENT '周期類型ENUM(daily,weekly,monthly,custom)',
  `recurrence_pattern` varchar(100) DEFAULT NULL COMMENT '周期模式(例如: 每週一三五/每月1號/每月第一個星期一)',
  `recurrence_end_date` date DEFAULT NULL COMMENT '週期結束日期',
  `slot_name` varchar(100) DEFAULT NULL COMMENT '時段名稱',
  `class_remark` varchar(255) DEFAULT NULL COMMENT '備註',
  `root_id` int(11) DEFAULT 0 COMMENT 'class_id-表頭',
  `create_date` datetime DEFAULT current_timestamp() COMMENT '建檔日期',
  `update_date` datetime DEFAULT NULL COMMENT '更新日期',
  `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人員'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- 資料表結構 `insurance`
--

CREATE TABLE `insurance` (
  `insurance_id` int(11) NOT NULL,
  `employee_id` int(11) NOT NULL,
  `insurance_date` date NOT NULL COMMENT '投保日期',
  `salary` int(11) DEFAULT 0 COMMENT '投保薪資',
  `health_insurance_employer` int(11) DEFAULT 0 COMMENT '健保公提金',
  `labor_insurance_employer` int(11) DEFAULT 0 COMMENT '勞保公提金',
  `health_insurance_employee` int(11) DEFAULT 0 COMMENT '健保費',
  `health_insurance_dependent` int(11) DEFAULT 0 COMMENT '眷屬健保費',
  `labor_insurance_employee` int(11) DEFAULT 0 COMMENT '勞保費',
  `retirement_fund` int(11) DEFAULT NULL COMMENT '勞退金6%',
  `create_date` datetime DEFAULT current_timestamp() COMMENT '建檔日期',
  `update_date` datetime DEFAULT NULL COMMENT '更新日期',
  `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人員'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- 資料表結構 `log_use`
--

CREATE TABLE `log_use` (
  `rid` int(11) NOT NULL,
  `codeNo` varchar(50) DEFAULT NULL COMMENT '程式代碼',
  `remark` varchar(500) DEFAULT NULL COMMENT '備註',
  `user_ip` varchar(250) DEFAULT NULL COMMENT '連線ip',
  `user_id` int(11) DEFAULT NULL COMMENT '使用者ID',
  `create_date` datetime DEFAULT current_timestamp() COMMENT '建檔日期'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='使用記錄表';

-- --------------------------------------------------------

--
-- 資料表結構 `monthly_settlement`
--

CREATE TABLE `monthly_settlement` (
  `monthly_id` int(11) NOT NULL COMMENT '主鍵ID',
  `settlement_date` date NOT NULL COMMENT '結算日期',
  `employee_id` int(11) NOT NULL COMMENT '員工ID',
  `employeeNo` varchar(20) NOT NULL COMMENT '員工編號',
  `employeeName` varchar(50) DEFAULT NULL COMMENT '員工姓名',
  `tot_salary` int(11) DEFAULT 0 COMMENT '總薪資',
  `tot_hour` decimal(10,2) DEFAULT NULL COMMENT '總時數',
  `last_salary` decimal(10,2) DEFAULT NULL COMMENT '基本薪資',
  `labor_insurance_employer` int(11) DEFAULT 0 COMMENT '雇主勞保負擔',
  `health_insurance_employer` int(11) DEFAULT 0 COMMENT '雇主健保負擔',
  `labor_insurance_employee` int(11) DEFAULT 0 COMMENT '員工勞保負擔',
  `health_insurance_employee` int(11) DEFAULT 0 COMMENT '員工健保負擔',
  `health_insurance_dependent` int(11) DEFAULT 0 COMMENT '眷屬健保費',
  `retirement_fund` int(11) DEFAULT 0 COMMENT '退休金提撥',
  `net_salary` int(11) DEFAULT 0 COMMENT '淨薪資',
  `update_date` datetime DEFAULT NULL COMMENT '更新日期',
  `create_date` datetime DEFAULT current_timestamp() COMMENT '建檔日期',
  `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人員'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='員工資月結檔';

-- --------------------------------------------------------

--
-- 資料表結構 `sql_err`
--

CREATE TABLE `sql_err` (
  `id` int(11) NOT NULL COMMENT '主鍵，自動遞增',
  `sql_msg` text NOT NULL COMMENT 'SQL 錯誤發生時的 SQL 語句',
  `sql_err` int(11) NOT NULL COMMENT 'SQL 錯誤代碼',
  `sql_errmsg` text NOT NULL COMMENT 'SQL 錯誤訊息',
  `PHP_SELF` varchar(255) NOT NULL COMMENT '執行發生錯誤的 PHP 檔案',
  `REQUEST_URI` varchar(255) NOT NULL COMMENT '發送請求的 URI',
  `REQUEST` text NOT NULL COMMENT '完整的請求參數 ($_REQUEST)',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '記錄錯誤發生時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='SQL 錯誤日誌記錄表';

-- --------------------------------------------------------

--
-- 資料表結構 `system_logs`
--

CREATE TABLE `system_logs` (
  `log_id` int(11) NOT NULL COMMENT '紀錄ID',
  `user_id` int(11) DEFAULT NULL COMMENT '操作人員ID',
  `action` varchar(100) NOT NULL COMMENT '操作動作',
  `target_table` varchar(100) DEFAULT NULL COMMENT '目標資料表',
  `target_id` int(11) DEFAULT NULL COMMENT '目標記錄ID',
  `action_detail` text DEFAULT NULL COMMENT '操作詳情',
  `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP位址',
  `action_time` datetime DEFAULT current_timestamp() COMMENT '操作時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系統操作紀錄';

-- --------------------------------------------------------

--
-- 資料表結構 `system_news`
--

CREATE TABLE `system_news` (
  `news_id` int(11) NOT NULL COMMENT '公告編號',
  `news_title` varchar(255) NOT NULL COMMENT '公告標題',
  `news_content` text NOT NULL COMMENT '公告內容',
  `publish_date` datetime DEFAULT NULL COMMENT '發佈日期',
  `publish_unit` varchar(255) DEFAULT NULL COMMENT '發佈單位',
  `attachment_url` varchar(999) DEFAULT NULL COMMENT '附件下載URL',
  `remove_date` datetime DEFAULT NULL COMMENT '下架日期',
  `update_date` datetime DEFAULT NULL COMMENT '更新日期',
  `create_date` datetime DEFAULT current_timestamp() COMMENT '建檔日期',
  `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人員'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系統公告表';

-- --------------------------------------------------------

--
-- 資料表結構 `time_slots`
--

CREATE TABLE `time_slots` (
  `slot_id` int(11) NOT NULL COMMENT '時段ID',
  `slot_name` varchar(100) NOT NULL COMMENT '時段名稱',
  `start_time` time NOT NULL COMMENT '開始時間',
  `end_time` time NOT NULL COMMENT '結束時間',
  `update_date` datetime DEFAULT NULL COMMENT '更新日期',
  `create_date` datetime DEFAULT current_timestamp() COMMENT '建檔日期',
  `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人員'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='標準預約時段定義';

-- --------------------------------------------------------

--
-- 資料表結構 `vacation_payments`
--

CREATE TABLE `vacation_payments` (
  `vacation_id` int(11) NOT NULL,
  `employee_id` int(11) NOT NULL COMMENT '員工id',
  `year_start` date NOT NULL COMMENT '年度開始',
  `year_end` date NOT NULL COMMENT '年度結束',
  `total_hours` decimal(10,2) NOT NULL COMMENT '上課總時數',
  `vacation_days` decimal(10,2) NOT NULL COMMENT '特休日數',
  `monthly_salary` decimal(10,2) NOT NULL COMMENT '當月薪資',
  `seniority_years` decimal(10,2) NOT NULL COMMENT '年資',
  `jan_hour` decimal(10,2) DEFAULT 0.00 COMMENT '1月上課時數',
  `feb_hour` decimal(10,2) DEFAULT 0.00 COMMENT '2月上課時數',
  `mar_hour` decimal(10,2) DEFAULT 0.00 COMMENT '3月上課時數',
  `apr_hour` decimal(10,2) DEFAULT 0.00 COMMENT '4月上課時數',
  `may_hour` decimal(10,2) DEFAULT 0.00 COMMENT '5月上課時數',
  `jun_hour` decimal(10,2) DEFAULT 0.00 COMMENT '6月上課時數',
  `jul_hour` decimal(10,2) DEFAULT 0.00 COMMENT '7月上課時數',
  `aug_hour` decimal(10,2) DEFAULT 0.00 COMMENT '8月上課時數',
  `sep_hour` decimal(10,2) DEFAULT 0.00 COMMENT '9月上課時數',
  `oct_hour` decimal(10,2) DEFAULT 0.00 COMMENT '10月上課時數',
  `nov_hour` decimal(10,2) DEFAULT 0.00 COMMENT '11月上課時數',
  `dec_hour` decimal(10,2) DEFAULT 0.00 COMMENT '12月上課時數',
  `nov_salary` decimal(10,2) DEFAULT 0.00 COMMENT '11月薪資',
  `dec_salary` decimal(10,2) DEFAULT 0.00 COMMENT '去年12月薪資',
  `vacation_hours` decimal(10,2) NOT NULL COMMENT '特休時數',
  `hourly_rate` decimal(10,2) NOT NULL COMMENT '11月時薪',
  `vacation_payment` decimal(10,2) NOT NULL COMMENT '特休費',
  `create_date` datetime DEFAULT current_timestamp() COMMENT '建檔日期',
  `update_date` datetime DEFAULT NULL COMMENT '更新日期',
  `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人員'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- 已傾印資料表的索引
--

--
-- 資料表索引 `class_schedules`
--
ALTER TABLE `class_schedules`
  ADD PRIMARY KEY (`class_id`);

--
-- 資料表索引 `insurance`
--
ALTER TABLE `insurance`
  ADD PRIMARY KEY (`insurance_id`);

--
-- 資料表索引 `log_use`
--
ALTER TABLE `log_use`
  ADD PRIMARY KEY (`rid`);

--
-- 資料表索引 `monthly_settlement`
--
ALTER TABLE `monthly_settlement`
  ADD PRIMARY KEY (`monthly_id`),
  ADD UNIQUE KEY `settlement_date_2` (`settlement_date`,`employee_id`) COMMENT '結算日期與員工ID的唯一約束',
  ADD KEY `settlement_date` (`settlement_date`) COMMENT '結算日期索引',
  ADD KEY `employee_id` (`employee_id`) COMMENT '員工ID索引';

--
-- 資料表索引 `sql_err`
--
ALTER TABLE `sql_err`
  ADD PRIMARY KEY (`id`);

--
-- 資料表索引 `system_logs`
--
ALTER TABLE `system_logs`
  ADD PRIMARY KEY (`log_id`),
  ADD KEY `user_id` (`user_id`);

--
-- 資料表索引 `system_news`
--
ALTER TABLE `system_news`
  ADD PRIMARY KEY (`news_id`);

--
-- 資料表索引 `time_slots`
--
ALTER TABLE `time_slots`
  ADD PRIMARY KEY (`slot_id`);

--
-- 資料表索引 `vacation_payments`
--
ALTER TABLE `vacation_payments`
  ADD PRIMARY KEY (`vacation_id`);

--
-- 在傾印的資料表使用自動遞增(AUTO_INCREMENT)
--

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `class_schedules`
--
ALTER TABLE `class_schedules`
  MODIFY `class_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `insurance`
--
ALTER TABLE `insurance`
  MODIFY `insurance_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `log_use`
--
ALTER TABLE `log_use`
  MODIFY `rid` int(11) NOT NULL AUTO_INCREMENT;

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `monthly_settlement`
--
ALTER TABLE `monthly_settlement`
  MODIFY `monthly_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID';

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `sql_err`
--
ALTER TABLE `sql_err`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵，自動遞增';

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `system_logs`
--
ALTER TABLE `system_logs`
  MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '紀錄ID';

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `system_news`
--
ALTER TABLE `system_news`
  MODIFY `news_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '公告編號';

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `time_slots`
--
ALTER TABLE `time_slots`
  MODIFY `slot_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '時段ID';

--
-- 使用資料表自動遞增(AUTO_INCREMENT) `vacation_payments`
--
ALTER TABLE `vacation_payments`
  MODIFY `vacation_id` int(11) NOT NULL AUTO_INCREMENT;

--
-- 已傾印資料表的限制式
--

--
-- 資料表的限制式 `system_logs`
--
ALTER TABLE `system_logs`
  ADD CONSTRAINT `system_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`);
COMMIT;

