所谓范式,是关系型数据库关系模式规范化的标准,从规范化的宽松到严格,分别为不同的范式,通常使用的有第一范式、第二范式、第三范式及BC范式等。范式是建立在函数依赖基础上的。
函数依赖
定义:设有关系模式R(U),X和Y是属性集U的子集,函数依赖是形为X→Y的一个命题,对任意R中两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么FD X→Y在关系模式R(U)中成立。X→Y读作‘X函数决定Y’,或‘Y函数依赖于X’。通俗的讲,如果一个表中某一个字段Y的值是由另外一个字段或一组字段X的值来确定的,就称为Y函数依赖于X。函数依赖应该是通过理解数据项和企业的规则来决定的,根据表的内容得出的函数依赖可能是不正确的。
第一范式(1NF)
定义:如果关系模式R的每个关系r的属性都是不可分的数据项,那么就称R是第一范式的模式。
简单的说,每一个属性都是原子项,不可分割。1NF是关系模式应具备的最起码的条件,如果数据库设计不能满足第一范式,就不称为关系型数据库。关系数据库设计研究的关系规范化是在1NF之上进行的。
第二范式(2NF)
定义:如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么就称R是第二范式。
简单的说,第二范式要满足以下的条件:首先要满足第一范式,其次每个非主属性要完全函数依赖与候选键,或者是主键。也就是说,每个非主属性是由整个主键函数决定的,而不能由主键的一部分来决定。
举个例子:
有股票日行情表的主键是股票代码和交易日期组成。非主属性中有收盘价和成交量等,都是由主键,即股票代码和交易日期函数决定的,单独的股票代码或者交易日期都不能函数决定这些非主属性。如果这个表中有非主属性股票简称,则股票简称是可以由股票代码来函数决定的,这样股票简称这个非主属性就不是完全函数依赖于候选键,这样的设计就不满足第二范式。
第三范式(3NF)
定义:如果关系模式R是2NF,且关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖,则称关系R是属于第三范式。
简单的说,第三范式要满足以下的条件:首先要满足第二范式,其次非主属性之间不存在函数依赖。由于满足了第二范式,表示每个非主属性都函数依赖于主键。如果非主属性之间存在了函数依赖,就会存在传递依赖,这样就不满足第三范式。
举个例子:在股票基本情况表中,主键是股票代码,有非主属性所属一级行业和所属二级行业。根据业务规则,所属二级行业能够函数决定所属一级行业,这就表示存在这样一种关系:股票代码函数决定所属二级行业,所属二级行业函数决定所属一级行业,这就形成了传递依赖,这样的设计就不符合第三范式。不过在实际运用中,为查询和使用的方便,有时也会违反第三范式。如上例,如果没有所属一级行业的属性,需要查询所属一级行业的相关股票,需要查询时使用函数来从二级行业中函数生成所属一级行业,使用性能上会受影响。所以通常会加上所属一级行业的属性。
BC范式(BCNF)
BC范式是第三范式的增强版,不过也有人说是直接从1NF发展过来的,即每个属性,包括主属性或非主属性,都完全依赖于候选键,并且不存在传递依赖情况。
摘自:http://www.cnblogs.com/oiea/articles/544668.html
分享到:
相关推荐
"Java面试中数据库三范式详解" 数据库设计范式是指在设计数据库时需要遵守的一些基本规则,以确保数据的一致性、完整性和简洁性。在 Java 面试中,数据库三范式是常见的考察点,本文将对三范式进行详细的解释,并以...
数据库三范式经典实例解析 数据库设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入、删除和更新操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦...
数据库三范式详解 数据库三范式是关系数据库设计的基本原则,目的是为了消除数据冗余、提高数据的一致性和完整性。下面是对数据库三范式的详细解释: 第一范式(1NF) 第一范式的要求是:字段不可分。也就是说,...
### 数据库三范式(六范式)详解 #### 前言 在数据库设计领域,遵循一定的规范和原则对于确保数据的完整性和减少冗余至关重要。范式就是用来指导如何构建关系数据库的一种方法论。本文将从基本概念入手,逐步深入地...
【数据库三范式详解】 数据库设计的三范式是数据库理论中的核心概念,它们是确保数据库设计合理性和高效性的基础规范。遵循这些范式可以避免数据冗余、更新异常、插入异常和删除异常等问题,从而构建出简洁、清晰且...
数据库范式1NF 2NF 3NF BCNF(实例) 设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系...
1.数据库三范式是什么?2.有哪些数据库优化方面的经验?3.请简述常用的索引有哪些种类?4.以及在 mysql 数据库中索引的工作机制是什么?5.MySQL 的基础操作命令:6.mysql 的复制原理以及流程。7.mysql 支持的复制类型?8....
【专讲】 数据库三范式.doc
数据库设计三范式详解 本文将对数据库设计三范式进行通俗的解释,并以实例来讲解怎样将这些范式应用于实际工程。数据库设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,...
下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步做到:在应用中发展,在发展中应用。
数据库范式理解例题 数据库范式是relation database设计中的一种规范,旨在确保数据库的结构正确性和数据的一致性。其中包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)等。 第一范式(1NF) 第一范式是...
目前关系数据库有六种设计范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。每种范式都有其特点和应用场景,关系数据库的设计需要根据实际情况选择...
数据库的三范式是设计和优化关系型数据库的关键理论,它确保了数据的规范化,减少了数据冗余,避免了更新异常、插入异常和删除异常等问题。以下是对三范式的详细解释: 1. 第一范式(1NF:First Normal Form)——...
3NF 和 BCNF 是数据库设计中的两个重要概念,分别表示第三范式和 Boyce-Codd 范式,它们都是数据库设计中的重要原则和方法。 本文将对数据库考试题中的每个问题进行详细的解释和分析,帮助读者更好地理解数据库的...
数据库的三范式是什么? 第一范式:最基本要求,表中的每一列必须保证原子性,列不可在分割。 如有一个列,年级班级。然后存储数据为,一年级一班,一年级二班。那么这是错误的,应该年级和班级分开为单独列。 ...
数据库三范式是数据库设计中常用的一套规范,旨在确保数据库结构的最优化,从而避免数据异常和更新异常。 1. 第一范式(1st NF - 列都是不可再分) 第一范式要求数据库表的每一列都必须是不可分割的基本数据项,也...
数据库系统范式教程 数据库系统范式是数据库系统设计的基础,它们是关系数据库设计的标准,旨在解决数据冗余、更新异常、插入异常和删除异常等问题。 1.1 数据库系统原理 数据库系统设计的主要目标是解决数据...
尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍。 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手