star schema[转帖]

数据仓库这么多年来发展的成果,我认为恐怕最重要的要算star schema了,能够说它是整个数据仓库的基石。架构


star schema主要的思想在于将咱们关心的数据和用于描述数据的属性分隔开来。实际的数据存放于Fact table中,从不一样角度来描述数据的属性放到不一样的dimension table中。好比,一个sales数据仓库能够这样设计,每一笔销售记录,应该会包含销售的产品,销售的客户,销售的供货商,销售的时间,销售的数量和得到的收入等。当咱们要分析整个公司的全部销售记录时,毫无疑问,咱们最关心的是一共销售了多少?一共得到了多少收入?而后更进一步,在某个时间段内销售了多少?来自哪家供货商的产品的销售额最大?面向哪一种客户的销售额最大?哪一种产品的销售额最大?等等。oracle

从上面咱们关心的这些问题咱们能够看到,对于销售的数量和金额这类具体的数字型的数据,一般是咱们分析的对象,而对于像时间,产品,客户,供货商,咱们但愿从这些不一样的角度来获得数字型数据的一个统计结果。因此,咱们将数字型的数据存放在fact table中,将时间,产品,客户,供货商存放在不一样的dimension table中,天然,在fact table和dimension table之间存在一个主-外键的关联,各个dimension table之间则没有关系。由此咱们能够获得以下的一个star schema:
spa

 

star schema之因此叫star schema,就是因为上面这个图形的形状来的,fact table处于中间的位置,dimension table围成一圈,每一个dimension table和fact table关联。架构设计

fact table中除了区分每条记录的主键(fact table的主键颇有多是全部dimension table的外键组合起来的一个组合主键),链接每一个dimension table的外键外,就只有咱们关心的数字型数据,因此fact table中的每条记录,有个专门的术语称之为度量(measurement),由于咱们利用数据仓库作统计分析的时候,这些数据就是统计分析的一个个基本单位,也就是度量值。设计

除了star schema,最出名的要算从star schema中衍生出来的snowflake schema了。雪花模型就是在星模型的基础上,对dimension table作规范化后等到的模型,因为每一个dimension table因为规范化可能获得许多的小表,雪花模型比起星模型就更加复杂,查询的时候也须要关联更多的表。对象

oracle在文档中说,除非你有很是特别的缘由,推荐此采用star schema来进行数据仓库的架构设计。rem

相关文章
相关标签/搜索