目前关系数据库有六种范式。满足其中一个级别的范式总是在满足比他级别低的范式基础上进行判断的。一般来说数据库只需满足第三范式(1NF)就行了。
在看三范式之前,先看几个定义:函数依赖、部分函数依赖、完全函数依赖、传递函数依赖。
完全函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X' ,都没有X'→ Y,则称Y对X完全函数依赖。
部分函数依赖:在R(U)中,如果X→Y,但Y不完全依赖于X,则称Y对X部分函数依赖。
传递函数依赖:设X,Y,Z是关系R(U)中互不相同的属性集合,存在X→Y,Y→Z,且X没有函数依赖于Y或Z,则称Z传递函数依赖于X。
函数依赖: 设X,Y是关系R(U)的两个属性集合,当任何时刻R(U)中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。
现在我们就可以去看三范式究竟都是什么了。
第一范式(1NF):数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。要求数据是原子级别的,不可再分。只要是关系数据库,必满足1NF。
第二范式(2NF):在满足第一范式的基础上,实体的每个非主键属性完全函数依赖于主键属性。
第三范式(3NF):在满足第二范式的基础上,在实体中不存在非主键属性传递函数依赖于主键属性。
1NF是确保是关系型数据库,2NF是消除部分函数依赖,3NF是消除传递函数依赖。
下面我们来看一个数据库设计的例子(ps:是课程中的例子)
MEMBER_BOOK(MemNo, Book_Id, DueDate, Mname, City, CallNo, Title)
PK
MemNo
Mname
City
CallNo
Title
Book_ID
DueDate
3 |
Avi |
PGH |
301 |
DBS |
84 |
10/12/99 |
5 |
Susan |
NYC |
500 |
OS |
50 |
11/12/99 |
2 |
Rajiv |
LONDON |
20 |
AI |
20 |
01/06/00 |
5 |
Susan |
NYC |
400 |
PL |
85 |
12/12/99 |
5 |
Susan |
NYC |
301 |
DBS |
86 |
02/29/00
|
很明显,上述关系存在数据冗余,因为数据冗余,会导致以下更新异常:
a. 修改异常 如果修改一个人所在的城市,那就要修改多处,比如修改Susan的City,如果修改时漏了一项将会导致数据一个人同时在两地居住的情况。
b. 插入异常 如果有新成员加入,但他没借书,因为和书籍相关的字段有不能为空的,所以必须等他借了书之后才能插入。
c. 删除异常 如果有个成员,只借了一本书,然后去还书,这个成员会从这个表中消失。但其实他还是个成员,只不过没借书而已。
上表中所存在以下函数依赖,其中fd1-fd5是单个属性的依赖,fd6-fd10左端是多个属性:
我们可以把上面的改变压缩一下,压缩之后的如下依赖,其中FD0是fd6-fd10压缩而成的,FD1是fd1和fd2压缩而成的,FD3是fd4和fd5压缩而成的:
下面用三范式对上述关系进行改进:
很明显的看出,符合1NF。
根据2NF,消除部分函数依赖后,如下:
MEMBER(MemNo, Mname, City)
PK
FD1: MemNo -> {Mname, City}
BOOK(Book_Id, CallNo, Title)
PK
FD3: Book_Id -> {CallNo, Title}
FD2: CallNo -> {Title}
BORROW(MemNo, Book_ID, DueDate)
PK
FD4: {MemNo, Book_ID} -> {DueDate}
然后根据3NF,BOOK消除传递函数依赖后,如下:
NEWBOOK(Book_Id, CallNo)
PK
FD3: Book_Id -> {CallNo}
TITLE (CallNo, Title)
PK
FD2: CallNo -> {Title}
需要注意的是3NF是在2NF的基础上,是循序渐进的。
分享到:
相关推荐
数据库设计三范式是数据库规范化理论中的核心概念,主要用于优化数据存储,避免数据冗余和更新异常。这里我们将深入探讨第一范式(1NF)和第二范式(2NF)。 **第一范式(1NF)** 第一范式强调的是列的原子性,即每...
数据库设计是信息系统开发的核心环节,其中的三范式(First Normal Form, Second Normal Form, Third Normal Form,简称1NF、2NF和3NF)是规范化理论的基础,它们为确保数据的逻辑独立性、减少数据冗余和提高数据...
设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的...
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入、删除和更新操作异常。第一范式:数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本...
此文档是关于数据库三大范式的描述,以及在何种情况下应该用何种范式已达到数据库的良好效率!
数据库设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入、删除和更新操作异常。 第一范式(1NF) 数据库表中的字段都是单一属性的,不可再分。这个单一属性由...
"数据库设计范式的重要性" database设计范式是关系数据库的基础规范,关系数据库的设计必须遵循这些规范,否则将会导致数据库设计混乱、数据冗余、查询效率低下等问题。本文将详细介绍数据库设计范式的概念、类型和...
常见的数据库设计范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。以下是对这些范式的详细介绍和实例分析。 一、第一范式(1NF) 第一范式(1NF)是数据库设计的基本要求,指数据库表的每一列都是...
数据库的设计范式是指一系列用于指导数据库设计的规范化准则,其目的是确保数据的完整性、减少数据冗余,并提高数据库的操作效率。遵循这些范式可以避免在数据库设计中常见的错误,如插入异常、删除异常和更新异常等...
数据库设计范式是关系数据库设计的核心概念,它们是用来确保数据的一致性、减少冗余、避免数据异常的关键原则。在数据库领域,特别是Oracle等大型关系型数据库系统中,理解和掌握这些范式至关重要。 首先,第一范式...
第一范式是最基本的数据库设计规范,它要求每个表中的每一行都具有唯一的值,且每个字段都不可分割。换言之,每个表中的每一行都必须具有唯一的标识符,且每个字段都必须是一个原子值。 例如,如果我们设计一个学生...
数据库的设计的学习,一些基本的介绍,简单明了,还是很容易理解。
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多...
"数据库设计三大范式应用实例剖析" 数据库设计是数据库系统的核心部分,直接影响着数据库的性能、安全性和可维护性。数据库设计的目的是为了使数据库系统满足某些标准,使得数据库系统更加简洁、明晰、易于维护和...
数据库范式是关系型数据库设计中的核心理论,它是一组规则,用来指导如何构建和组织数据库,以确保数据的一致性、减少冗余并避免数据异常。这些规则以不同的级别存在,即第一范式(1NF)、第二范式(2NF)、第三范式...
三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物; 3NF:每列都与主键有直接关系,不...