数据架构 - 数据建模方法

数据建模数据架构的重要组成部分。它意味着制定计划,确定数据在系统中的组织、存储和使用方式。本章介绍了数据建模的不同方法,帮助您了解如何为组织创建有用的数据模型。

目录

在本章中,我们将介绍与数据建模相关的以下主题:

什么是数据建模?

数据建模是设计数据库的重要技术。它包括确定需要存储哪些数据并将其组织成表和列,以显示不同数据之间的相互关系。此结构可应用于不同类型的数据库,包括关系数据库和 NoSQL。

关系建模

关系建模Edgar F. Codd 于 1970 年提出。它将数据组织成表(关系),其中每个表包含记录行和属性列。此方法使用键来显示表之间的相互关系,有助于保持数据准确性并使检索信息更加容易。

关系建模中的键

关系建模中,键对于保持数据库的组织性和准确性非常重要。它们有助于唯一地标识每条记录并显示不同表之间的连接方式。以下是一些键类型。

  • 主键:这是表中每条记录的唯一标识符,例如学生表中的 StudentID。
  • 外键:外键是表中的一列,链接到另一个表中的主键,从而建立关系。例如,销售表中的 ProductKey 连接到产品表中的产品。
  • 自然键:已经存在并用作主键的唯一字段,例如社会安全号码(政府颁发的用于识别个人的号码)。

实体关系图

您通常从实体关系 (ER)图开始关系建模。此图显示数据库的不同部分(实体)及其连接方式(关系)。完成 ER 图后,您可以创建一个更详细的模型,其中包含数据库的实际表和列。

这就是创建 ER 图的方法。

ER 图

在上面的ER 图中,我们表示学生课程实体。以下是我们所做工作的简要说明:

  • 实体:该图包括两个主要实体:学生课程
  • 属性:该图列出了学生和课程实体的属性。 学生实体具有以下属性:
    • StudentID(唯一标识符)
    • 姓名(复合:名字、中间名、姓氏)
    • 电话号码(多值属性)
    课程实体包括:
    • Cou_ID(唯一标识符)
    • 姓名(课程名称)
  • 弱实体:成绩是依赖于学生和课程实体的弱实体。
  • 关系:注册关系连接学生和课程,这意味着一个学生可以注册多门课程。 Earns 关系将 Student 和 Grade 联系起来,表明一个学生可以获得多个成绩。
  • 关系中的关键属性:
    • Enrolls 关系可能包括 Enrollment Date 和 Status。
    • Earns 关系可能包括 Grade Date。
  • 复合和多值属性:Student 实体的 Name 属性是复合属性,而 Phone Numbers 是多值属性。

ER 图组件

此图包含多个组件,显示实体如何相互关联。以下是创建 ER 图时使用的关键组件。

ER Diagram

数据完整性的规范化规则

创建 ER 图 后,应用规范化。规范化 是一个将复杂数据库分解为更简单表格的过程。这有助于减少重复数据并提高信息的准确性。该过程包括几个称为范式的步骤:

  • 第一范式 (1NF):此形式确保表格组织正确。它要求:
    • 表具有主键。
    • 每列只有一个值。
    • 没有重复的列组。
  • 第二范式 (2NF):基于 1NF,此形式确保:
    • 它满足 1NF 的所有条件。
    • 每个非键列仅依赖于主键。
  • 第三范式 (3NF):基于 1NF,此形式确保:
    • 它满足 1NF 和 2NF 的所有条件。
    • 非键列必须直接连接到主键,而不是通过其他列。

跟踪使用历史表进行更改

关系数据库中,跟踪随时间的变化非常重要。为此,我们使用历史表。这些表是原始表的副本,但它们具有记录重要详细信息的额外列,例如:

  • 时间戳:更改发生的时间。
  • 用户 ID:更改发生的时间。
  • 前后值:更改前的值和更改后的新值。

历史表对于审计、报告和恢复数据非常有用。它们为您提供了数据随时间变化的完整画面。

维度建模

维度建模始于 1996 年,旨在使分析和查询数据变得更加容易。它将数据分为两部分:事实(即数字或数据点)和维度(提供上下文,如类别或日期)。当常规数据库变得缓慢或难以使用时,此方法很有用。它通常从这些传统数据库中获取数据,以创建一种更有效的信息分析方法。

维度建模中的事实

在维度建模中,"事实"是衡量特定指标(如销售额或收入)的数字数据点。这些事实可以组合或汇总,如查找平均值或总数,这使得分析数据变得更容易。这样,您就可以从大量信息中快速发现有用的见解。

维度建模中的维度

在维度建模中,"维度"有助于解释事实。它们描述有关数据的重要细节,例如时间、产品或客户信息。维度通常组织成层次结构,以便进行更深入的数据分析。事实表存储数值数据,而维度表保存描述此数据的相关详细信息。

维度建模中的键

维度建模中,我们通常使用代理键作为主键,而不是自然键。代理键是专门为唯一标识数据库中的记录而创建的人工值,在自然键不可用或不合适时很有用。

