返回模板页

薪资 / HR 数据库 Schema 示例

以下 HR schema 示例展示了同样的员工-薪资-工资单核心如何适配小企业、时薪劳动力、含福利的固定薪资团队,以及带本地税规的跨国工资单。

薪资 / HR 数据库 Schema 示例

真实案例

小企业(基线方案)

使用场景: 构建首个工资单系统的创始人 / HR

Employee (id, name, email, hired_at, department_id, position_id)
Salary 按生效日期存为历史
按月 Payroll 合并薪资
LeaveRequest 含年假/病假类型
无考勤——只有固定薪资员工

这样组织的原因: 小企业 HR 对固定薪资员工可省略考勤——图表更简单,但薪资历史不可妥协,因为过去的工资单必须复现当时实际支付的金额。

时薪劳动力

使用场景: 有班次或时薪员工的团队

Timesheet 是核心——税前工资 = 工时 × hourly_rate
Salary 表按生效日期存 hourly_rate
加班单独追踪、带倍率
Shift 表记录计划工时 vs 实际工时
工资计算按薪资周期从考勤算出

这样组织的原因: 时薪劳动力让 Timesheet 成为工资单的真相来源——图表强调 timesheet→payroll 链路,因为实际工时决定税前工资,加班规则编码进薪资计算里。

含福利的固定薪资

使用场景: 有医疗保险、401k、股权的中型团队

Benefit (id, employee_id, type, provider, contribution)
税前福利的扣减加进 Payroll
股权授予单独追踪,含归属计划
奖金和提成作为额外的 Pay 组成
代扣税从税前减扣减后计算

这样组织的原因: 福利增加一层薪资组成——图表给 Payroll 加上保险、401k 等扣减,因为福利进入后净工资不再只是税前减税。

跨国工资单

使用场景: 跨多个司法辖区有员工的团队

Employee 增加 country_code 和 tax_id
工资计算规则按国家限定范围
Salary 和 Payroll 上存币种
按国家的法定扣减(社保等)
按员工按国家的合规文档

这样组织的原因: 跨国工资单要求按国家规则——图表给 Employee 加国家,并按辖区分叉薪资计算,因为各国税与法定扣减根本上不同。

使用技巧

  • 始终把 Salary 当作按生效日期的历史,永远别放在 Employee 的列上——加薪不能抹掉旧金额,否则就丢失了重算过去工资单的能力。
  • 把 Timesheet 与 Payroll 分离;工时持续记录,工资定期计算。
  • 把请假放在带类型和状态的独立表上——年假、病假、无薪流入工资单的方式各不相同。
  • 把工资单行项(税前、税、净、扣减)存在 Payroll 行本身,而非查询时派生,让对账单永远匹配。

在线开始编辑

回到模板页,直接替换成你的课程主题、章节和复习重点,就可以继续使用这套结构。

使用这个模板: /editor/new?template=payroll-hr-database-schema

编辑此 HR schema 模板