数据仓库建模,说白了就是建库建表
目录
一,三范式建模
一,三范式建模的概叙
- 三范式建模时数据库设计的一种重要方法;
- 它基于关系数据库的理论,通过规范数据表的设计来减少数据冗余
- 从而提高数据一致性和查询效率。
- 三范式,包括第一范式,第二范式,第三范式。每个范式都建立再前一个范式的基础上,对数据表提出更严格的要求。
二,三范式建模的作用
- 减少数据冗余。规范数据表的设计,避免一个数据库存储重复的数据,从而减少冗余
- 提高数据一致性。正式因为减少了数据冗余,因此在更新数据的时候,只需要在一个地方更改数据,就能保证整个数据的一致。
- 提高查询效率。虽然三方式建模导致查询的时候可能需要更多的表连接,但是由于数据冗余的减少,总体上也可以提高效率。
- 增强数据的事务性。这是主要的作用,极大的利于数据库的增删改。
三,三范式建模的定义
第一范式:数据库总每一列都是不可再分的,每个表的字段都是最基本,不可再分的数据单位。
第二范式:满足第一范式的基础上,表中的非主属性的字段必须都完全依赖主键。不能部分依赖;
第三范式,在满足第二范式的基础上,表中非主属性的字段不存在传递依赖关系。
四,三范式建模的举例
一范式
二范式 不允许有部分依赖,非主键的列必须完全依赖主键
三范式 在第二范式的基础上 不允许有传递依赖,也是必须完全依赖主键
二,维度建模的概念与定义
维度建模(Dimensional Modeling)是数据仓库建设中的一种数据建模方法,它将数据结构化的逻辑设计方法,将客观世界划分为度量和上下文。这种模型设计技术旨在通过直观的标准框架结构来表现数据,允许高性能存取,并优化读取、报告和分析大量业务数据的性能。维度建模的核心在于将业务过程和事件组织成一组维度和事实,以描述业务活动的特征和结果。这种方法由Kimball最先提出,并广泛应用于数据仓库和商业智能系统的设计中。
一,维度建模的优势
- 提高数据分析效率:通过将业务数据进行有效组织,维度建模支持快速、有效的数据分析,使数据分析师能够更快地获取所需信息。
- 降低数据噪声:通过整合不同业务事件的数据,减少数据中的异常值和噪声,提高数据的一致性和准确性。
- 提高数据质量:维度建模通过规范化和标准化数据,确保数据的一致性和高质量,为决策提供可靠依据。
- 支持实时数据分析:结合增量建模技术,维度建模能够支持实时数据分析,满足业务决策对时效性的需求。
- 易于理解和查询:维度建模采用直观的结构设计,使得非技术用户也能更容易地理解和查询复杂的数据集。
二,维度建模的分类
维度建模主要分为以下几种类型:
- 星型模型(Star Schema):
- 特点:包含一个事实表和多个维度表。事实表存储了度量数据(如销售额、交易数量等),而维度表提供了关于事实表中记录的上下文描述性信息(如时间、地点、产品等)。事实表与维度表通过主键外键相关联,形成星型结构。
- 优点:结构简单,查询性能高,易于理解和实现。
- 缺点:可能存在数据冗余。
- 雪花模型(Snowflake Schema):
- 特点:雪花模型是对星型模型的扩展,其中一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上。这种结构类似于多个雪花连接在一起。
- 优点:通过减少数据存储量以及联合较小的维表来改善查询性能。
- 缺点:结构复杂,查询时可能需要更多的关联操作,影响性能。
- 星座模型(Constellation Schema):
- 特点:星座模型是基于多张事实表,并且这些事实表共享维度表信息。这种模型适用于数据关系比星型模型和雪花模型更复杂的场合。
- 优点:能够处理更复杂的数据关系,支持多个角度的数据分析。
- 缺点:设计和实现复杂度较高。
三,维度建模的举例
以电商平台的销售数据为例,维度建模可以设计如下:
- 事实表:销售事实表,包含字段如订单编号、订单日期、销售额、销售量等。
- 维度表:
- 时间维度表:包含日期、月份、季度、年份等字段。
- 产品维度表:包含产品编号、产品名称、产品类型、价格等字段。
- 客户维度表:包含客户编号、客户姓名、性别、年龄、地区等字段。
通过这些维度表和事实表的关联,可以方便地查询和分析电商平台的销售数据,如某产品在某时间段的销售额、某客户在某时间段的购买记录等。这种设计使得数据分析更加直观和高效。
四,维度建模的具体示例:
三,三范式建模和维度建模的区别
区别点 | 三范式建模 | 维度建模 |
---|---|---|
设计目标 | 减少数据冗余,保证数据一致性和完整性 | 优化查询性能,支持快速的数据分析和决策制定 |
数据结构 | 通常具有规范化的、高度结构化的表,避免数据冗余 | 以维度表和事实表为核心,可能存在一定的数据冗余 |
数据存储 | 数据分散在多个关联的表中 | 数据主要集中在事实表和相关的维度表中 |
业务理解难度 | 对于业务人员来说,理解和使用相对较复杂 | 更贴近业务逻辑,易于业务人员理解和分析 |
查询性能 | 对于复杂查询可能需要较多的表连接,影响性能 | 针对常见的分析需求进行优化,查询性能较好 |
适应变化 | 适应业务变化的灵活性相对较低 | 能够相对快速地适应业务变化和新的分析需求 |
应用场景 | 适用于事务处理系统,如在线交易系统 | 适用于数据仓库和数据分析系统 |