1.维度建模被广泛应用所满足的需求(维度建模的优势):
- 以商业用户更易理解的方式发布数据
- 提高查询性能
2.星型模型和OLAP多维数据
在关系型数据库中实现的维度模型称为星型模型,因其结构类似星型结构。在多维数据库中实现的维度模型通常称为联机分析处理(OnLine Analytical Processing,OLAP)多维数据库。
如何理解实体表、维度表、事实表?
- 实体表:实体表就是一个实际对象的表,实体表它放的数据一定是一条条客观存在的事物数据,比如说设备 ,它就是客观存在的,所以可以将其设计一个实体表;
- 事实表:事实表用于度量,它存放的是用于度量的值,其他字段用于保存维度信息的外键字段,物理世界的每一个度量事件对应事实表的一条数据。事实表的设计主要在于找到主干字段,以一个销售订单为例。
原表字段:product_no,product_name,sale_time,sale_amount,sale_count,profit
很明显该表的销售数量、销售金额、利润是该表的主干,所以可以将该表拆分为产品维度表和时间维度表
产品维度表:product_key,product_no,product_name,color,size
时间维度表:time_key,year,month,date,hour,minute(一般没必要)
销售事实表:product_key,time_key,sale_amount,sale_count,profit
若由需求和必要,同样可以将连续变量sale_amount,sale_count,profit离散化后,作为维度使用
订单维度表:sale_count_key,section
1 0-5
2 0-5
3 5-10
- 维度表:维度是分析问题的角度,一个事实表一般关联多个维度表
设计原则:
- 文本型度量,设计者应尽量将文本字段放入纬度当中,除非该文本字段对每个行来说是唯一的,尽量避免在事实表存储冗余的文本信息,以节省存储空间;
- 如果产品维度没有销售事实,不要试图以0来填充事实表
- 维度表一般是含有主键的,作为该维度下单一个体,一行数据数据为单一维度,维度之间一般是层次结构的,例如:年-月-日