当前位置:首页 > 行业动态 > 正文

hr数据库设计

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 评语

关键逻辑与扩展设计

  1. 主外键关联

    • EmployeeID 是员工表的核心主键,其他表(薪资、考勤、绩效)均通过此字段关联。
    • DepartmentIDPositionID 在员工表中作为外键,需确保部门和职位存在性。
  2. 索引优化

    hr数据库设计  第1张

    • 高频查询字段(如 EmployeeNumberDepartmentNamePositionName)需建立唯一索引。
    • 联合索引示例:(EmployeeID, SalaryMonth) 用于薪资查询。
  3. 视图与存储过程

    • 视图EmployeeFullInfo 合并员工基础信息、部门、职位、最近薪资数据。
    • 存储过程CalculateSalary 根据考勤异常和绩效系数自动计算 Total 字段。
  4. 数据安全与备份

    • 敏感字段(如 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) -
0