在我们所处的时代,数据是新的黄金。现在公司拥有的真正财富是数据。一个公司或组织所拥有的数据量以及如何部署这些数据,对其成功有很大的影响。这是因为今天的决策、营销、发展、增长、客户管理和销售都基于数据。今天公司面临的巨大挑战是处理这些大量的数据,这就是为什么我们更经常地遇到数据规范化。但什么是数据规范化?我们为什么需要它?它的好处又是什么?在这篇文章中,我们将回答所有这些问题以及更多。
什么是数据规范化?
数据规范化,或称数据库规范化,是一个组织和构建数据库以减少数据冗余的过程。简单地说,数据库规范化的过程就是确保每一个字段和记录都是有逻辑的,这样不仅可以避免冗余,还可以使任何关系型数据库的使用更加高效:避免任何数据输入错误、意外删除,还可以缓解数据的更新过程。理解数据规范化非常简单,但这个过程比它看起来更复杂。数据规范化遵守特定的规则,规定了数据库应该如何组织。
数据规范化的好处
无论你是使用关系型数据库。 CRM平台、数据分析或以任何方式处理应用程序的开发,你都需要数据规范化。你可能认为数据库规范化会给你和你的团队带来额外的工作,但一旦你知道它的好处,你就会改变主意。那么,数据规范化的好处是什么?
减少了数据库的大小
当你的数据库中有重复的数据时,你需要很多空间来存储这些数据,但这完全是一种浪费。数据规范化导致减少你的数据库存储空间,这意味着,如你所知,你在节省资源和金钱。
简化查询
通过一个组织良好的数据库来搜索信息总是比在一个混乱的地方做同样的事情要容易,无论你是手工操作还是使用一个自动化的数字工具。
简化维护
数据库规范化可以防止出现问题,并使数据库的维护更加容易。同样,这将避免资源和金钱的浪费。
提高性能
正如你可能已经知道的,数据库是每个应用程序或软件一般运作的基础。数据库规范化加快了检索数据的过程,这将随之提高你的应用程序的性能。
谁需要数据规范化?
无论谁出于任何目的与数据和数据库打交道,都需要数据规范化。拥有一个冗余的、组织不良的数据库是没有意义的。然而,有一些领域的数据规范化是特别重要的。
- 数据分析:如果你需要从多个数据库中提取有用的信息,你希望它们是规范化的。
- 软件开发:在优化任何应用程序的性能时,数据规范化会产生巨大的差异。当开发者需要在开发过程中整合来自软件即服务应用的数据时,它变得极为重要。
- 企业:每家公司都需要收集数据,然后利用这些数据来做决策,发展企业本身,制定他们的营销策略,等等。
- 专业人士:任何有独立工作的人都需要组织他们的客户、他们的信息、他们的服务/产品目录,以及更多。换句话说,他们需要数据库和数据规范化。
数据规范化如何工作
到目前为止,我们已经把数据规范化作为一个理论概念来谈了。但是,当我们深入到它最实际的方面时,我们发现它是一个由标准和具体规则组成的过程,如果你想优化你的数据库并利用我们上面讨论的所有优势,你就需要知道这些规则。
从根本上说,数据规范化是关于决定插入数据库的所有数据的标准。例如,如果我们有一个带有电话号码和地址的客户数据库,我们的标准可以是这样的。
- 所有的名字都以这种形式书写。Dursley, Vernon.
- 所有的电话号码都以这种形式书写。530-000-0000.
- 所有的地址都以这种形式书写。4, Private Drive, San Francisco.
然而,有些标准是每个与数据库打交道的人所共有的,无论他们在哪里,无论他们在做什么工作。有一些规则被分组在称为正常形式的层级中。它们的组织方式是,每一种正常形式都建立在上一种正常形式的基础上;换句话说,只有当你已经应用了第一种正常形式时,你才能应用第二种。
有几种正常形式已经标准化,但最常见的和最重要的是前三种--这就是为什么我们在这篇文章中更详细地讨论它们。然而,除了正常形式之外,还有其他一些你想坚持的一般规则。例如,数据库中的表应该包含一个主键。主键值可以区分每一行,并将每条记录与一个唯一的ID联系起来。因此,在进入第一正常形式之前,确保你的数据库或表有一个主键字段。
第一正常形式(1NF)
第一正常形式规定,你的数据库的每个字段应该只存储一个值,一个数据库不应该有两个类似的字段来存储信息。让我们用一个例子来更清楚地说明。这是一个存储有关课程和教授信息的数据库。
教授ID | 教授姓名 | 课程 |
P001 | 格雷戈尔-米切尔 | 文学 创意写作 |
P002 | 安吉拉-麦戈尔 | 物理学 |
这个数据库在两个方面违反了第一正常形式。
- 一个字段中有两个值,因为Mitchell教授教两门课。
- 有两个字段存储了类似的信息。教授ID和教授姓名都提供了关于教授身份的信息。
为了使我们的数据库规范化,我们需要将其一分为二。
- 第一个包含与教授身份相关的信息,包括两个字段:教授ID和教授姓名。
- 第二个数据库将有两个字段:一个是课程,一个是与教授该课程的教授ID相对应。
现在,我们有两个数据库,其中第一个数据库与第二个数据库有一对多的关系。这两个表是通过一个外键连接的,也就是教授ID字段。
第二正常形式(2NF)
第二正态形式旨在减少冗余,确保每个字段存储的信息都能告诉我们有关主键的信息。换句话说。
- 每个数据库必须只有一个主键
- 所有的非主键必须完全依赖于主键
这两个原则确保了每个数据库都存储了关于主键中所包含的相同论点的一致信息。同样,让我们用一个例子来帮助我们理解。
我们有一个教授生日和部门数据库,它看起来像这样。
教授姓名 | 生日 | 部门 |
哈利-格雷 | 七月,1 | 文学 |
维多利亚-怀特 | 九月,19 | 文学 |
保罗-索尔 | 三月, 1 | 文学 |
詹姆斯-史密斯 | 6月5日 | 科学 |
上述数据库遵循第一种正常形式,因为每个字段只包含一个信息,而且字段都是提供不同的信息。然而,它并不遵守第二种正常形式,因为虽然生日字段完全取决于他们的名字,但他们所属的部门并不取决于他们的生日。
为了使这个数据库正常化,我们需要把它分成两个。
- 一个教授生日数据库,包括两个字段。教授姓名和生日
- 一个教授部门数据库,包括两个字段。教授姓名和部门
第三正常形式(3NF)
当一个数据库没有任何传递性的依赖关系时,它尊重第三种正常形式。什么是过渡性依赖?当你的数据库中的B列依赖于A列,而A列依赖于主键的时候,你就有了跨性依赖关系。为了按照第三种正常形式规范化数据库,你需要删除不直接依赖于主键的列B,并将该信息存储在第二个具有自己主键的数据库中。
让我们再举一个例子。我们有这个订单数据库。
订单ID | 订单日期 | 客户ID | 客户邮政编码 |
D001 | 01/3/2022 | C001 | 97438 |
D002 | 06/15/2022 | C002 | 08638 |
这个数据库不尊重第三种正常形式,因为我们有主键,订单ID。订单日期和客户ID完全依赖于此,但是客户邮政编码依赖于客户ID,而客户ID并不是主键。正如我们所提到的,为了按照第三种正常形式规范这个数据库,我们需要创建第二个客户邮编数据库,将每个客户的ID与他们的客户邮编联系起来。
什么是SQL键?
当然,当我们处理一个SQL数据库时,数据规范化变得非常重要。SQL是关系数据库系统的标准语言,被任何计算机用来存储、操作和检索关系数据库中的数据。SQL 键是用来从数据库或表中获取数据的属性(可以是单个或多个属性)。它们也被用来在不同的数据库之间建立关系。
有几种最重要的SQL键的类型。
- 超级键:超级键是一个表中的一个或多个列的组合,可以唯一地识别表中的一条记录。
- 外键:当你有两个相关的数据库时,它很重要。在我们为第二种正常形式所做的例子中,我们有两个正常化的数据库,"共享 "教授ID字段。教授ID是外键,它的作用是告知各数据库它们是相关的。
- 主键:它是一种SQL 的键。正如我们所提到的,根据第一种正常形式,每张表不能有一个以上的主键,而且所有的字段必须直接和完全依赖于它
总结
在这篇文章中,我们已经讨论了数据规范化的重要性。正如我们所提到的,它可能看起来是一个减缓工作流程并使其更加复杂的过程,但其优势在于它值得进行额外的工作。
数据规范化也是一个例子,说明管理数据库会变得非常复杂。出于这个原因,依靠能够尽可能简化工作的工具是很重要的。在这方面,值得推荐的是 no-code工具AppMasters,它允许你创建应用程序并管理其数据库,而无需编写任何代码。你可能仍然需要学习数据规范化规则,但应用它们会变得容易得多