2.3.1关于规范化


规范化是一个数据设计过程,其高级目标是将每个事实保持在一个位置,以避免数据冗余以及插入,更新和删除异常。有多个级别的规范化,本节将介绍前三个级别。考虑到第三范式(3NF)项是多么基本,只看到如何达到3NF才有意义。考虑一种跟踪销售情况的情况。您跟踪的核心实体是销售订单,其中每个销售订单包含有关所购买的每个项目的详细信息(称为行项目):其名称,价格,数量等。该订单还包含客户的名称和地址等。有些订单有很多不同的订单项,有些订单只有一个。在第一范式(1NF)中,没有重复的数据组,也没有重复的行。行和列(字段)的每个交集都只包含一个值,并且没有包含相同事实的列组。为避免重复行,有一个主键。对于销售订单,在第一范式中,不显示表格的单个字段中的每个销售订单的多个行项目。此外,不会有多个列显示订单项。然后是第二范 香港云主机式(2NF),其中设计是第一范式,每个非键列依赖于完整的主键。因此,订单项会分为销售订单行项目表,其中每行代表一个订单的一个订单项。您可以查看订单项表,并查看所售商品的名称不依赖于订单项表的主键:销售商品是其自己的实体。因此,您将销售项目移动到其自己的表格,显示项目名称。每件商品的价格可能因订单而异(例如,由于折扣),因此这些价格保留在订单项表中。对于销售订单,客户的名称和地址不依赖于销售订单的主键:客户是其自己的实体。从而,接下来是第三范式,其目标是确保不依赖于非关键属性。因此,目标是获取与行的主题(主键)不直接相关的列,并将它们放在自己的表中。因此,有关客户的详细信息(例如客户名称或客户城市)应放在单独的表中,然后将客户外键添加到订单表中。2NF表与3NF表的不同之处的另一个例子是网球锦标赛的获胜者表,其中包含锦标赛,年份,获胜者和获胜者出生日期的列。在这种情况下,获胜者的出生日期很容易出现不一致,因为同一个人可能会在不同的记录中显示出生日期。避免这个潜在问题的方法是将桌子分成一个用于比赛获胜者,另一个用于球员出生日期

相关推荐: (版本定制)第16课:Spark Streaming源码解读之数据清理内幕彻底解密

本期内容: 1、Spark Streaming元数据清理详解 2、Spark Streaming元数据清理源码解析一、如何研究Spark Streaming元数据清理操作DStream的时候会产生元数据,所以要解决RDD的数据清理工作就一定要从DStream入…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/24 10:55
Next 07/24 10:56

相关推荐