You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
7.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

-- 创建数据库,如果不存在
CREATE DATABASE IF NOT EXISTS attendance_system CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 使用创建的数据库
USE attendance_system;
-- 1. 创建员工表Employee该表需要先创建
CREATE TABLE IF NOT EXISTS Employee (
EmployeeID VARCHAR(50) PRIMARY KEY, -- 员工ID主键
Name VARCHAR(100) NOT NULL, -- 姓名
Gender VARCHAR(10) NOT NULL, -- 性别(男/女)
DateOfBirth DATE NOT NULL DEFAULT '2000-01-01', -- 出生日期,默认值
Position VARCHAR(100) NOT NULL, -- 职位
DepartmentID VARCHAR(50), -- 部门ID
ContactInfo VARCHAR(50), -- 联系方式
HireDate DATE NOT NULL, -- 入职日期
EmploymentStatus VARCHAR(50) NOT NULL -- 状态(在职/离职/休假)
);
-- 2. 创建部门表Department需要在Employee表后创建因为Department表需要引用Employee表中的ManagerID
CREATE TABLE IF NOT EXISTS Department (
DepartmentID VARCHAR(50) PRIMARY KEY, -- 部门ID主键
DepartmentName VARCHAR(100) NOT NULL, -- 部门名称
ManagerID VARCHAR(50), -- 主管ID外键关联到员工表
FOREIGN KEY (ManagerID) REFERENCES Employee(EmployeeID) -- 外键,关联到员工表
);
-- 3. 创建考勤记录表Attendance该表依赖Employee表
CREATE TABLE IF NOT EXISTS Attendance (
AttendanceID VARCHAR(50) PRIMARY KEY, -- 考勤ID主键
EmployeeID VARCHAR(50), -- 员工ID外键关联到员工表
AttendanceDate DATE NOT NULL, -- 考勤日期
CheckInTime DATETIME, -- 上班时间
CheckOutTime DATETIME, -- 下班时间
WorkingHours INT, -- 工作时长(小时)
OvertimeHours INT, -- 加班时长(小时)
AttendanceStatus VARCHAR(20) NOT NULL, -- 考勤状态(正常/迟到/早退/缺勤)
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID) -- 外键,关联到员工表
);
-- 4. 创建假期申请表LeaveRequest该表依赖Employee表
CREATE TABLE IF NOT EXISTS LeaveRequest (
RequestID VARCHAR(50) PRIMARY KEY, -- 申请ID主键
EmployeeID VARCHAR(50), -- 员工ID外键关联到员工表
LeaveType VARCHAR(50) NOT NULL, -- 假期类型
StartDate DATE NOT NULL, -- 开始日期
EndDate DATE NOT NULL, -- 结束日期
LeaveDays INT NOT NULL, -- 假期天数
RequestStatus VARCHAR(20) NOT NULL, -- 申请状态(待审批/已批准/已拒绝)
ApproverID VARCHAR(50), -- 审批人ID外键关联到员工表
Remarks TEXT, -- 备注
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID), -- 外键,关联到员工表
FOREIGN KEY (ApproverID) REFERENCES Employee(EmployeeID) -- 外键,关联到员工表
);
-- 5. 创建用户角色表UserRoles
CREATE TABLE IF NOT EXISTS UserRoles (
RoleID VARCHAR(50) PRIMARY KEY, -- 角色ID主键
RoleName VARCHAR(100) NOT NULL, -- 角色名称
RoleDescription TEXT NOT NULL -- 角色描述
);
-- 6. 创建用户账号表UserLogin该表依赖Employee表和UserRoles表
CREATE TABLE IF NOT EXISTS UserLogin (
UserID VARCHAR(50) PRIMARY KEY, -- 用户ID主键
EmployeeID VARCHAR(50), -- 员工ID外键关联到员工表
RoleID VARCHAR(50), -- 角色ID外键关联到用户角色表
Username VARCHAR(50) NOT NULL, -- 用户名
Password VARCHAR(255) NOT NULL, -- 密码(加密存储)
LastLoginTime DATETIME, -- 最后登录时间
AccountStatus VARCHAR(20) NOT NULL, -- 账号状态(有效/禁用)
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID), -- 外键,关联到员工表
FOREIGN KEY (RoleID) REFERENCES UserRoles(RoleID) -- 外键,关联到用户角色表
);
-- 7. 创建考勤统计表AttendanceSummary该表依赖Employee表
CREATE TABLE IF NOT EXISTS AttendanceSummary (
SummaryID VARCHAR(50) PRIMARY KEY, -- 统计ID主键
EmployeeID VARCHAR(50), -- 员工ID外键关联到员工表
Month DATE NOT NULL, -- 统计月份
PresentDays INT, -- 出勤天数
LateCount INT, -- 迟到次数
EarlyLeaveCount INT, -- 早退次数
AbsentDays INT, -- 缺勤天数
TotalOvertimeHours INT, -- 加班总时长(小时)
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID) -- 外键,关联到员工表
);
-- 8. 创建系统日志表SystemLogs该表依赖UserLogin表
CREATE TABLE IF NOT EXISTS SystemLogs (
LogID VARCHAR(50) PRIMARY KEY, -- 日志ID主键
UserID VARCHAR(50), -- 用户ID外键关联到用户账号表
ActionType VARCHAR(50) NOT NULL, -- 操作类型
ActionTime DATETIME NOT NULL, -- 操作时间
Description TEXT, -- 操作描述
FOREIGN KEY (UserID) REFERENCES UserLogin(UserID) -- 外键,关联到用户账号表
);
-- 9. 创建培训记录表TrainingRecords该表依赖Employee表
CREATE TABLE IF NOT EXISTS TrainingRecords (
TrainingID VARCHAR(50) PRIMARY KEY, -- 培训ID主键
EmployeeID VARCHAR(50), -- 员工ID外键关联到员工表
TrainingName VARCHAR(100) NOT NULL, -- 培训名称
TrainingDate DATE NOT NULL, -- 培训日期
TrainingHours INT, -- 培训时长(小时)
TrainingStatus VARCHAR(50) NOT NULL, -- 培训状态(已完成/进行中/未完成)
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID) -- 外键,关联到员工表
);
-- 10. 创建绩效考核表PerformanceAppraisal该表依赖Employee表
CREATE TABLE IF NOT EXISTS PerformanceAppraisal (
ReviewID VARCHAR(50) PRIMARY KEY, -- 考核ID主键
EmployeeID VARCHAR(50), -- 员工ID外键标识被考核的员工
ReviewDate DATE NOT NULL, -- 考核日期
ReviewPeriod VARCHAR(50) NOT NULL, -- 考核周期(季度/年度)
ReviewScore INT, -- 考核评分
ReviewGrade VARCHAR(50), -- 考核等级A/B/C等
ReviewerID VARCHAR(50), -- 考核人ID外键标识考核主管
FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID), -- 外键,关联到员工表
FOREIGN KEY (ReviewerID) REFERENCES Employee(EmployeeID) -- 外键,关联到员工表
);
-- 提示:所有的表创建完成后,可以执行数据插入脚本(如 `initialize_data.sql`)。