两个表中的重复数据用于记录保存设计?

时间:2017-03-07 11:53:21

标签: database database-design

我正在为我的公司设计各种数据库。我担心在数据库中有重复,因为据我所知,我们必须减少重复并保持表在大多数时间内正常化。

但是,我有这样的业务要求,记录的数据不能始终更新。例如,

我有三张桌子 病假|员工|位置

Jane在执行时申请休假 几年后,当她担任经理时,她又申请了一次假。

然后,管理员已决定将执行人员的职位名称(ID:1)更改为工程师(ID:1)

系统应根据过去的位置生成报告

07/03/2014 Jane Executive  
06/03/2017 Jane Manager

系统不应在报告中将Executive更改为Engineer。

医疗休假表的当前设计是

PK_ID, Leave Type, Leave Date, FK_EmployeeID, FK_PositionID, FK_PositionName

以上是数据库设计不好或有其他方法来处理这个问题。

因为如果我使用

PK_ID, Leave Type, Leave Date, FK_EmployeeID

系统将始终查询最新的位置标题,但不查询旧位置标题。

或者我需要采用Versioned Data概念来实现最佳实践吗?

1 个答案:

答案 0 :(得分:0)

我真的没有在这里看到问题。 如果table [position]实际上是[position],那么你可以查询EmployeeID持有的所有仓位,然后查询结果列表以获得请假数据。

很好的例子就在这里:

INTEGER PRIMARY KEY