【数据建模】如何通过9个步骤创建数据模型

视频号

微信公众号

知识星球

Chinese, Simplified

了解如何创建数据模型是构建成功应用程序的第一步。这是如何将业务需求转化为现实的基础。

事实上,应用程序的所有其他元素都建立在数据模型上。

然而,提出一个有效的数据模型带来了一些关键挑战。这是一个复杂的过程,涉及最终用户、技术团队和其他业务利益相关者。

今天,我们将详细介绍如何创建成功的数据模型。

首先,让我们从基础知识开始。

什么是数据模型?

数据模型是应用程序如何存储、连接、组织和管理数据的抽象概述。这包括你需要的价值观,它们来自何处,以及它们的结构。

这在以下几个方面与数据库模式(database schema)不同:

  • 您的数据模型包含了如何跨所有源构建数据,而模式(schema )通常只适用于单个源。
  • 数据模型更关心数据是如何以抽象的方式构造的,而不是每个源的技术细节

这里的目标是为应用程序如何处理和处理数据构建一个框架。这就构成了构建应用程序自动化流程和用户界面的基础。

为什么需要数据模型?

也许更好的问题是“为什么需要显式构建数据模型?”每个应用程序都有一个数据模型。这真的只是一个问题,你是否已经考虑过为你的需求创造最有效的解决方案。

这会影响应用程序的安全性、功能性、性能、可扩展性和可用性,仅举几个因素。

因此,第一次获得正确的数据模型是值得的。

当从单个应用程序内的源中提取数据时,这一点尤其正确。例如,您需要的一些信息可能包含在外部源中,以及内部数据库中。

开发数据模型的很大一部分是建立您需要的数据,以及数据的来源

拥有有效的数据模型还可以确保多个源之间的兼容性、最佳性能、可扩展性和有效的安全性

如何通过9个步骤为应用程序项目创建数据模型

为了确保最佳结果,遵循可复制的框架是有用的。

以下是为下一个应用程序项目构建完美数据模型所需的具体步骤,以及在此过程中需要考虑的所有关键事项。

1.收集业务需求

第一步是收集应用程序如何处理数据的业务需求。在这个阶段,需求可以是相当一般的,我们还不需要担心具体的变量。

从本质上讲,收集需求意味着弄清楚你的应用程序实际会做什么,并对实现这一目标所需的数据进行全面概述。

这意味着与不同的业务利益相关者(包括最终用户、决策者、客户和技术同事)接触,以建立应用程序所需功能的概述

例如,如果我们正在构建一个员工时间表应用程序,我们的高级需求将如下所示:

  • 员工应能够记录不同项目的工时。
  • 项目所有者应该能够监控时间使用情况。
  • 项目所有者应能够查询和批准时间表提交。
  • 该应用程序应提供与CRM和计费平台的集成。

当然,这些只是我们可以解决的需求类型的几个示例。

Data model timesheet form example

2.定义业务流程

接下来,我们可以开始将我们的需求充实到更具体的流程中。这意味着概述应用程序应如何响应不同的事件和触发器。这包括系统过程以及对用户操作的响应

同样,我们仍然想用抽象的术语来做这件事,而不必担心具体的变量。

此步骤也称为创建逻辑数据模型

稍后,我们将使用这些信息构建更具体的数据结构。

不过,目前,我们可以使用非技术性的业务语言简单地概述我们所需的流程。

例如,我们可以为时间表示例概述以下业务流程:

  • 应用程序应计算所有时间表提交的人工成本。
  • 员工提交相关时间表时,应通知项目经理。
  • 项目经理应该能够查看每个项目在支出和时间使用方面的状态。
  • 员工应该只能编辑自己提交的内容。项目经理应能够编辑任何相关提交文件。
  • 该系统应与外部平台集成,以根据项目时间表生成和发送发票。

同样,这些只是业务规则的几个示例。逻辑建模的目标是充实用户可以采取的不同操作,以及我们的应用程序将如何响应,以及它可能在后台执行的任何其他过程。

然后,我们可以开始规划实现这一目标所需的数据。

3.创建概念数据模型

