数据库表设计与钱和期间

时间:2013-05-22 14:27:42

标签: mysql sql database

假设我有像Employee这样的数据库表,并且每个员工都有相关的工资。工资在不同时期可能会有所不同。如何设计存储这些工资的表格? (“工资期”不能重叠,但这种约束不必由数据库处理)

员工不会是唯一需要这种日期模式货币数据的表。

我在考虑一个有两个主键的表(一个“wageId”整数和一个日期时间)和一个工资列(整数,按照建议计算便士)。员工(或任何其他)表将具有引用“wageId”的列“工资”。日期时间是工资有效的日期。这有任何意义吗?可以改进吗?

我正在使用mysql。

1 个答案:

答案 0 :(得分:2)

这是一个缓慢变化的维度的例子。关于数据库设计的一个很好的参考是Ralph Kimball的书籍。

在任何情况下,你想要的是一个名为EmployeeWage的表。这将有如下列:

  • EmployeeWageId,该行的唯一ID
  • EmployeeId,员工的标识符
  • 工资,工资
  • EffDate,工资生效日期
  • EndDate,工资停止生效的日期。

我还会添加列,例如谁创建了每一行和确切的时间,但这超出了你的问题的范围。