数据建模:员工及其技能

问题描述

我正在构建一个关于人力资源数据的数据仓库模型,但我无法决定包含员工技能演变的事实表:

我有一个员工表和一个技能表。每个员工都可以拥有多种技能(我希望他们拥有!),处于不同级别(100、200、300)。

我需要保留每个组合 Employee/Skill/SkillLevel 的历史记录,以便他们可以随着时间的推移分析自己的演变。

1- 我正在考虑一个事务性事实表,但每年每个员工只有几行,例如詹姆斯在 1 月 8 日获得了 100 级的新技能,然后是一行200 的技能水平比方说 3 个月后,依此类推......图形分析将显示许多空白区域(当没有任何新技能/技能水平时),或者我需要进行复杂的查询才能获得一些有趣的事情,比如我想知道某个员工在某个时间点的所有技能是什么?这个事实表在我看来使用起来很不自然...

2- 所以我在考虑快照事实表,它可以帮助我轻松回答上一个问题。知道我需要每天存储每个员工技能的快照,以确保我不会丢失任何数据更改。一年中只有一些变化,这不是一个巨大的表格吗?是否值得做一个快照以使分析更容易,而我会在较小的事务事实表中拥有相同的信息?

最好的方法是什么?

非常感谢您的建议!

照顾好自己

解决方法

最佳实践方法通常是在最低粒度级别创建事实表。您不必将其公开给最终用户(当然,除非您愿意),但您可以在此基础上构建任何其他事实表。

在您的情况下,如果您创建一个事务性事实表(每次有人获得技能时都包含一条记录),您可以轻松查询它以获取所有技能的当前位置,并且您可以根据需要创建快照。

我不会创建每日快照 - 但例如,创建月末快照可能会有所帮助。鉴于技能不太可能每天都在变化,对于任何人来说,创建每日快照都会产生大量重复数据