下一步是创建概念数据模型。这是一个更加结构化的数据计划,我们将需要这些数据来实施我们在上一步中确定的流程。现在,我们将继续使用非技术性的商业术语。更具体的技术细节将在稍后介绍。

创建一个概念模型就是要弄清楚不同类型的数据将如何结构化以满足我们的目标。

这里的第一步是决定我们的数据将包含哪些广泛的实体。然后我们可以概述我们需要了解的每一个信息,并开始绘制它们之间的一般链接。

因此,在我们的时间表应用程序示例中,我们的实体需要包括:

  • 员工,
  • 项目,
  • 项目业主,
  • 时间表,
  • 用户。

根据您的业务,您可以添加额外的实体。例如,项目中的单个任务,或实施这些任务所需的其他资源。

接下来,我们将为每个实体创建一个简短的数据类型概要。例如,您员工的个人和专业详细信息、小时费率,或每个项目的要求、预算和目标。

最后,您的概念模型应该包括不同实体如何关联的概述。例如,每个项目有一个所有者,每个员工可以提交多个时间表等。

Relational Data Model

4.定义实体和属性

一旦我们确定了我们的实体,我们就可以开始更紧密地定义它们。最常见的方法是将每个实体转换为不同的数据库表。在这里,行将表示我们实体的每个单独实例,例如特定的员工或项目。

每一列都将表示我们希望为每个实体存储的特定属性。这意味着我们需要决定:

  • 我们需要知道的具体变量,
  • 它们将如何格式化,
  • 我们如何称呼它,
  • 以及我们将适用于他们的任何规则。

如果您决定需要为应用程序创建一个新数据库,这将构成架构的一部分。如果您要依赖现有数据,那么在选择数据源时需要考虑到这一点。

查看我们的深入指南,什么是数据库模式,以了解更多信息。

table in a data model

5.识别数据源

数据模型的很大一部分实际上是在计算值的来源,以及如何存储这些值以使应用程序正常运行。这意味着识别应用程序的数据源。

这可能包括:

  • 内部数据库,
  • 外部数据库,
  • API和web服务,
  • 平面文件,
  • 其他现有业务资产。

请注意,这些是我们可以使用的现有数据的主要来源。我们还可以通过从完成的应用程序发送查询来添加或更新其中的值。

External data connectors

这里的关键任务之一是决定是创建全新的数据源还是依赖现有的数据源。当然,我们可以将两者结合起来构建数据模型。

通常,有不同的选项可用于实现类似的结果。

让我们考虑一下我们可以用哪些不同的方式来构建员工时间表的数据源。

最简单的选择是围绕我们已经确定的实体建立一个专用的内部数据库。这将为我们提供对属性和实体的结构和存储方式的最大控制,因为我们必须从头开始创建自己的数据库模式。

然而,这也会使与其他平台的集成变得更加复杂

我们还可以直接或使用API连接到现有的外部数据库

也就是说,假设存在合适的数据库。自然,这就省去了我们自己创造自己的努力。它还可以方便地与已经查询相同数据的任何其他工具集成。

缺点是现有数据库的模式可能不符合我们的需求。在这种情况下,我们需要转换查询输出,以符合我们要求的方式格式化数据。

通常,我们需要将两者结合起来。因此,在我们的时间表应用程序中,我们可以从外部来源获取员工详细信息和项目信息,但要创建一个内部数据库来存储用户提交时间表的输入。

我们还创建了一个关于如何集成多个数据库的指南。

6.建立实体之间的关系

前面,我们简要介绍了如何定义数据模型中不同实体之间的关系。现在,我们对我们的实体有了更坚定的技术观点,我们可以在它们之间建立更具体的关系。

这里有一些不同的事情需要了解。

首先,为每一组实体选择正确的关系非常重要。这里有几个选项:

  • 一对一的关系。
  • 多对一关系。
  • 多对多关系。

我们还需要决定每个表中的哪些列来建立关系。这里的细节将取决于您的DBMS。

例如,在单个SQL数据库中,需要为给定表中的每一行定义主键。这些是唯一的值,由其他表用于引用相关行。当主键出现在相关表中时,它就是所谓的外键。

如果数据模型包含多个数据库,则需要采取其他步骤来建立关系。例如,构建一个内部数据库,以便您可以从不同的源查询和存储实体。