自然键可以提供有意义的信息,但它们有一些缺点。

  • 它们可能更长、更复杂。
  • 它们可能包含敏感信息,这可能会引发隐私问题。
  • 在组合来自不同系统的数据时,它们可能会导致重复或不一致。

跟踪维度建模中的变化

维度建模中,我们使用缓慢变化维度 (SCD) 跟踪数据的变化,这有助于管理数据随时间的变化。有三种类型。

  • 类型 1:此类型用新数据替换旧数据。它用于我们不需要保留旧信息的小更改,例如更正电话号码。
  • 类型 2:此类型保留数据的新旧版本。它对于跟踪随时间推移的变化非常有用,例如当客户搬到新地址时,确保我们拥有准确的历史信息。
  • 类型 3:此类型为每个更改创建一个新记录,保留数据的完整历史记录。虽然它更复杂,但它允许我们保留所有更改的详细记录。

历史表与缓慢变化维度

历史表缓慢变化维度 (SCD)都跟踪数据的变化,但它们以不同的方式进行。

  • 历史表:这些表保留每个单独记录的完整更改历史记录。它们会跟踪记录的每个版本,让您可以查看对特定条目所做的所有更改。
  • 缓慢变化维度 (SCD):缓慢变化维度专注于管理维度表中的更改,维度表存储有关数据的详细信息。它们允许使用类型 1、类型 2 和类型 3 等方法进行清晰且结构化的更新。SCD 确保历史数据保持准确可靠,从而更容易分析随时间变化的趋势。

历史表提供每条记录所有更改的完整视图,而缓慢变化维度则关注维度数据随时间的变化。这样,我们可以确保历史信息正确且易于查找。

维度建模中的非规范化

非规范化意味着在维度建模中将数据复制到多个表中。通过减少表的数量和所需的连接数量,可以简化数据库,从而使查询运行得更快,并帮助您更轻松地创建报告。

但是,保持这些复制数据的一致性可能很困难。例如,如果类别名称发生变化,则必须在维度模型中的多个位置进行更新。在关系模型中,您只需更新一次,这有助于防止错误。

比较维度模型和关系模型

在数据管理中,维度模型关系模型是两种不同的方法。维度模型旨在使数据分析更容易,而关系模型则侧重于准确地组织数据。

  • 维度模型:
    • 这些模型适合于分析数据和了解业务绩效。
    • 它们可以高效地处理许多表格,加快查询速度并使报告更容易。
  • 关系模型:
    • 如果数据以行和列为标准表格进行组织,则这些模型更容易设置。
    • 它们专注于保持数据正确并减少重复,但这会减慢分析速度。

维度建模使用不同的布局,如星型和雪花型模式。星型模式有一个主表,周围环绕着其他表,使其清晰易懂。

维度模型更适合分析数据,而关系模型则提供了一种清晰的数据管理方法。两者之间的选择取决于业务需求以及数据的复杂程度。

数据建模中的通用数据模型

通用数据模型 (CDM) 是一种存储和组织数据的标准方法,尤其是在数据仓库中。它创建了一种清晰一致的方式来表示表中的数据,使不同的系统更容易理解和处理信息。

从不同来源(如各种客户关系管理 (CRM) 系统)导入数据时,只使用一种系统的格式是不切实际的。每个系统可能具有不同的表结构和字段名称,这可能会造成混淆。相反,您应该创建一个新的通用数据模型 (CDM),将所有这些格式整合到一个清晰的结构中。此通用数据模型 (CDM)将足够灵活,可以满足您当前和未来的数据需求。许多云提供商为特定行业提供易于定制的 CDM,帮助您节省时间并降低数据集成风险。

数据仓库建模

数据仓库建模是一种组织数据的方法,由 Daniel Linstedt 于 2000 年开发。它提供了一种灵活可靠的方法来管理历史数据,从而更容易跟踪随时间的变化。

数据仓库模型有三个主要部分:

  • 中心这些表代表重要的业务理念,如客户或产品,具有唯一的 ID。
  • 链接这些表使用连接到中心 ID 的键来显示中心之间的关系。
  • 卫星它们包含有关中心或链接的额外详细信息,例如随时间的变化,并通过键。

Data Vault 的缺点

虽然 Data Vault 提供了灵活性和一种管理历史数据的明确方法,但它也带来了一些挑战,这些挑战可能会影响其工作效果和设置的难易程度。

  • 复杂性:设置 Data Vault 可能很复杂,需要熟练的专业人员来管理。
  • 数据重复:存储详细数据可能会导致重复条目,从而增加存储成本。
  • 性能:拥有许多表可能会减慢数据检索速度,使查询更加复杂。
  • 缺乏标准化:由于这是一种较新的方法,因此可能很难找到在 Data Vault 方面经验丰富的工程师。

Kimball 和 Inmon 数据仓库方法

本节介绍构建数据仓库的两种主要方法:Inmon 方法Kimball 方法。每种方法都有各自的优势和挑战,正确的选择取决于您的组织需要什么。

