《DBA修炼之道:数据库管理员的第一本书》——3.6节范式

3.6 范式
正如前面所提,Dr. Codd首先描述了数据规范化。他在1971年和1972年发表了几篇论文来描述前三种范式。后来Codd和其他人定义了额外的范式。

3.6.1 第一范式
第一范式(1NF)的目标是去除实体中的重复分组和非原子数据。数据符合1NF时,实体的每个属性都是离散的(换句话说,都是原子的)。术语atomic由atom演变而来,是指可以独自存在的、不可分割的最小粒子。
第一范式去除实体中的重复分组和非原子数据。
当且仅当数据表的所有列只包含原子值时,即满足第一范式。
要想使数据模型符合1NF,必须将重复的分组分裂成单个实体以消除分组。换句话说,在单个实体中不要使用多个属性来存储相似的数据。表3-2的示例数据显示了某大学的STUDENT信息系统。

该数据多处违反了1NF。首先,课程在STUDENT中确实是重复的,因此,课程信息应转移到独立的实体。此外,要为所有的实体都指定标识符。标识符是实体的主码。
谨慎地为各实体选择合适的主码。这可能比较棘手,最先想到的可能是选择CourseNum作为COURSE实体的主码。但就该数据的情况来看,还需要更多的信息来识别课程信息。课程完成日期可用于STUDENT和COURSE的组合,即除非有学生参加并修完了该课程,这门课程才算完成。
第二个违背1NF的地方是,属性StudentName中包含了非原子数据。学生的姓名可以分解为:名、中间名和姓。由于可以分割,因此违背了第一范式。1NF的最终结果见表3-3和表3-4。

3.6.2 第二范式
第二范式(2NF)确保每个实体的所有属性都依赖主码。将1NF转换成2NF,要为那些适用于多条记录的属性创建单独的实体,并为该新实体分配外码使之与原来的实体相关。简单来说,实体实例不应依赖除实体主码以外的任何东西。
第二范式确保每个实体的所有属性都是依赖的。
当且仅当满足第一范式,并且每一个非主属性都完全依赖主码时,即满足第二范式。
再来看一下表3-3和表3-4,实体COURSE中有些课程是重复的,如“英语经典I”和“人的上升”,这就违背了2NF。要解决这个问题,需要找出那些不依赖码的属性,将它们删除。这些被删除的属性,连同它们依赖的主码一起放到一个新的实体ENROLLMENT中。原来实体的主码则保留在原实体中。
规范化的另一个好处是,你会经常需要为新创建的实体指定新的属性。例如,也许新的实体COURSE要为每门课程分配若干学分计算到毕业学分中。因此,创建一个新的属性来存储每个特定课程的学分。当然,也可以决定STUDENT同样需要更多信息,如地址、电话号码和出生日期,但为了简单起见,暂时将它们省略了。
2NF规范化的最终结果如表3-3(实体STUDENT没有改变)、表3-5和表3-6所示。

3.6.3 第三范式
第三范式(3NF)确保实体的属性间不存在关联,该实体内的每一个属性都只依赖主码。对于满足第三范式的数据模型有种半开玩笑的说法:每个属性都依赖码,唯一的码,除了码就没有别的了,噢,Codd!救救我吧!
第三范式确保实体的属性间不存在关联。
当且仅当满足第二范式且每一个非主属性既不依赖码也不传递依赖码时,即满足第三范式。
一种检测是否违背3NF的经验法则是:查看所有的属性值是否适用于不止一个实体实例。如果有这样的属性,将它们转移到单独的实体。
下面再次看看STUDENT实体的信息,是否有违背3NF的情况。仔细研究表3-3中的STUDENT数据,发现有的学生选了同样的主修课,因此,有些主修课的信息是重复的。特别是,在举例中竟然有两名学生都选了英语文学。要解决这个问题,需要将传递依赖码的主修课这一属性删除,并为它创建一个新的实体。表3-7和表3-8显示了更正后的数据,满足3NF。

3.6.4 一个规范化的数据模型
为了做到完美,应为刚才创建的STUDENT数据制作一张满足3NF数据模型的图表。请注意,我们并没有填写关联的可选择性。基于示例中的数据可以做到这一点,但在回答“每名学生都有主修课吗?”这个问题之前还有很多问题需要考虑。当前的数据显示确实如此,但实际上,大多数新生甚至高年级学生可能都没有参加正式的主修课。

