跳到主要内容

数据库模式设计:集成和分析的最佳实践

是什么造就了优秀的数据分析?丰富的数据源、及时可靠的数据仓库复制,最重要的是,将数据组织到易于分析人员访问和使用的模式中。Fivetran专注于数据管道,但我们已经与许多不同用例的客户合作过,我们也从数据库模式设计的最佳实践中学到了一些经验。

什么是数据库模式?

每个数据库都可以用一个数据模型来描述:数据库中所表示的所有实体中的所有元素的图片。模式是一种文档,它列出数据库的逻辑结构,并将数据模型转换为特定的表、列、键和相互关系。

您可以将模式视为数据集的表和关系的蓝图。它定义了逻辑数据库设计,在某种程度上,也定义了物理设计,具体取决于数据库。良好的数据库模式设计对于使数据易于处理至关重要,这样您就可以理解数据并构建所需的仪表盘和报告。

由于数据仓库是关系数据库,数据仓库中存储的数据也用模式来描述。当数据管道从SaaS或数据库源提取数据并将其加载到数据仓库时,它可以执行预处理(如清理和规范化),以使数据一致和清晰,然后在目标处填充模式描述的表。

数据库模式设计的重要性

模式将数据组织到具有适当属性的表中,显示表和列之间的相互关系,并施加数据类型等约束。数据仓库中设计良好的模式可以使分析人员的工作更加轻松

  • 从分析员的工作流程中删除清理和其他预处理

  • 使分析师不必对底层数据模型进行反向工程

  • 为分析师提供一个清晰、容易理解的分析起点

换句话说,设计良好的模式为更快、更轻松地创建报表和仪表板扫清了道路。

相比之下,有缺陷的模式需要数据分析师进行额外的建模,并迫使每个分析查询花费更多的时间和系统资源,这增加了组织的成本,并激怒了每个想要立即进行分析的人。

在数据分析领域,数据源和数据仓库都使用模式来定义数据元素。但数据源的模式——无论是MySQL、PostgreSQL这样的数据库,还是Microsoft SQL Server这样的数据库,还是Salesforce、Facebook Ads或Zuora这样的SaaS应用——在设计时并没有考虑到分析。特别是SaaS应用程序可能提供一些通用的分析功能,但它们只涵盖来自该应用程序的数据。用户不能调整SaaS模式——它们是由每个应用程序的开发人员定义的。

当企业数据被复制到数据仓库并与来自其他应用程序和组织的数据连接在一起时,企业数据会更有价值设计这些数据结构。

理解数据模型

利用应用程序中的数据的第一个也是最重要的步骤是理解底层数据模型。每个SaaS应用程序都隐含地包含一个世界的表示,因为世界是由组织、人员、事务和其他常见的业务概念组成的。理解哪些数据列对应于哪些真实世界中的等价物,对于理解数据的意义至关重要。

当您使用内部数据库时,很可能有开发人员和数据工程师可以解释模型。对于SaaS应用程序,您必须依赖供应商的文档和API,但两者的质量可能不一致。你可以从学校得到一些帮助Fivetran的应用程序文档页面,其中许多都包含相应应用程序的安装指南。

有几种方法可以理解源数据。在Fivetran的模式开发期间,我们的开发人员:

  1. 阅读文档

  2. 使用应用程序本身

  3. 与应用程序的普通用户交谈

  4. 与应用程序的开发人员交谈

您从文档中收集的知识、使用应用程序的经验以及与开发人员的咨询应该有助于您理解应用程序的业务逻辑以及它如何表示现实世界的概念。

数据规范化

一旦理解了数据模型,就该起草组成模式的表和其他元素了。一种可靠的关系数据库模式设计方法被调用归一化. 如果您是数据库专业人员,那么您熟悉这个过程;如果不是,简而言之,规范化努力消除重复、冗余和派生的数据值。通过规范化,数据库管理员可以将数据模型的逻辑结构转换为模式。

规范化过程的最终结果是一个数据库模式定义——一组表和列(也称为字段)。其中一些字段是关键字段,这意味着它们是惟一的,我们可以在它们之上建立索引,从而有效地存储和检索记录。但这些表格并不是独立存在的,它们相互关联。(这就是为什么它们被称为关系数据库管理系统。)一个表中的关键字段的值可能与另一个表中的关键字段的值相匹配,通过比较它们,我们可以连接两个表中的数据。我们如何识别这些关系?这就是实体关系图的用处所在。

实体关系图

实体关系图(ERD)是模式或实体关系模型的可视化表示。它们表示表之间的相互关系。您可以通过绘制它们来创建它们,或者使用软件工具主机创建它们。下面是一个逻辑数据库模式示例,显示了表、字段和主键。

erd说明了表、字段、表之间的相互关系和键

在规范化数据库中,每个表都有一个主键,主键表示表所表示的基本实体,并唯一标识该表中的每一行。例如,在客户表中,主键很可能是客户ID,该表将包含客户的姓名、地址、信用卡号码等信息。每条记录中的一些列就是我们所说的外键——也就是说,它们与来自其他表的主键相匹配。例如,一个员工记录将包含一个员工的社会安全号码作为外键;这个数字将是员工收入表上的主键。

这两种键将主键表示的实体与另一个表中表示的另一个实体连接起来。关键字段在ERD中由特殊符号表示。

使用主键和外键,我们可以表示三种类型的关系:

一对一。两个实体只能相互映射,不能映射其他元素。现实世界中的一个例子是社会保险号码,它只能映射到一个人身上。在Fivetran ERDs中,如果遇到与主表具有一对一关系的嵌套对象,我们只需将其数据展平到列中。

一对多。一个表中的一个实体可以与另一个表中的多条记录相对应,但反之则不然。一对多的示例可能是一家公司销售的冰淇淋口味列表,以及订购了以这些口味为特色产品的客户。食品零售商可能会使用这些数据来确定顾客最喜欢的口味。这种商业洞察力可以被用来主动推荐以这种口味为特色的新冰淇淋,当它们上市时。

因此,一对多数据库的业务价值得到了证明:发现用户行为中的共性及其生成的数据,并将其与推动收入的行动相协调。

每一种口味都可以有很多顾客,但每个顾客只有一种最喜欢的口味,这是最受欢迎的。如果我们遇到一个与主表有一对多关系的嵌套对象,它将被转换成一个单独的表。

多对多。这些关系在联接表中表示。联接表中的复合主键由两个相关实体的主键组成。例如,一个人的购物习惯可能会把他们带到许多商店,每个商店都会有许多顾客。

规范化模式的ERD以清晰而简洁的图表表示底层数据模型。

我们在我们的文档对于Fivetran支持的所有数据源。

Fivetran优化了从数据源到数据仓库的每一次同步,无论您实现了什么模式设计。要亲身体验Fivetran如何自动化数据集成,请注册免费试用或者联系一个产品专家.