技术世界中的许多不同角色都会将数据标准化作为许多项目的常规部分。开发人员、数据库管理员、领域建模者、业务利益相关者以及更多人在规范化过程中取得了进展,就像他们呼吸一样。然而,看起来如此不可或缺的东西会变得过时吗?
随着数据库环境变得更加多样化,硬件变得更加强大,我们可能想知道是否还需要数据规范化的实践。我们是否应该担心优化数据存储和查询以便返回最少的数据量?或者,如果我们应该这样做,某些数据结构是否比其他数据结构更能解决这些问题?
在本文中,我们将回顾数据标准化的过程,并评估何时需要此过程,或者它是否仍然是数字化存储和检索数据的必要部分。
什么是数据标准化?
数据规范化正在优化关系数据库中的数据结构,以确保数据完整性和查询效率。它通过将数据经过一系列步骤来标准化结构(范式)来减少冗余并提高准确性。从本质上讲,数据规范化有助于避免插入、更新和删除数据异常。这些异常在创建新数据、更新现有数据或删除数据时发生,并对保持数据值同步(完整性)造成挑战。当我们逐步完成规范化过程时,我们将详细讨论这一点。
这些步骤需要验证键(相关数据的链接)、将不相关的实体与其他表分开,以及将行和列作为统一的数据对象进行检查。虽然范式步骤的完整列表相当严格,但我们将重点关注商业实践中最常用的范式:第一范式、第二范式和第三范式。其他范式主要用于学术和统计学。范式步骤必须按顺序完成,在前一个范式完成之前我们不能移动到下一个范式。
我们如何进行数据标准化?
由于我们有三种范式来获取数据,因此我们将分为三个步骤来完成此过程。它们如下:
- 第一范式 (1NF)
- 第二范式 (2NF)
- 第三范式 (3NF)
一位大学数据库教授教我的班级记住三种范式:“关键,整个关键,除了关键之外什么都没有”(就像在法庭上宣誓真相一样)。我不得不刷新本文的一些正常形式的详细信息,但这个基本短语一直困扰着我。希望它也能帮助您记住它们。
我最近发现了一个咖啡店数据集,它似乎很适合我们用作标准化数据集的示例。通过对此处的示例进行一些调整,我们可以逐步完成该过程。
非规范化数据
<正文>
交易日期
transaction_time
instore_yn
客户
loyalty_num
line_item_id
产品
数量
单价
promo_item_yn
2019-04-01
12:24:53
Y
卡米尔·泰勒
102-192-8157
1
哥伦比亚中度烘焙咖啡
1
2.00
N
2019-04-01
12:30:00
N
格里菲斯·林赛
769-005-9211
1,2
牙买加咖啡河 Sm,燕麦烤饼
1,1
2.45,3.00
N,N
2019-04-01
16:44:46
Y
斯图尔特·努涅斯
796-362-1661
1
早晨日出柴 Rg
2
2.50
N
2019-04-01
14:24:55
Y
阿利斯泰尔·拉米雷斯
253-876-9471
1,2
卡布奇诺 Lg、特大咸味烤饼
2,1
4.25,3.75
N,N
表>