有关更多信息,请查看我们使用多个数据源的指南。

7.物理建模

接下来,是创建物理数据模型的时候了。这包括如何构建任何内部数据库以及如何连接到外部数据源的更具体细节。

因此,创建物理模型本质上意味着将前面的步骤付诸实践。

如果您正在为应用程序创建自己的数据库设计,这意味着为所有属性定义特定名称,以及它们的类型、格式、完整性约束和任何其他管理它们的规则。

查看我们的数据库模式指南以了解更多信息

在使用外部数据源时,我们还必须考虑如何将这些数据源连接到我们的应用程序。一种方法是手动指向源的名称、位置、身份验证详细信息以及应用程序代码中的其他信息。

使用低代码工具和其他较新的应用程序构建平台,我们还可以使用专用数据连接器。

这些是用于建立与特定类型外部数据的连接的专用接口。您可以简单地在GUI中输入所需的信息,而不是手动创建必要的代码。

然后,根据工具和数据源,您可以手动创建所需的查询,或导入源提供的所有可用查询。

8.规范化并确保数据的完整性

创建数据模型时,您的主要目标之一是确保应用程序数据的长期有效性、可靠性和完整性。这包括避免冗余、冲突值、格式问题等。

实现这一点的一种方法是通过数据标准化。

规范化本身就是一个话题。本质上,这是一组策略,可用于在维护数据时防止冗余和异常。

这里有许多技术可供您使用。

最常见的问题是如何首先构建数据。更具体地说,目标是创建实体,每个实体处理一个特定主题或想法。如果您遵循了我们迄今给出的建议,那么这将已经构建到您的数据模型中。

这里的规则是,每当一组值可以应用于表上的多行时,您应该考虑为这些值创建一个专用实体,并使用关系将其链接到原始表。

这提高了性能,同时降低了我们所需的存储空间。

例如,在员工目录中,可以针对每个员工行存储名为department_name、department_phone和department_head的属性。

这意味着我们必须在employee_details表中多次存储完全相同的信息。

列出公司的所有部门或更改其详细信息也会不必要地困难。

因此,更好的解决方案是创建一个专用的部门表,并将相关行链接到每个员工的条目。这提供了更简单的查询和维护,并减少了服务器上的负载。

9.维护数据模型

即使实现了数据模型,仍然存在维护数据模型的问题。这带来了一些挑战,尤其是在扩展应用程序时。例如,当涉及到增加数据集和为应用程序本身添加新功能时。

至关重要的是,您可以在不破坏数据模型的情况下应对变化。

这可能意味着添加对象、更改现有对象、修改关系或更改单个属性。

关键是确保您的数据模型在需要更改时易于适应。例如,如果需要添加新功能、实体、属性、流程或关系。

也就是说,您必须能够进行所需的更改,而不会影响数据的其他元素。例如,对一个属性的更改可能会无意中通过传递依赖关系影响另一个属性。

因此,例如,您可能需要更改特定属性的格式,以实现对新的第三方工具的支持。这样做有可能破坏数据模型中依赖于此属性的任何其他元素。

采取措施防止这种情况的发生至关重要。

除此之外,在存储空间和用户数量方面,还面临着确保您有足够的服务器容量以促进增长的挑战。在建模阶段对此进行充分的规划有助于防止以后需要进行数据迁移。

BudibaseDB

Budibase中的数据建模

Budibase提供了一系列功能,可以更快、更容易地为应用程序创建有效的数据模型。

我们为最常见的外部数据源提供专用连接器,包括:

  • SQL.
  • Postgres.
  • REST API.
  • Oracle.
  • MongoDB.
  • CouchDB.
  • Oracle.
  • Google Sheets.

我们的内置数据库为您的数据创建定制结构提供了一种简单、直观的方式。BudibaseDB具有关系数据、对多种数据类型的广泛支持、直接CSV导入等功能。

只需单击按钮即可构建实体、创建属性、分配值和链接表。使用BudibaseDB,只需最少的编码技巧,即可轻松创建和维护应用程序的完美数据模型。

本文地址
https://architect.pub/how-create-data-model-9-steps
SEO Title
budibase How to Create a Data Model in 9 Steps