我正在为我的公司设计各种数据库。我担心在数据库中有重复,因为据我所知,我们必须减少重复并保持表在大多数时间内正常化。
但是,我有这样的业务要求,记录的数据不能始终更新。例如,
我有三张桌子 病假|员工|位置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概念来实现最佳实践吗?
答案 0 :(得分:0)
我真的没有在这里看到问题。 如果table [position]实际上是[position],那么你可以查询EmployeeID持有的所有仓位,然后查询结果列表以获得请假数据。
很好的例子就在这里: