1.模型分类
ER(Entities Relationship)模型
第一范式(1nf):属性为原子类型,不可再分
第二范式(2nf):表中不存在“部分函数依赖”
第三范式(3nf):不能存在传递函数依赖,(使用外键)
维度模型
事实、维度
事实 -> 行为数据
维度 -> 环境数据
2. 维度模型理论之事实表
事实表
核心,围绕业务过程进行设计
事务型事实表
最细粒度的操作时间
设计流程
确认业务过程(做什么) -> 声明粒度(每行多细) -> 确定维度(列) -> 确定事实(计量单位)
周期型快照事实表
需要累积的数据(余额、速度)
设计流程
确定粒度(列) -> 确认事实(度量值)
事实类型
可加事实(订单金额)、半可加事实(库存)、不可加事实(比例)
累积型快照事实表
多个业务过程,需要多次写入,解决多事务关联
设计流程
选择业务过程(多个业务)-> 声明粒度(行)-> 确认维度(列) -> 确认事实(度量值)
3.维度模型理论之维度表
围绕业务过程所处的环境进行设计。
设计步骤
确定维度(事实表就确定了,注意维度退化) -> 确定主维表和其他维表(最细粒度为主维表) -> 确定纬度属性(丰富、不要编码、预计算)
设计要点
1).维度表通常是反规范化的
2).维度变化
如何存储维度的变化
全量快照表(用的最多)、拉链表(变化缓慢,但是数量大的数据使用)
3).多值维度
一个事实表的行对应多个维度表的行,
两种解决途径:1、降低粒度 2、事实表采用多字段存多个维度
4).多值属性
某个属性同时又多个值,比如手机的平台属性值(屏幕尺寸、品牌、cpu)
解决方法:
键值对放到一个字段 or 多个字段(必须要属性个数固定)