该系列博文为《数据仓库 Building the Data Warehouse》一书的读书笔记,笔者将书中重点内容进行概括总结。大致保留书中结构,一部分根据自己的理解进行调整。如发现问题,欢迎批评指正。
《数据仓库》读书笔记:第13章 关系模型和多维模型数据库设计基础
1. 数据库设计模型
广泛采用的数据库设计模型有两种:关系型
和多维型
。
普遍认为关系型是“Inmon”方法,而多维模型是“Kimball”方法
- Inmon建模理论
关系模型
自上向下,基于业务需求分析的结果
- Kimball建模理论
多维模型
自下向上,从业务数据入手,建立数据模型
2. 关系模型与多维模型
2.1 关系模型
- 建立关系模型
①创建数据表
。表中每一行包含不同的列,每一列数据表示不同的物理特征,不同的列可以索引并作为标识符,部分列可为空。
②使用关键字和外键在不同行的数据间建立关联
。
具体内容请参考《数据仓库》读书笔记:第3章 设计数据仓库。《数据仓库》书中多为零散的概念,对于模型如何一步步建立这种细节并没有过多描述,书中建议看Ted Codd和Chris Date文章,笔者看完后再来补充此块内容(待续……)。
- 关系模型特点
① 关系模型自带结构化查询语言(SQL),作为程序和数据间的接口语言而得到广泛应用。
② 关系型数据以“标准化”的形式存在。"数据标准化"会使数据分解成非常低的粒度级。
关系数据库的六种范式:
- 第一范式(1NF):数据库表的每一列都是不可分割的基本数据项。
- 第二范式(2NF):在满足1NF的基础上,非主键列完全依赖于主键列,不能只依赖于主键的一部分。
- 第三范式(3NF):在2NF基础上,非主键列只依赖于主键,不依赖于其它非主键。
- 巴斯-科德范式(BCNF)
- 第四范式(4NF)
- 第五范式(5NF)
2.2 多维模型
星型模型 | 雪花模型 | |
---|---|---|
星型连接的中心是一张事实表,事实表的周围是维表 | 包含多张事实表,不同的事实表通过共享一个或多个公共维表(一致维表)连接起来 | |
优点 | 设计实现简单 | 去冗余 |
缺点 | 每一个维度都与事实表相连接,所以数据存在一定冗余 | 设计、ETL、维护复杂。有些统计需要表关联才能产生,所以效率不一定比星型模型高 |
事实表
:是包含大量数据值的一种结构,包含的是多次出现的数据。比如某次银行交易,一个顾客来访。维表
:用来描述事实表的某个重要方面,维表里的数据量要比事实表少的多。比如公司日程表,公司价格表等。
2.3 两种模型的区别
关系模型 | 多维模型 | |
---|---|---|
优点 | 灵活性,关系模型的取值是有规律的,并且含义明确,只使用标准化数据的细节级数据。支持将来未知需求,支持适度变化的需求 多功能性,因为细节数据需要被收集在一起并且能够结合,因此可以支持数据的多种视图。 | 访问高效。收集并吸收用户请求,用请求来确定星型结构,对于数据传递给最终用户是非常高效的 |
起源 | 通过企业数据模型设计出来的 | 根据最终用户请求塑造的 |
抽象程度 | 抽象级高(由模型而来),因此可支持很多用户 | 抽象级低,有非常明确的处理请求 |
数据访问 | 适合数据的间接访问 | 有利于数据的直接访问 |
适用场景 | 大范围数据(如一个企业模型) 可以无限制的添加新数据 | 小范围数据(如一个部分甚至子部门) 是通过请求过程设计模型,当收集很多请求时设计会被中断,数据库设计只能在一组请求过程下得到最优化 |
适合数据仓库 (关系模型灵活,对于数据需求的改变影响小,且能支持未来需求) | 适合数据集市 |
3. 数据集市
数据集市:是用来表示服务一组特定群体(如财务部门或金融部门)的分析需求的一种数据结构。
独立数据集市 | 从属数据集市 | |
---|---|---|
概念 | 是指直接通过历史 应用创建的数据集市 | 是利用来自数据仓库的数据建立的。它的数据源不依赖于历史数据或操作型数据,只依赖于数据仓库 |
特点 | 独立数据集市是一个短期的、有限范围的解决方法 | 从属数据集市要求一个长期和全局的展望,能为信息决策系统提供一个长期基础 |
优点 | ① 可以由单一的部门建立,不需求考虑其它部门或中央IT组织,不需要有“全局思想“考虑。表示的是企业全部DSS(决策支持系统)请求的一个子集; ② 建立独立数据集市的费用不高; ③ 允许企业掌握各个独立数据集市的信息。 | 可以从数据仓库提取数据,不存在数据集市的体系结构问题,即使存在不同,也是可调和的 |
缺点 | ① 不提供数据重用平台 ② 不提供数据一致性基础 ③ 不提供单一历史接口程序基础 ④ 需要每一个独立数据集市建立自己的细节数据集,会有大量冗余数据 | ① 要求预先计划和投资,并需要”全局考虑“; ② 要求多个用户共享他们创建数据仓库时的信息需求,需要企业各不同部门对需求分析的合作与协调。 |
建立独立数据集市: