数据建模

了解数据建模

在一个数据是公司最宝贵资产的时代,高效地收集、存储和管理大量数据对于确保竞争优势至关重要。但组织如何发挥不同数据源中数据的作用?组织怎么知道要收集哪些数据以及如何存储这些数据呢?

答案在于高效的数据建模——一种让开发者能够可视化数据管理系统的技术。数据建模帮助开发者了解需要收集哪些数据,以及如何识别不同来源数据之间的关系。这个过程助力决策者高效识别出对决策有用的数据集。

本文将介绍数据建模的概念,并说明其原理、技术、流程、好处、挑战,以及可以帮助您简化建模工作流程的工具。

什么是数据建模?

数据建模是一个代表应用程序或系统数据结构的蓝图。数据模型是一个图表,说明了相关的数据 Entity、对象、关系和复杂的存储模式。

数据模型还建立了数据定义、术语表和其他关键元数据,以帮助多个利益相关方为特定用例获取有意义的洞察。利益相关方可以包括数据分析人员、开发者和管理员,他们分析、组织和管理对数据源的访问。

高效的数据建模通过促进数据的共同理解、消除数据冗余和最小化管理障碍,确保团队间有效使用数据资产。它还允许组织识别和解决潜在的障碍和设计限制,以构建一个可扩展的数据处理系统。

数据建模原理

虽然创建数据模型的技术可能在不同用例间所有差异,但它们通常包括设计概念模型、逻辑框架和物理模型三个部分。

概念设计

设计概念模型(Conceptual design)是一种抽象过程。它使整体数据结构变得可视化,确定了项目的范围,并为创建系统设定了高级要求。

概念模型还为业务分析任务绘制了相关的数据 Entity、关系、集成和安全协议。例如,下图显示了一个销售数据库系统的基本概念模型。

1.PNG 1.PNG

概念模型

概念模型的目标是满足商业高管的数据需求,帮助他们发现关键的数据元素和关系,从而基于数据做出有效的决策。

逻辑框架

逻辑框架(Logical framework)提供了更多的细节,包括数据类型、唯一标识符和定义。它使用正式的数据表示法来标记 Entity 关系,并允许用户以更清晰的方式可视化数据属性和关系。

例如,销售数据库的逻辑框架可能包含连接产品表和销售表的主键。

2.PNG 2.PNG

逻辑框架

逻辑模型还帮助用户确定每个数据 Entity 所需的信息性质以及实现数据结构的规则。

物理数据模型

物理数据模型(Physical data model)是数据驱动系统的最详细的数据表示方式。它包括一个详细的 Schema 描述,说明系统将如何存储数据资产。

例如,在关系型数据库系统中,物理数据模型将包括每个表、列的名称和相应的数据类型。

3.PNG 3.PNG

物理数据模型

物理模型是特定于部分系统的,并将根据您尝试构建的模型类型而有所不同。下面的章节将更详细地解释不同的数据模型类型。

数据模型的分类

随着时间的推移,数据量增加,更加复杂的数据库管理系统(DBMS)出现了。DBMS 架构的多样性催生了多种数据模型类型。多样的数据模型能够帮助组织更有效地设计管理系统。

模型类型仍在不断发展,一些主流的类型包括层次(Hierarchical)数据模型、关系(Relational)数据模型、Entity-关系(Entity-Relationship)数据模型、面向对象(Object-oriented)数据模型和维度(Dimensional)数据模型。

层次数据模型

层次数据模型(Hierarchical data model)以一对多的树状结构组织数据,单个父记录连接到多个子记录。

4.png 4.png

层次模型

1966年,IBM信息管理系统(IMS)成为首个使用层次结构的系统。虽然这种模型如今已经变得不太常见,但它仍然被用于组织可扩展标记语言(XML)文件和地理信息系统(GIS)中的数据。

关系数据模型

关系数据模型由 IBM 研究员 Edgar F. Codd 在 1970 年提出。它比层次模型更加多功能,将数据组织到一张由行和列构成的表格中。这样一来,多个数据元素更容易发现,且数据关系更易于管理。

5.png 5.png

表格: 关系模型

关系模型允许用户根据主键连接多个表格,从而降低数据复杂性。结构化查询语言(SQL)主要用于在关系型数据库中进行数据操作和分析。

Entity-关系数据模型 data models

Entity-关系数据模型(Entity-relationship model,简称 ER 模型)根据 Entity 组织数据属性并映射多个 Entity 之间的关系。 例如,在销售 DBMS 中,客户是一个 Entity,其属性可能包括客户的姓名、地址、联系方式和其他特征。客户 Entity 可以通过特定客户购买的商品与产品 Entity 建立关系。

6.png 6.png

ER 模型

这种结构比关系模型更动态,有助于更有效地捕获和分析基于交易的数据。

面向对象数据模型

面向对象数据模型(Object-oriented data model) 随着面向对象编程的流行而变得流行,它根据数据对象的属性对它们进行组织。

具有相似属性的数据对象被归为同一类。程序员可以创建新的分类,这些类别可以继承之前类别的属性。

7.png 7.png

面向对象数据模型:数据对象圆形(CIRCLE)、长方形(RECTANGLE)和 三角形(TRIANGLE)继承形状( SHAPE)对象的属性。每个形状尤其自己的属性。

例如,在面向对象的数据模型中,客户和员工数据可能属于同一个类,因为它们具有相同的属性,如姓名、地址和联系信息。这与ER(Entity-关系)模型不同,在 ER 模型中,客户和员工是独立的 Entity。

维度数据模型

维度数据模型(Dimensional data model)将数据 Entity 组织为与事实表(Factsheet)相连的维度,从而提高数仓和数据 Mart 的分析能力。 Factsheet 包含有关事件的数据,而维度包含有关这些事件中出现的 Entity 的信息。

8.png 8.png

维度数据模型:销售 Factsheet 与其中的 Entity 的多个维度相关联。

例如,Factsheet 可以是一个记录多个客户日常交易的表格。用户可以在存储客户相关或产品数据的维度表中找到关于每个客户或产品的详细信息。

星型模式是最典型的维度数据结构,其中单个 Factsheet 连接到多个维度。另一种更复杂的结构是雪花结构,,许多维度表与各种 Factsheet 相关联。

数据建模与数据库设计、数据工程之间的区别

虽然数据库设计和数据工程是相似的概念,但它们在以下几个方面与数据建模有所不同。

  • 数据建模与数据库设计之间的区别:数据建模是构建数据库的初始阶段。数据库设计是一个不那么抽象的过程,它决定了实现数据模型的要求。开发者需要考虑最优的数据库结构从而提高可扩展性和数据完整性。例如,它可能包括选择主键、索引技术以及 Schema 设计。

  • 数据建模与数据工程之间的区别:数据工程是一个更泛化的概念,包括开发自动化数据管道来处理、转换和在多个平台之间迁移数据。一个高效的数据模型可以帮助构建稳健的数据库设计,协助开发者简化数据工程工作流程。

数据建模流程

设计数据模型需要多个利益相关方的输入,以帮助了解数据库系统的范围、目标和资源限制。

数据专家必须选择适当的数据模型类型来表示特定用例所需的数据结构。他们还必须确定相关的符号和约定的表示方式来构建模型。

虽然数据建模工作流程可能根据业务需求和数据的性质而有所不同,但下面我们提供了设计模型的几个步骤。

  • Entity 识别:第一步是识别数据必须包含的相关 Entity 。这些 Entity 必须是互斥的,并应构成模型概念设计的基础。

  • 属性识别:开发者必须识别每个 Entity 独有的属性。例如,在包含客户银行详细信息的数据库中,“银行账户”可以是一个具有独特属性的独立 Entity ,包含如账户类型、账户号码、创建日期、初始存款金额等信息。

  • Entity 间关系:映射多个 Entity 之间的关系。例如,“银行账户” Entity 与“客户” Entity 相关联,每个客户可以拥有一个或多个账户。

  • 分配主键:开发者必须为 Entity 分配唯一键,以正式表示它们之间的关系。例如,账户号码可以是一个主键,关联“客户” Entity 与“银行账户” Entity 。

  • 创建和完成数据模型:在识别了所有相关的 Entity 、属性和带有主键的关系之后,开发者可以确定数据模型并完成设计,以充分满足业务的数据需求。

数据建模的好处

数据模型是高效的数据管理系统的支柱。它允许众多利益相关方使用数据资产来发掘规律,获取对战略决策有价值的洞察。

以下为数据建模的好处。

  • 顺畅的沟通:数据模型有助于更轻松地与利益相关方沟通数据流和概念。

  • 一致的文档记录:由于数据模型提供了整体数据结构的可视化标准,文档记录更加一致,有助于进行更高效的系统设计。

  • 增强跨团队协作:基于对数据共同的理解,来自多个领域的团队可以在项目上更有效地协作。

  • 更好的数据质量:设计良好的模型可以确保数据源之间的数据完整性,并允许用户开发快速高效的数据分析工作流。

数据建模的挑战

尽管数据建模提供了多种优势,但在实施过程中也存在一些挑战。理解这些障碍并克服它们可以帮助组织更快地完成数据建模,体验数据建模的优势。

以下是开发者在设计数据模型时可能面临的一些挑战:

  • 日益增加的数据复杂程度:现代数据库管理系统(DBMS)必须能够动态应对不断变化的业务需求和日益增长的数据类型。然而,预测未来的变化是复杂的,需要做大量的推测。将模型分解为更小的组件并使用行业标准可以帮助减轻这类问题。

  • 管理层的支持:向管理层展示数据建模的好处可能倍具挑战。对于业务用户来说,数据建模可能过于抽象。为确保能够获得支持,数据团队必须在介绍数据建模及好处时,更贴近公司整体使命和愿景以说服高层管理人员。

  • 需求变化:设计数据模型是一个迭代的过程,可能需要不断调整数据建模的范围和目标。然而,频繁的变化可能导致设计偏离初衷并增加开发成本。从最初就尽早识别风险、要求利益相关方一同参与数据建模、定期获取反馈,可以帮助克服这些问题。

数据建模工具

开发者可以使用数据建模工具快速、高效地设计数据模型。虽然有多家供应商提供数据建模解决方案,但选择最适合您业务需求的解决方案需要时间和精力。下面,我们罗列一些主流的建模工具,希望能够帮助您快速做出选择。

  1. Erwin Data Modeler:用于创建详细的 Schema 和可视化 Schema 设计过程,支持多个数据库系统。它具有版本控制系统,并允许用户从现有数据结构反向生成数据模型。

  2. DbSchema:具有直观的用户界面,允许用户与数据模型互动,并在不使用代码的情况下直观地构建查询。

  3. ER/Studio:支持多个数据库系统,包括关系型数据库和多维度的数据库结构。其特色是协作工具,允许团队通过交流和讨论更有效地理解数据。

数据建模常见问题

1.数据建模和数据库设计之间有什么区别?

数据建模是指识别数据 Entity、属性以及不同 Entity 之间的关系。它有助于创建数据库用于存储这些 Entity 的整体结构,以及帮助用户利用这些关系进行分析。 数据库设计是在最终确定数据模型之后进行的,涉及在数据库管理系统(DBMS)中实现数据模型。它包括索引技术、 Schema 名称和存储结构。

2.数据建模中的归一化(normalization)是指什么?

归一化是将数据分组以消除冗余并提高数据一致性的过程。以下面一张关系数据库管理系统(RDBMS)中的表格为例:

9.png 9.png

如果用户想要删除特定客户的记录,他们需要删除对应商品的价格。归一化会通过创建两个表格将客户数据从价格信息中分离出来。

这个过程有助于确保数据一致性,用户可以在不改变信息整体结构的情况下更灵活地操纵数据。

3.如何为非结构化数据设计数据模型?

非结构化数据包括图像、视频和文本数据等。设计非结构化数据的模型需要使用不同的技术,因为非结构化数据的表示方式比传统 Schema 更加复杂。

开发者可以使用向量数据库来存储和开发非结构化数据的数据模型。这些数据库使用人工智能(AI)算法将数据样本转换为 Embedding 向量,即每条数据的向量化表示。向量中的每个元素对应数据样本的特定属性。

在将样本数据转换为向量形式之后,用户就可以使用相似度类型来计算向量距离,评估不同数据点之间的相似性。他们可以使用相似性分数来对数据进行分组,并开发非结构化数据模型。

4.数据建模中应避免哪些常见错误?

开发者经常会将数据模型设计得过于复杂,并且在设计阶段未能考虑到方方面面。此外,带入不必要的数据 Entity 以及未能考虑性能约束也是常见的一些错误。这些都会降低数据模型的效率。

5.如何选择合适的数据建模工具?

在数据建模工具选型的过程中,您需要考虑以下几个因素:

  • 易用性

  • 支持的数据库系统

  • 可视化功能

  • 协作工具

  • 可扩展性

  • 定价

推荐阅读

以下为非结构化数据管理和数据建模技巧相关文章:

准备好开始了吗?

立刻创建 Zilliz Cloud 集群,存储和检索您的向量。

免费试用 Zilliz Cloud