维度建模的数据仓库中,有一个概念叫Slowly Changing Dimensions,中文一般翻译成“缓慢变化维”,经常被简写为SCD。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化。这种随时间发生变化的维度我们一般称之为缓慢变化维,并且把处理维度表的历史变化信息的问题称为处理缓慢变化维的问题,有时也简称为处理SCD的问题。
缓慢变化维的几种常见解决方法:
第一种方法,直接在原来维度的基础上进行更新,不会产生新的记录:
1) 更新前:
emp_rid(代理键) emp_id(自然键) emp_name position
101212 12345 Jack Developer
更新后:
emp_rid(代理键) emp_id(自然键) emp_name position
101212 12345 Jack Manager
第二种方法,不修改原有的数据,重新产生一条新的记录,这样就可以追溯所有的历史记录:
1) 更新前:
emp_rid(代理键) emp_id(自然键) emp_name position start_date end_date
101212 12345 Jack Developer 2010-2-5 2012-6-12
更新后:
emp_rid(代理键) emp_id(自然键) emp_name position start_date end_date
201245 12345 Jack Manager 2012-6-12
第三种方法,直接在原来维度的基础上进行更新,不会产生新的记录但是只会记录上一次的历史记录:
1) 更新前:
emp_rid(代理键) emp_id(自然键) emp_name position old_position
101212 12345 Jack Developer null
更新后:
emp_rid(代理键) emp_id(自然键) emp_name position old_position
101212 12345 Jack Manager Developer