博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库范式 - 1NF、2NF、3NF
阅读量:7015 次
发布时间:2019-06-28

本文共 2006 字,大约阅读时间需要 6 分钟。

 

在学习数据库系统概念课程的时候,对于范式这章节学习的不深入,所以到现在对范式的概念还是很模糊。

使用范式的目的在于生成一组关系模式,是的存储信息是避免不必要的冗余,可以方便的获取信息。

数据库有多种范式,教材讲义上只提到了几种。

 

* 后期继续学习

 

元组(Tuple):是一行记录。

码(Key):包括主码、候选码以及超码。码的指定代表了被建模的事物在现实世界中的约束。

超码(Super Key):是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。

候选码(Candidate Key):是一个最小超码。如果K是一个超码,那么K的任意超集是超码,而其任意真子集都不能成为超码。

主码(Primary Key):主要用来在一个关系中区分不同元组的候选码。

平凡函数依赖:如果 β ⊆ α,则形如α -> β的函数依赖是平凡的。

 

第一范式(1NF)


定义:如果一个关系模式 R 的所有属性的域都是原子的,我们称这个关系模式 R 属于第一范式(First Normal Form,1NF)。

如果该域的元素被认为是不可分的单元,我们称一个域是原子的(Atomic)。

比如,电话号码(家庭电话、工作电话、手机号码1、手机号码2)、地址(街道、城市、国家、邮编)这样的多值属性以及组合属性。

  • 对于多值属性,为多值集合中的每个项创建一条元组。
  • 对于组合属性,让每个子属性本身成为一个属性。
{20170501,李雷, 18312345678}{20170502,韩梅梅,86668888}

 

第二范式(2NF)


定义:如果一个关系模式 R 中的每个属性 A 都满足下列准则之一,我们称这个关系模式 R 属于第二范式(Second Normal Form,2NF)。

  • 它出现在一个候选码中。
  • 它没有部分依赖于一个候选码。

 

函数依赖:给定r(R)的一个实例,实例中所有的元组应该满足,当属性集α的值确定时,必定能确定属性集β的值。

在r(R)的每个合法实例中都满足函数依赖 α -> β(β函数依赖于α)。类似于函数关系 y = f(x)。

例如,下面的例子可以得出 A -> C 是一个函数依赖。

A  B  C  D-----------a1 b1 c1 d1a1 b2 c1 d2a2 b2 c2 d2a2 b3 c2 d3a3 b3 c2 d4

 

部分函数依赖:

给定r(R)的一个实例,实例中所有的元组应该满足,当属性集α的值确定时,必定能确定属性集β的值。

在r(R)的每个合法实例中都满足函数依赖 α -> β(β函数依赖于α)。类似于函数关系 y = f(x)。

例如,下面的例子可以得出 A -> C 是一个函数依赖。

 

定义:2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。

完全函数依赖:在一张表中,若X->Y,且对于X的任何一个真子集(假如属性组X包含超过一个属性的话),X’->Y不成立,那么我们称Y对于X完全函数依赖,记作XF->Y。

部分函数依赖:假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么就称 Y 的部分函数依赖于 X,记作XP->Y。

传递函数依赖:假如 Z 函数依赖于 Y,且 Y 函数依赖于 X(),那么久称 Z 传递函数依赖于 X,记作 XT->Z。

非主属性:包含在任何一个码中的属性称之为主属性。反之称之为非主属性。

 

对于符合2NF的要求,方法如下:

1、找出数据表中所有的码。

2、根据之前所得到的码,找出所有的主属性。

3、数据表中,出去所有的主属性,剩余的就是非主属性了。

4、查看是否存在非主属性对码的部分函数依赖。

 

第三范式(3NF)


定义:如果一个具有函数依赖集F的关系模式R,对于F+中所有函数依赖满足下列准则之一,我们称这个关系模式 R 属于第三范式(Third Normal Form,3NF)。

  • α -> β是一个平凡的函数依赖。
  • α 是 R 的一个超码。
  • β - α 中的每个属性 A 都包含于 R 的一个候选码中。
  • 它没有部分依赖于一个候选码。

定义:3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。

也就是说,如果存在非主属性对于码的传递函数依赖,则不符合3NF的要求。

BCNF范式 


定义:如果一个具有函数依赖集F的关系模式R,对于F+中所有形如α -> β的函数依赖(其中α ⊆ β且β ⊆ R),满足下列准则之一,我们称这个关系模式R属于BCNF(Boyce-Codd Form,BCNF)。

  • α -> β是一个平凡的函数依赖。
  • α 是 R 的一个超码。

定义:在第三范式的基础上,数据库表中如果不存在如何字段对任一候选关键字段的传递函数依赖,则该数据表符合BCNF范式。

 

转载于:https://www.cnblogs.com/randyma/p/6904694.html

你可能感兴趣的文章
程序设计语言理论(lambda 演算,函数式编程) 相关资料
查看>>
第一阶段,建议。
查看>>
POST jpeg upload with AFNetworking
查看>>
CCRD_TOC_2015_EULAR专刊
查看>>
OCM读书笔记(0) - OCM考试(Oracle Certified Master)核心内参
查看>>
Linux设备驱动与整个硬件系统的关系
查看>>
Django时间与时区设置问题
查看>>
道路修建 2(自创题+题解)(From NOI2011)
查看>>
两个JS控件-List和Pager
查看>>
pipenv虚拟环境
查看>>
使用RestSharp 库调用Restful Service
查看>>
TCP学习之三:客户端、服务端同步传输字符串
查看>>
删除Exchange Server IIS 15天日志
查看>>
MyBatis框架(4)全局文件
查看>>
【配置映射】—Entity Framework实例详解
查看>>
正则表达式
查看>>
手机端H5点击类目自动定位到相应内容
查看>>
agc032
查看>>
WCF 第二章 契约 实现一个双向契约的服务端部分
查看>>
我的Java开发学习之旅------>Java经典排序算法之快速排序
查看>>