Inmon 自上而下的方法

Inmon 方法从收集来自不同来源的信息的中央数据仓库开始。之后,使用来自中央仓库的数据为特定部门创建较小的数据集市。这种结构化方法通常是注重数据质量的大型组织的首选。

Inmon 方法中的流程:

  • 数据暂存:首先,将数据从不同来源快速收集到临时表中,无需进行任何更改。
  • 企业信息工厂 (CIF):接下来,将数据组织在一个中心位置,作为组织的主要事实来源。
  • 依赖数据集市:在设置 CIF 后,将为不同部门创建较小的数据集市,使用中央数据作为其信息。

优点:此方法有助于保持高数据质量,并且非常适合具有复杂数据需求的大型组织。

挑战:它可能导致数据重复,从而增加存储成本并使维护更加困难很难。

Kimball 自下而上的方法

Kimball 方法首先将原始数据收集到临时表中,称为暂存表,但不进行清理。此方法侧重于首先创建独立的数据集市,这些数据集市旨在满足不同业务领域的特定需求。然后连接这些数据集市以提供完整的数据视图。

Kimball 方法中的流程:

  • 独立数据集市:每个数据集市都是为特定部门构建的,使用简单的模型使分析更容易。
  • 集成:数据集市通过通用维度链接,确保所有区域保持一致。
  • 用于报告的多维数据集:数据可以组织成多维数据集,这使得从不同角度查看数据变得容易。这可以帮助您快速找到重要的见解。

优点:此方法鼓励用户参与,从而实现更好的数据管理。它还降低了多次存储相同数据的可能性。

挑战:如果管理不善,数据集市之间可能会存在差异,从而导致混乱和报告不准确。

Inmon 和 Kimball 之间的差异

本节展示了 InmonKimball 方法之间的主要差异,重点介绍了每种方法如何满足不同的需求。

  • 起点:Inmon 首先创建一个从不同来源收集数据的中央数据仓库。相比之下,Kimball 专注于从一开始就构建单独的数据集市,以满足不同部门的特定需求。
  • 结构:Inmon 强调物理中央数据仓库,它是组织的单一事实来源。然而,Kimball 允许更大的灵活性,让组织无需严格的中央仓库即可创建数据集市。
  • 适应性:Inmon 和 Kimball 都可以适应现代数据实践,例如使用数据湖。这种灵活性有助于组织跟上不断变化的数据需求,并使管理各种数据源变得更加容易。

这些差异有助于组织选择最适合其数据管理需求和目标的方法。

混合模型

混合模型结合了 KimballInmon 方法的部分内容。它首先将来自各种在线事务处理 (OLTP) 系统的原始数据收集到临时保存表中,而无需清理。

然后,将数据移动到企业信息工厂 (CIF),并以详细格式存储。之后,将数据传输到独立的维度数据集市,这些数据集市可以根据每个部门的需求保存详细数据和汇总数据。

某些数据还可以放入多维数据集中以进行报告。建议使用多维数据集,因为它们:

  • 充当清晰的界面。
  • 同时支持多个用户。
  • 提供汇总数据以提高速度。
  • 消除复杂的连接。
  • 包括层次结构和关键绩效指标 (KPI)。
  • 通过行级安全性确保数据隐私。
  • 允许进行高级时间计算以进行趋势分析。

提取、转换、加载 (ETL)过程中使用数据库视图可以使编码更容易并改善查询。 视图是基于 SQL 查询的虚拟表,有助于管理复杂性而无需存储额外数据。

镜像 OLTP 系统

混合模型涉及镜像联机事务处理 (OLTP)系统,它是与原始系统一起运行的副本。这种安排允许主 OLTP 在收集数据时专注于用户访问和维护。它还简化了提取、转换、加载 (ETL)流程,并且可以通过允许特定索引而不影响原始系统来提高性能。

选择正确的数据模型

在选择数据模型时,没有一刀切的方法。您的决定应该考虑安全性、数据大小和性能等因素。例如,添加星型模式可以提高查询性能。

关于 Inmon 和 Kimball 方法的常见误解

以下是一些关于 InmonKimball 数据方法的常见误解:

  • Kimball 是纯粹自下而上的:事实上,Kimball 将自上而下的规划与自下而上的执行相结合,注重设计和实施。
  • Inmon 需要大量的前期设计:Inmon 支持逐步构建数据仓库,而不是试图一次性完成所有事情。
  • Inmon 不支持星型模式:实际上,Inmon 认识到星型模式数据集市的好处,便于用户访问。
  • 很少有公司使用Inmon 的方法:调查显示,许多组织实际上更喜欢 Inmon 方法。
  • 这些方法不兼容:Kimball 和 Inmon 可以很好地协同工作,尤其是在混合模型中。

Kimball 的方法包括项目规划和维护,而 Inmon 则专注于数据仓库本身。当人们谈论 Kimball 时,他们通常指的是维度建模,其中包括一致性维度和快照事实表等技术。