事实表和维表
事实表是用来记录具体时间,包含了每个事件的要素,以及具体发生的事情;
维表则是对事实表中的时间的要素的描述信息。
比如一个事件, 包含了时间,地点,任务,事件;事实表记录了整个事件的,但是对时间,地点和人物等要素只记录了一些关键标记。
比如事件的地点是北京, 但是北京分了几个区, 区号是啥, 就要到对应的维表里面查询。
再比如,事件的主角叫“Michael”,那么Michael到底“长什么样”,就需要到相应的维表里面去查询“Michael”的具体描述信息了。
基于事实表和维表就可以构建出多种多维模型,包括星形模型、雪花模型和星座模型。
以下是最简单的星形模型的实例:
事实表里面主要包含两方面的信息:维和度量,维的具体描述信息记录在维表,事实表中的维属性只是一个关联到维表的键,并不记录具体信息;度量一般都会记录事件的相应数值,比如这里的产品的销售数量、销售额等。
维表中的信息一般是可以分层的,比如时间维的年月日、地域维的省市县等,这类分层的信息就是为了满足事实表中的度量可以在不同的粒度上完成聚合,比如2010年商品的销售额,来自上海市的销售额等。
还有一点需要注意的是,维表的信息更新频率不高或者保持相对的稳定,例如一个已经建立的十年的时间维在短期是不需要更新的,地域维也是;但是事实表中的数据会不断地更新或增加,因为事件一直在不断地发生,用户在不断地购买商品、接受服务。