3.6.5 进一步的范式
规范化并没有停留在3NF上,其他的范式已经得到大家的认可并记录了。但通常不会有超过3NF的情况。以下是一些其他的范式。
通常不会有超过3NF的情况。
BC范式(BCNF)是修正的3NF。事实上,在Codd后来的著作中就将BCNF称作3NF。当且仅当每一个决定因素都是候选码,即满足BCNF。大多数满足3NF的实体都满足BCNF。
第四范式(4NF)指出如果“一对多”的属性彼此独立,就没有任何实体可以有超过一个“一对多”的关联。当且仅当满足3NF且没有多个多值依赖时,即满足4NF。
第五范式(5NF)指出实体的每一个连接依赖必须是其候选码的结果。
决定因素可以是任何属性值,它能够决定实体实例中其他属性值。

时间: 2024-09-28 00:24:35

《DBA修炼之道:数据库管理员的第一本书》——3.6节范式的相关文章

《DBA修炼之道:数据库管理员的第一本书》——1.3节DBA的管理准则

1.3 DBA的管理准则数据库管理很少被视作一种管理准则."准则"一词意味着规划并按照该规划实施.当数据库管理被视作一项管理准则时,公司内部的数据处理就会有所改善了.这就是消极被动和积极主动的区别.DBA组让需求和问题淹没是家常便饭.这有多种原因,包括人员缺乏.过度承诺支持新的(甚至现有的)应用程序开发项目.缺少可遵循的流程和缺少预算等.这种情况下,数据库管理员就会变得消极被动.消极被动的DBA更像是名消防员,他集中注意力去解决所关注的最大问题.换句话说,消极被动的DBA只有当问题发生

《DBA修炼之道:数据库管理员的第一本书》——1.7节DBMS版本迁移

1.7 DBMS版本迁移 DBA也负责管理DBMS的版本迁移,DBMS产品变更相当频繁,通常每年都会有新版本发布.保持DBMS运行和更新是一项持续的工作,将占据DBA工作的大部分时间.要降低停机几率和减少应用程序需求变化,无论采用何种方法都必须与企业的需求相符. 保持DBMS运行和最新是一项持续的工作,将占据DBA工作的大部. 多面手 数据库是现代应用程序的核心,如果DBMS失败,应用程序随之失败,进而整个业务也被迫停止:如果数据库和应用程序经常失败,整个业务也可能会失败.因此数据库管理员对现代

《DBA修炼之道:数据库管理员的第一本书》——1.2节独特的优势

1.2 独特的优势 一名优秀的DBA要享受挑战并且还得是出色的问题终结者. DBA负责设计和维护企业的数据库,他处在企业的核心位置.这样,DBA就有机会去学习各个方面的业务,以及知晓知识间的关联.他们还能研究公司的前沿技术,这使得他们的工作充满了新鲜感--但是第一次尝试找出一项新技术是怎样工作的过程中可能会有挫折感.DBA常常是独自努力研究,在遇到问题的时候不会有其他专家帮忙.因此,一名优秀的DBA要享受挑战并且还得是出色的问题终结者. 1.2.1 DBA的薪资 作为技术人员你不会找到比DBA更

《DBA修炼之道:数据库管理员的第一本书》——1.12节新技术对DBA的影响

1.12 新技术对DBA的影响 每当企业引进做生意的新方法和新技术时,DBA都要行动起来.数据是任何应用程序的心脏,随着大多数的新技术为程序开发人员所采用,它们也对数据产生了影响.实际上,数据是现代商业的生命线,数据库容纳数据,而DBA是数据库技术尤其数据库集成技术方面的专家. 接下来研究三种具体的新技术,它们在某种程度上都依赖数据库管理的有效部署:数据库耦合的应用程序逻辑.互联网电子商务开发和手持计算. 1.12.1 过程DBA:管理数据库逻辑 传统的数据库管理系统作用的域中规中矩,包括存储.

《DBA修炼之道:数据库管理员的第一本书》——1.5节数据库管理、数据管理和系统管理

