上一篇
hr数据库设计
- 行业动态
- 2025-05-11
- 6
HR数据库设计应涵盖员工信息表(含个人资料、职位)、部门表、考勤及薪酬表,通过主外键关联确保数据完整,优化查询效率,支撑人力资源管理流程。(78
核心表结构设计
员工基本信息表
字段名 | 类型 | 说明 |
---|---|---|
EmployeeID | INT (主键) | 员工唯一编号(自增) |
EmployeeNumber | VARCHAR(20) | 工号(唯一) |
Name | VARCHAR(50) | 姓名 |
Gender | CHAR(1) | 性别(M/F/O) |
BirthDate | DATE | 出生日期 |
IDCard | VARCHAR(18) | 身份证号(唯一) |
DepartmentID | INT | 所属部门(外键) |
PositionID | INT | 职位(外键) |
HireDate | DATE | 入职日期 |
Status | VARCHAR(10) | 状态(在职/离职/休假) |
CreateTime | DATETIME | 数据创建时间 |
UpdateTime | DATETIME | 数据更新时间 |
部门表
字段名 | 类型 | 说明 |
---|---|---|
DepartmentID | INT (主键) | 部门唯一编号(自增) |
DepartmentName | VARCHAR(50) | 部门名称(唯一) |
ParentID | INT | 上级部门(外键,可为空) |
ManagerID | INT | 部门经理(外键) |
Remark | TEXT | 备注 |
职位表
字段名 | 类型 | 说明 |
---|---|---|
PositionID | INT (主键) | 职位唯一编号(自增) |
PositionName | VARCHAR(50) | 职位名称(唯一) |
GradeLevel | VARCHAR(10) | 职级(如P1/M2) |
SalaryRange | DECIMAL(10,2) | 薪资范围(单位:元/月) |
DepartmentID | INT | 所属部门(外键) |
薪资表
字段名 | 类型 | 说明 |
---|---|---|
SalaryID | INT (主键) | 薪资记录唯一编号(自增) |
EmployeeID | INT | 员工ID(外键) |
SalaryMonth | DATE | 薪资月份(格式:YYYY-MM) |
BasicSalary | DECIMAL(10,2) | 基本工资 |
Allowance | DECIMAL(10,2) | 补贴 |
Bonus | DECIMAL(10,2) | 奖金 |
Deduction | DECIMAL(10,2) | 扣款(如社保、税) |
Total | DECIMAL(10,2) | 实发工资 |
考勤表
字段名 | 类型 | 说明 |
---|---|---|
AttendanceID | INT (主键) | 考勤记录唯一编号(自增) |
EmployeeID | INT | 员工ID(外键) |
AttendanceDate | DATE | 考勤日期 |
CheckInTime | TIMESTAMP | 上班打卡时间 |
CheckOutTime | TIMESTAMP | 下班打卡时间 |
LeaveType | VARCHAR(10) | 请假类型(病假/事假等) |
IsLate | BOOLEAN | 是否迟到 |
IsEarlyLeave | BOOLEAN | 是否早退 |
绩效表
字段名 | 类型 | 说明 |
---|---|---|
PerformanceID | INT (主键) | 绩效记录唯一编号(自增) |
EmployeeID | INT | 员工ID(外键) |
Year | INT | 绩效年份 |
Quarter | TINYINT | 季度(1-4) |
Score | DECIMAL(5,2) | 绩效评分 |
EvaluatorID | INT | 评价人ID(外键) |
Remark | TEXT | 评语 |
关键逻辑与扩展设计
主外键关联
EmployeeID
是员工表的核心主键,其他表(薪资、考勤、绩效)均通过此字段关联。DepartmentID
和PositionID
在员工表中作为外键,需确保部门和职位存在性。
索引优化
- 高频查询字段(如
EmployeeNumber
、DepartmentName
、PositionName
)需建立唯一索引。 - 联合索引示例:
(EmployeeID, SalaryMonth)
用于薪资查询。
- 高频查询字段(如
视图与存储过程
- 视图:
EmployeeFullInfo
合并员工基础信息、部门、职位、最近薪资数据。 - 存储过程:
CalculateSalary
根据考勤异常和绩效系数自动计算Total
字段。
- 视图:
数据安全与备份
- 敏感字段(如
IDCard
)加密存储,仅限管理员访问。 - 每日增量备份 + 每周全量备份,异地灾备。
- 敏感字段(如
相关问题与解答
问题1:如何扩展支持“离职员工”数据保留但权限隔离?
解答:
- 在
Employee
表中添加Status
字段(如在职/离职/休假
)。 - 通过数据库角色(Role)控制权限:普通用户仅能查询
Status=在职
的数据,管理员可查看全部。 - 示例SQL:
SELECT FROM Employee WHERE Status = '在职';
问题2:薪资计算逻辑如何动态关联考勤和绩效?
解答:
- 步骤1:在
Salary
表中记录基础工资、补贴、奖金等固定字段。 - 步骤2:通过存储过程
CalculateSalary
实现动态计算:- 根据
Attendance
表中的迟到、早退次数扣除相应金额。 - 根据
Performance
表中的评分调整奖金系数(如评分A=1.5倍,B=1.2倍)。 - 示例逻辑:
UPDATE Salary SET Total = BasicSalary + Allowance + (Bonus PerformanceCoefficient) -
- 根据