第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
即不能存在组合关键字中的字段决定非关键字的情况
第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → → "的决定关系,则传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y
鲍依斯-科得范式(NF):在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。
即不能存在关键字段决定关键字段的情况
范式应用
我们来逐步搞定一个论坛的数据库,有如下信息:
(1) 用户:用户名,a,主页,电话,联系地址
(2) 帖子:发帖标题,发帖内容,回复标题,回复内容
第一次我们将数据库设计为仅仅存在表:
用户名 a 主页电话联系地址发帖标题发帖内容回复标题回复内容
这个数据库表符合第一范式,但是没有任何一组候选关键字能决定数据库表的整行,唯一的关键字段用户名也不能完全决定整个元组。我们需要增加"发帖"、"回复"字段,即将表修改为:
用户名a主页电话联系地址发帖发帖标题发帖内容回复回复标题回复内容
这样数据表中的关键字(用户名,发帖,回复)能决定整行:
(用户名,发帖,回复) → (a,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容)
但是,这样的设计不符合第二范式,因为存在如下决定关系:
(用户名) → (a,主页,电话,联系地址)
(发帖) → (发帖标题,发帖内容)
(回复) → (回复标题,回复内容)
即非关键字段部分函数依赖于候选关键字段,很明显,这个设计会导致大量的数据冗余和操作异常。
我们将数据库表分解为(带下划线的为关键字):
(1) 用户信息:用户名,a,主页,电话,联系地址
(2) 帖子信息:发帖,标题,内容
(3) 回复信息:回复,标题,内容
(4) 发贴:用户名,发帖
(5) 回复:发帖,回复
这样的设计是满足第1、2、3范式和NF范式要求的,但是这样的设计是不是最好的呢?
不一定。
观察可知,第4项"发帖"中的"用户名"和"发帖"之间是1:N的关系,因此我们可以把"发帖"合并到第2项的"帖子信息"中;第5项"回复"中的"发帖"和"回复"之间也是1:N的关系,因此我们可以把"回复"合并到第3项的"回复信息"中。这样可以一定量地减少数据冗余,新的设计为:
(1) 用户信息:用户名,a,主页,电话,联系地址
(2) 帖子信息:用户名,发帖,标题,内容
(3) 回复信息:发帖,回复,标题,内容
数据库表1显然满足所有范式的要求;
数据库表2中存在非关键字段"标题"、"内容"对关键字段"发帖"的部分函数依赖,即不满足第二范式的要求,但是这一设计并不会导致数据冗余和操作异常;
数据库表3中也存在非关键字段"标题"、"内容"对关键字段"回复"的部分函数依赖,也不满足第二范式的要求,但是与数据库表2相似,这一设计也不会导致数据冗余和操作异常。
由此可以看出,并不一定要强行满足范式的要求,对于1:N关系,当1的一边合并到N的那边后,N的那边就不再满足第二范式了,但是这种设计反而比较好!
对于:N的关系,不能将一边或N一边合并到另一边去,这样会导致不符合范式要求,同时导致操作异常和数据冗余。
对于1:1的关系,我们可以将左边的1或者右边的1合并到另一边去,设计导致不符合范式要求,但是并不会导致操作异常和数据冗余。
转自:http://blog.csdn.net/greyls/archive/2007/04/26/1585584.aspx
分享到:
相关推荐
2. 数据库设计与管理:这部分涉及数据库设计的范式理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及BCNF,以及数据库的规范化过程。同时,还包括数据库的安全性、完整性和并发控制等管理内容。 3. ...
HKSI Paper 1 60个温习重点.pdf
以结构化图表展示数据库DBMS应用原理,包含数据库原理基础教程中所有必考项,帮助我们理清DML、DDL、DCL,BCDF等是个什么东西,适用于温习及复习数据库知识。
hksi paper 1 香港证券资格考试卷一 2024最新温习手册
第5章:业务操守与客户关系 本章介绍了业务操守准则、基金经理操守准则、企业融资顾问操守准则、开放式基金型公司守则等内容。 第6章:业务运作与常规 本章介绍了业务运作与常规的内容,包括电子交易及另类交易平台...
PAPER1卷一温习手册V3.4版下载 PAPER1卷一温习手册V3.4版下载 PAPER1卷一温习手册V3.4版下载 PAPER1卷一温习手册V3.4版下载 PAPER1卷一温习手册V3.4版下载 PAPER1卷一温习手册V3.4版下载 PAPER1卷一温习手册V3.4版...
PAPER7卷七温习手册V3.3版下载 PAPER7卷七温习手册V3.3版下载 PAPER7卷七温习手册V3.3版下载 PAPER7卷七温习手册V3.3版下载 PAPER7卷七温习手册V3.3版下载 PAPER7卷七温习手册V3.3版下载 PAPER7卷七温习手册V3.3版...
PAPER6卷六温习手册V2.6版下载 PAPER6卷六温习手册V2.6版下载 PAPER6卷六温习手册V2.6版下载 PAPER6卷六温习手册V2.6版下载 PAPER6卷六温习手册V2.6版下载 PAPER6卷六温习手册V2.6版下载 PAPER6卷六温习手册V2.6版...
这是我花3个月写的一个完整的数据库管理系统,里面有一些基本SQL语句,可以通过这些语句温习SQL.界面很漂亮,设计灵活,比如工具栏,菜单栏,另外里面用了一个智能联想光标提示,也就是在输入数据时,会实时的从数据库中...
为了更好地理解和应用公共关系理论与实务,研究和分析公共关系案例成为了一个不可或缺的学习途径。通过对公共关系案例的深入研究,我们可以洞察公共关系活动的普遍规律,掌握其策略运用,从而为实践提供有效的借鉴和...
#### 五、示例分析 下面是一个简单的批处理脚本示例,用于展示如何使用批处理实现基本的功能: ```batch @echo off echo 正在启动批处理... pause echo 操作完成! ``` 该脚本首先关闭了命令提示符窗口中的命令...
通过这个实验,学习者不仅能够掌握SQL的基础知识,还能进一步了解数据库设计的原则和最佳实践。例如,如何利用索引来加速查询,如何通过外键实现表间的关联,以及如何通过视图提供定制化的数据访问。此外,实验中的...
SQL,全称Structured Query Language,是用于管理关系数据库的标准语言,包括数据查询、数据更新、数据插入和数据删除等一系列操作。本资料集包含了SQL的学习资源,特别适合不同水平的学习者从基础到进阶逐步掌握。 ...
通过对医院病房管理需求的深入分析,我们确定了五个主要的实体:病房、科室、病人、医生和权限。每个实体的属性都经过精心设计,以确保能够准确地反映现实世界中相对应的角色。例如,病房实体中包括病房号、床位号和...
之前的毕业设计做了一个关于列数据库文件设计的课题,近抽空回头看了一下那论文,当时觉得浪费了时间,现在想来这课题还是蛮有意义的。终也通过代码实现了数据的列式存储,虽然大部分代码不是我写的,但至少把他弄懂...
人教版高中政治选修五专题5家庭与婚姻温习教案.pdf
华师大春天八年级数学期末温习试题五.pdf
回首温习青春.docx
很抱歉,但根据您给出的文件标题和描述,这似乎是一个关于英语学习的文档,特别是针对大学英语六级考试的单词复习列表。然而,您要求的是IT行业的专业知识点,而提供的内容是英语词汇和相关短语。由于这些信息不符合...
李兴海所著的《爱的温习》这篇时文散文,以其深情而质朴的笔触,为我们讲述了一个关于怀念、记忆与爱的故事,让我们再次认识到爱的力量和持久性。 在这篇散文中,母亲对于已故父亲的无尽思念和爱意,通过作者细腻的...