1.5 数据库管理.数据管理和系统管理一些企业分别为数据的商业方面和技术方面定义了不同的角色.数据的商业方面与数据管理是保持一致的,而更多技术方面都由数据库管理掌控.并不是每一家企业都有数据管理的职位,而许多企业都将数据管理并入数据库管理了.许多企业都将数据管理并入了数据库管理.有时企业也将数据管理的技术方面进行分离,DBA负责使用DBMS,而其他角色(系统管理或系统编程)负责安装并升级DBMS. 1.5.1 数据管理数据管理(Data Administration,DA)把数据资源管理的商业方

《DBA修炼之道:数据库管理员的第一本书》——第1章什么是DBA

第1章 Chapter 1什么是DBA每一家使用数据库管理系统(DBMS)管理数据的公司都需要数据库管理(DBA)组来确保能够有效地使用和部署公司的数据库.如今各种规模的企业都会至少使用一种DBMS,这使得对数据库管理员(DBA)的需求比以往任何时候都要多.然而,DBA的准则要么不容易理解,要么在推广时不能使用.对数据库管理员(DBA)的需求比以往任何时候都要多.关于数据库管理,有个经常说起的笑话,它可以帮助我们认识DBA的必要性和我们对DBA工作认知的不足.笑话大概是这样的:Acme公司的CI

《DBA修炼之道:数据库管理员的第一本书》——1.15节回顾

1.15 回顾1.?从较高的水平讨论了DBA的主要工作职责.2.?企业使用关系数据库所面临的一个最大的问题是什么?3.?数据管理员和数据库管理员之间的区别是什么?4.?哪些因素决定了所需的DBA数量来很好地支持企业的数据库环境?5.?新科技如何影响DBA的工作?6.?论证引入程序DBA后产生的技术影响.7.?数据库架构师和系统管理员之间的区别是什么?8.?最有可能负责安装DBMS新版本的职务是什么?9.?DBA必须了解的三种类型的完整性是什么?10.?一名获得认证的DBA一定是合格的DBA吗?为

《DBA修炼之道:数据库管理员的第一本书》——1.8节DBA的类型

1.8 DBA的类型有些DBA专注于逻辑设计,有些则专注于物理设计:专注于搭建系统的DBA以及专注于维护和调整系统的DBA:专业的DBA和通用的DBA.诚然,DBA的工作包含了许多角色.一些企业选择将DBA的职责细分成独立的工作.当然,这大多是在较大的企业,较小的企业往往付不起请多个专业的DBA的费用.还有一些公司干脆雇佣DBA来执行所有的任务:设计.创建.归档.调整及维护公司的数据.数据库.数据库管理系统.下面介绍一些比较常见类型的DBA. 1.8.1 系统DBA系统DBA专注于技术而不是业务

《DBA修炼之道:数据库管理员的第一本书》——1.9节人员配备的考虑

1.9 人员配备的考虑 配备DBA不是一件简单的事情,有几个有待解决的重要的考虑,包括DBA人员的规模和DBA报告结构的规模. 1.9.1 需要多少DBA 最难确定的事情之一是保证企业数据库在线并高效运作的DBA的最佳数量.许多企业都试图将DBA人员规模降到最低,本想着人员减少了成本就降低了,但这种假设一般是不正确的.一个过度劳累的DBA可能会犯错,而导致的停机时间和操作问题的成本远远超过一个额外的DBA的薪资成本. 但确定DBA的最佳数量不是一门精确的科学,它取决于多种因素,包括: 数据库的数

《DBA修炼之道:数据库管理员的第一本书》——3.1节数据建模的概念

3.1 数据建模的概念 下面用一则民间流行的盲人摸象的故事来说明数据建模的目的: 有四个盲人在他们的旅行中碰巧遇到一头大象,他们以前从没遇到过大象,但还是很好奇.因此,每个盲人都试图通过触摸来了解大象是什么样子.第一个盲人摸着大象的鼻子惊呼道:"天啊!原来大象像条蛇啊,又长又光滑."第二个盲人伸手摸到了大象的侧面,他申辩说:"不对,大象更像一堵墙,平整又厚实."第三个盲人有些困惑了,他伸出手去摸大象却摸到了大象的长牙,他说道:"不对,你们都错了,大象更像是