数据库范式判定(1NF 2NF 3NF BCNF 区别)
*考试复习周怕忘了再写一个备忘 *
1.范式概念
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式
1)1NF
满足最低要求的范式
2) 2NF
满足1NF,且每一个非主属性完全函数依赖于任何一个候选码
3) 3NF
在2NF基础上,任何非主属性既不传递依赖于主属性,也不部分依赖于主属性(在2NF基础上消除了传递依赖)
4)BCNF
- 所有非主属性对每一个码都是完全函数依赖;
- 所有非主属性对每一个不包含它的码也是完全函数依赖;
- 没有任何属性完全函数依赖与非码的任何一组属性
满足三点即是BCNF,如果属于BCNF,同样也属于3NF(反过来不行)
2.做题判断方法(结合自己理解的思路来)
- 先判断那些是主属性和非主属性
- 以3NF的条件为基础来判断最快,先判断非主属性是否有传递函数依赖和部分函数依赖
- 如果存在就肯定不3NF更不可能是BCNF了,如果都不存在就进一步判断是不是BCNF
3.举个例子
关系模式SJP(S,J,P),S是学生,J表示课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生,可得一下函数依赖
(S,J)→P; (J,P)→S
所以(S,J)和(J,P)都是候选码。因为没有非主属性,而且也不存在部分函数依赖和传递依赖,所以属于BCNF关系模式STJ(S,T,J)中,S表示学生,T表示老师,J表示课程。每一个教师只教一门课程,每门课程有若干个老师,某学生选订某门课,就对应一个老师。所以有一下函数依赖
(S,J)→T, (S,T)→J, T→J
所以(S,J)和(S,T)都是候选码。STJ是3NF,因为没有非主属性部分函数依赖和传递依赖,但不是BCNF,因为T可以决定J,不满足BCNF条件的第2条。
数据库范式判定(1NF 2NF 3NF BCNF 区别)相关推荐
- 数据库范式(1NF 2NF 3NF BCNF)详解
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给 ...
- 数据库范式(1NF 2NF 3NF BCNF)详解一
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给 ...
- mysql bcnf_数据库范式(1NF 2NF 3NF BCNF)详解一
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给 ...
- mysql中bcnf_数据库范式(1NF 2NF 3NF BCNF)详解
@hxx: http://blog.sina.com.cn/u/3113060227 简介:一范式:每一列不可分割,二范式:每一列唯一(对应唯一对象):三范式:一列中的非主关键列不应该在其他表(或自己 ...
- 【转】数据库范式(1NF 2NF 3NF BCNF)详解二
以下内容转自:http://jacki6.iteye.com/blog/774889 -------------------------分割线----------------------------- ...
- 关系数据库范式(1NF, 2NF, 3NF, BCNF)基本概念
定义:符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度. 关系模式的范式主要有4种,即第一范式(1NF).第二范式(2NF).第三范式(3NF)和BCNF范式.满足这些范式 ...
- 数据库范式解析(1NF 2NF 3NF BCNF)
数据库设计范式是关系型数据库的设计准则.其目的在于通过规划设计使得数据库结构合理,尽量减少数据冗余,消除存储异常,方便数据的插入.更新和删除操作.目前常用范式包括1NF(第一范式).2NF(第二范式) ...
- 【数据库】范式理解:1NF,2NF,3NF,BCNF,4NF详析
数据库入门(一)范式理解:1NF,2NF,3NF,BCNF,4NF详析 引言 范式种类 第一范式(1NF) 符合1NF的关系中的每个属性都不可再分 存在问题 第二范式(2NF) 在1NF基础上消除了非 ...
- 数据库三大范式(1NF,2NF,3NF)及ER图
数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...
最新文章
- NDK断点无法调试Unable to detect application ABI's
- 作为一个新人,怎样学习嵌入式Linux?
- Nature子刊:三代Nonopore测序数据耐药性分析软件NanoOK RT
- 什么是反射?反射的用法?实例说明。
- python编程快速上手_给Python小白推荐的40本入门书籍,帮你快速上手
- Smarty的assign定义变量
- 内存中发堆和栈,栈是运行时的单位,而堆是存储的单位
- 太阳能板清洗机器人科沃斯_太阳能电池板清洁机器人
- .net Asp AdRotator(广告控件)
- One Switch for Mac(系统功能快速切换工具)
- teamtalk mysql.h_TeamTalk安装测试
- 软件原型设计工具Axure
- linux 实现离线迅雷,Linux下使用wget/aria2进行离线迅雷批量下载
- 如何研究Android手机上已安装的一个app
- ux和ui_UI和UX设计人员的47个关键课程
- 怎样防止羊毛党刷补贴?防护软件大火
- 成为zabbix合作伙伴费用及意义
- Linux磁盘存储与文件系统
- 【自己整理的答案】2013百度校园招聘-机器学习和数据挖掘工程师-笔试题
- C语言 平均数 中位数 众数