Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 数据建模:员工及其技能_Database_Database Design_Model_Relational Database_Modeling - Fatal编程技术网

Database 数据建模:员工及其技能

Database 数据建模:员工及其技能,database,database-design,model,relational-database,modeling,Database,Database Design,Model,Relational Database,Modeling,我正在构建一个关于人力资源数据的数据仓库模型,无法决定是否要建立一个包含员工技能演变的事实表: 我有一个员工表和一个技能表。每个员工都可以拥有不同级别(100、200、300)的多种技能(我希望如此!) 我需要保留每个员工/技能/技能级别组合的历史记录,以便他们能够分析自己随时间的演变 1-我在考虑一个事务性事实表,但它每年只为每个员工提供几行,例如,詹姆斯在1月8日获得了一项技能等级为100的新技能,然后在3个月后获得了一行技能等级为200的新技能,等等。。。图形分析会显示许多空白(当没有任何

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

我有一个员工表和一个技能表。每个员工都可以拥有不同级别(100、200、300)的多种技能(我希望如此!)

我需要保留每个员工/技能/技能级别组合的历史记录,以便他们能够分析自己随时间的演变

1-我在考虑一个事务性事实表,但它每年只为每个员工提供几行,例如,詹姆斯在1月8日获得了一项技能等级为100的新技能,然后在3个月后获得了一行技能等级为200的新技能,等等。。。图形分析会显示许多空白(当没有任何新的技能/技能级别时),或者我需要进行复杂的查询以获得有趣的信息,比如我想知道某个时间点某个员工的所有技能是什么?这个事实表在我看来使用起来很不自然

2-所以我想到了一个快照事实表,它可以帮助我轻松回答前面的问题。我知道我需要每天存储每个员工技能的快照,以确保我不会丢失任何数据更改。这难道不是一个巨大的表格,一年中只有几处变化吗?当我在较小的事务事实表中拥有相同的信息时,是否值得做一个快照来简化分析

最好的方法是什么

非常感谢你的建议


自己照顾自己

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

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

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