范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求。满足最低要求的叫第一范式,简称1NF,在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。其余依此类推,目前有六种范式:1NF,2NF,3NF,BCNF,4NF,5NF。
1 第一范式(1NF)
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如 果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一 个实例的信息。例如,对于图3-2 中的员工信息表,不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;员工信息表的每一行只表示一个员工的信息,一个员工的信息在表 中只出现一次。简而言之,第一范式就是无重复的列。
2 第二范式(2NF)
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表 中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。如图3-2 员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。这个惟一属性列被称为主关键字或主键、主 码。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部 分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式 就是非主属性非部分依赖于主关键字。
3 第三范式(3NF)
满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例 如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在图3-2的员工信息表中列出部门编号后就不能再将 部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简 而言之,第三范式就是属性不依赖于其它非主属性。
BC范式(BCNF)
例如:在关系模式STJ(S,T,J)中S表示学生,T表示教师,J表示课程。假设每一教师只教一门课程,一门课程由多个教师任课,某一学生选定某门课程,就确定了一个固定的教师。于是,有如下函数依赖
(S,J)→T,(S,T)→J,T→J
显然,(S,J)和(S,T)都可以作为候选码。该关系模式没有任何非主属性对码传递依赖或部分依赖,所以STJ∈3NF。但另一方面,T→J,即T是决定属性集,可是T只是主属性,它既不是候选键,也不包含候选键
如果关系模式是R∈BCNF,由定义可知,R中不存在任何属性传递依赖于或部分依赖于任何候选键,所以必有R∈3NF。但是,如果R∈3NF,R未必属于BCNF。
3NF和BCNF是以函数依赖为基础的关系模式规范化程度的测度。
如果一个关系数据库中的所有关系模式都属于3NF,则已在很大程度上消除了插入异常和删除异常,但由于可能存在主属性对候选码的部分依赖和传递依赖,因此关系模式的分离不够彻底。
如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。
多值依赖与第四范式(4NF)
前面完全是在函数依赖范畴内讨论关系模式的范式问题。如果仅考虑函数依赖这一种数据依赖,属于BCNF的关系模式已经很完美了,但如果考虑其他数据依赖,例如多值依赖,属于BCNF的关系模式仍然存在问题。
此例子将帮助你更好的理解设有关系模式R(运动员编号,比赛项目,成绩,比赛类别,比赛主管),如果规定:每个运动员每参加一个比赛项目,只有一个成绩;每个比赛项目只属于一个比赛类别;每个比赛类别只有一个比赛主管。
请回答下列问题:
(1)根据上述规定,写出模式R的基本FD和关键码
(2)说明R不是2NF的理由,并把R分解成2NF模式集
(3)进而分解成3NF模式集
解:
(1)基本的FD有3个:
(运动员编号,比赛项目)→成绩;比赛项目→比赛类别;比赛类别→比赛主管
该关系R的关键码(即候选码)为:(运动员编号,比赛项目)
(2)R中两个这样的FD:
(运动员编号,比赛项目)→(比赛类别,比赛主管)
比赛项目→(比赛类别,比赛主管)
存在非主属性对主属性的部分函数依赖,所以R不是2NF。
R应分解为:R1(比赛项目,比赛类别,比赛主管)
R2(运动员编号,比赛项目,成绩)
此时,R1和R2是2NF
(3)R2已经是3NF,但是R1中存在两个FD:
比赛项目→比赛类别;
比赛类别→比赛主管
存在非主属性对主属性的传递函数依赖,所以R不是3NF。
R1分解为R11(比赛项目,比赛类别)
R12(比赛类别,比赛主管)
关系模式规范化的步骤:(1) 对1NF关系进行投影,消除原关系中非主属性对码的部分函数依赖,将1NF关系转换为若干个2NF
(2) 对2NF关系进行投影,消除原关系中非主属性对码的传递函数依赖,从而产生一组3NF
(3) 对3NF关系进行投影,消除原关系中主属性对码的部分函数依赖和传递函数依赖,得到一组BCNF关系。
(4) 对BCNF关系进行投影,消除原关系中非平凡函数依赖的多值依赖,从而产生一组4NF
分享到:
相关推荐
【关系数据库设计与规范化】是数据库设计中的核心概念,它涉及到如何有效地组织和管理数据,以确保数据的完整性和一致性。关系数据库设计的目标是选择最优的关系模式,避免数据冗余和异常,从而提高数据存储和检索的...
数据库设计和规范化理论是构建高效、稳定、可扩展的数据库系统的核心内容。这一理论主要针对关系型数据库,确保数据的完整性和一致性,避免数据冗余和异常,提高数据存储和查询的效率。 首先,我们要理解关系数据库...
数据库规范化是数据库设计中至关重要的一个过程,旨在减少数据冗余、提高数据一致性,并优化数据库的性能。IBM 提供的数据库规范化详解深入浅出地介绍了这一概念,通过实例帮助读者理解规范化的重要性和实施方法。 ...
数据库设计与开发规范是软件开发过程中的重要环节,特别是在大型企业如阿里巴巴这样的环境中,严谨的数据库设计规范能够确保系统的高效、稳定和可扩展性。以下是对"数据库设计开发规范-阿里.pdf.zip"文件内容的详细...
《数据库设计开发规范-阿里.pdf》是一份由阿里巴巴云数据库服务部门编制的技术文档,旨在为数据库设计和开发提供一套全面且规范化的指导原则。该文档涵盖了Oracle和MySQL两大主流数据库系统的具体规范,并针对每种...
【数据库设计规范与高效设计】 数据库设计是信息系统建设的核心环节,其目的是为了创建一个能够高效存储和处理数据的系统,满足用户的各种需求。高效的数据库设计不仅关乎数据的准确性和完整性,还直接影响系统的...
关系数据库的规范化设计是数据库设计的关键步骤,旨在创建高效、稳定、无冗余的数据存储方案。规范化设计的主要目标是减少数据库中的数据冗余,避免因冗余而导致的更新异常、插入异常和删除异常,从而提高数据的一致...
数据库设计与开发规范是软件开发过程中的重要环节,特别是在大型企业如阿里巴巴这样的环境中,严谨的数据库规范能够确保数据的一致性、稳定性和高效性。本规范主要针对MySQL,但也适用于Oracle等其他数据库系统。 1...
【规范化数据库设计原则详解】 关系型数据库是现代信息系统的基础,其设计的核心在于关系模型的构建。随着项目规模的扩大,数据库的复杂性也随之增加,此时,数据库设计的规范化显得尤为重要。规范化是解决数据库中...
数据库规范化是数据库设计中非常重要的一步,旨在消除数据冗余、提高数据的一致性和完整性,降低数据的插入、删除和修改异常。下面是数据库规范化习题及详解。 习题 1:关系 R 为第几范式?是否存在操作异常?若...
规范化的作用就在于尽量去除冗余,使数据保持一致,使数据修改简单,除去在表中进行插入、删除时产生的异常,规范化后的表一般都较小。 关系规范化 范式 关系模式的规范化主要由范式来完成。 所谓范式(Normal Form,...
为了构建高效、可靠的数据库系统,规范化设计成为了关系数据库设计中不可或缺的一部分。本文将深入探讨关系数据库的规范化设计,包括其基本概念、核心问题、常见问题以及理论应用,以期为数据库设计人员提供理论支持...
数据库设计规范化是构建高效、稳定、易于维护的数据库体系的关键步骤。规范化的目的是减少数据冗余,提高数据一致性,防止数据异常,以及优化查询效率。以下是数据库设计规范化的五大要求的详细解释: 要求一:避免...
总之,关系数据库规范化理论是数据库设计中不可或缺的一部分,它不仅有助于提高数据质量和一致性,还能简化数据管理,减少潜在的错误。在实际应用中,应灵活运用规范化理论,结合具体场景,设计出既高效又实用的...
"关系数据库设计与规范化" 关系数据库设计是指根据特定应用需求,构建出合理、有效的数据库结构和数据表关系的过程。关系数据库设计需要遵循一定的设计原则和技巧,这包括需求分析、概念设计、逻辑设计和物理实现四...
在数据库设计中,规范化和反规范化是两个重要的概念,它们在确保数据完整性和优化性能之间寻找平衡。 规范化是数据库设计的一个核心理论,旨在减少数据冗余和提高数据一致性。规范化的理论基础是不同级别的范式,...
为了确保数据库设计的一致性、标准化和可维护性,公司制定了一份名为“数据库设计规范”的文档,旨在为软件开发过程中的数据库设计提供明确的命名规范和编程规范,便于团队沟通与维护。 数据库设计规范的目的在于...
规范化设计和性能之间的权衡策略是指数据库设计中对规范化设计和性能之间的权衡,旨在确保数据库的设计是合理的,既能够满足业务需求,又能够确保数据库的性能。 字段类型定义和使用策略 字段类型定义和使用策略是...
数据库设计规范是数据库建设的基础性文件,旨在规范数据库的设计过程,提高数据库的性能、可维护性和安全性。规范详细规定了数据库设计的总体要求、对象命名规则、程序编码要求,以及在设计过程中应避免的问题等。 ...