数据建模目标
有序、有结构的分类组织和和存储数据
数据建模好处:
性能、成本、效率、质量
OLTP与OLAP:
OLTP 是业务系统,OLAP是决策分析系统, OLAP更多的基于数据二次数据利用产生收益
ER建模
ER(Entity-Relationship,实体-关系)建模是一种用于描述信息系统中数据的概念模型的方法。它通过图形化的方式展示实体之间的关系,以及实体的属性。ER模型通常包括以下三个主要组成部分:
- 实体(Entity):表示现实世界中的一个对象,如“学生”、“课程”等。
- 属性(Attribute):实体所具有的特性,如“学生”实体的“学号”、“姓名”等。
- 关系(Relationship):实体之间的联系,如“学生”和“课程”之间的“选课”关系。
ER模型的表示方法通常包括:
- 矩形:表示实体,矩形内部包含实体的名称。
- 椭圆:表示实体的属性,椭圆内部包含属性的名称。
- 菱形:表示实体之间的关系,菱形内部包含关系的名称。
- 连接线:表示实体与属性之间的关系,以及实体之间的关系。
在ER模型中,还可以表示关系的类型,如一对一、一对多、多对多等。此外,还可以使用一些符号来表示关系的基数和参与度,例如:
- 基数(Cardinality):表示实体在关系中的数量限制,如“学生”和“课程”之间的“选课”关系可能是多对多的。
- 参与度(Participation):表示实体是否必须参与某个关系,通常用“全参与”(实线)和“可选参与”(虚线)来表示。
ER建模的步骤通常包括:
- 确定实体:识别系统中的主要实体。
- 确定属性:为每个实体确定其属性。
- 确定关系:确定实体之间的关系,并定义关系的类型。
- 细化模型:细化实体的属性,确定关系的基数和参与度。
- 验证模型:确保ER模型准确地反映了现实世界的数据需求。
ER模型是数据库设计的重要步骤之一,它有助于设计人员理解数据的结构和关系,从而设计出合理的数据库模式。在实际应用中,ER模型还可以通过各种数据库设计工具来创建和修改。
维度建模
维度建模是数据仓库领域中的一种建模技术,它主要用于支持复杂的数据分析和决策支持系统。维度建模与ER建模不同,它更侧重于数据分析的效率和灵活性,而不是数据的物理存储结构。维度建模通常用于构建星型模式(Star Schema)或雪花模式(Snowflake Schema),这些模式特别适合于联机分析处理(OLAP)和数据挖掘。
### 维度建模的关键概念:
1. **事实表(Fact Table)**:
- 事实表是维度模型的核心,它包含用于分析的度量值(如销售额、数量等)。
- 事实表通常包含与维度表相关联的外键。
2. **维度表(Dimension Table)**:
- 维度表包含描述性的属性,用于分析的上下文(如时间、地点、产品等)。
- 维度表通常包含文本和日期等描述性信息。
3. **度量(Measures)**:
- 度量是事实表中的数值数据,用于量化分析(如销售金额、数量等)。
4. **维度(Dimensions)**:
- 维度是分析的视角,它们提供了数据的上下文(如时间、地点、产品等)。
5. **星型模式(Star Schema)**:
- 星型模式是一种简单的维度模型,其中所有维度表直接连接到一个中心的事实表。
- 这种结构适合快速查询,因为所有的数据都通过事实表连接。
6. **雪花模式(Snowflake Schema)**:
- 雪花模式是星型模式的一种变体,其中一些维度表进一步规范化,形成更复杂的层次结构。
- 这种模式减少了数据冗余,但可能会增加查询的复杂性。
7. **退化维度(Degenerate Dimension)**:
- 退化维度是一种特殊的维度,它在事实表中直接包含描述性属性,而不是通过外键关联。
8. **缓慢变化维(Slowly Changing Dimension, SCD)**:
- 缓慢变化维用于处理维度数据随时间变化的情况,确保历史数据的一致性和准确性。
### 维度建模的步骤:
1. **需求分析**:
- 确定业务需求和分析目标。
2. **选择维度**:
- 确定哪些维度对于分析是重要的。
3. **定义事实**:
- 确定需要跟踪和分析的关键度量。
4. **设计事实表**:
- 创建包含度量和维度外键的事实表。
5. **设计维度表**:
- 为每个维度创建维度表,包含描述性属性。
6. **处理数据**:
- 从源系统提取数据,处理并加载到数据仓库中。
7. **优化性能**:
- 根据查询需求优化数据模型和索引。
8. **维护和更新**:
- 定期更新数据和模型,以反映业务变化。
维度建模是一种非常实用的技术,它帮助组织从大量数据中提取有价值的信息,支持决策制定。通过维度建模,可以构建出灵活、高效的数据分析环境。