SQL 第一范式、第二范式、第三范式、BCNF
作者 : Dolphin
原文地址: http://blog.csdn.net/qingdujun/article/details/27365979
一、第一范式 1NF
要求:每一个分量必须是不可分的数据项。
特点:
1)有主键,且主键不能为空。
2)字段不能再分。
示例:(以下例子 不满足 第一范式)
/*学号 年龄 信息*/
Sno Sage Sinfo
1001 19 陕西省西安市,电话:10086
1001 20 陕西,宝鸡
主键:Sno
不满足原因:1)主键重复。2)Sinfo字段可以再分。
二、第二范式 2NF
要求:在范式一的基础上,且每一个非主属性完全函数依赖于码。
特点:
1)满足第一范式。
2)表中的每一个非主属性,必须完全依赖于本表码。
3)只有当一个表中,主码由两个或以上的属性组成的时候,才会出现不符合第二范式的情况。
示例:(以下例子 不符合 第二范式)
/*学号 课程号 得分 课程名*/
Sno Cno Score Sname
1001 001 99 数据库
主键: Sno,Cno
不满足原因:Sname不完全依赖于码,课程名部分依赖于码Cno。
三、第三范式 3NF
要求:在满足第二范式的基础上,且每一个非主属性既不部分依赖于码也不传递依赖于码。
特点:
1)满足第二范式。
2)非主属性不能传递依赖于码。
示例:(以下例子 不符合 第三范式)
/*学号 系别 系主任*/
Sno Sdept Shead
1001 计算机系 张三
主键:Sno
不满足原因:Shead传递依赖于码,Sno->Sdept->Shead,可得Sno->Shead。
四、BCNF
要求:在满足第三范式的基础上,且不允许主键的一部分被另一部分或其它部分决定。
特定:
1)满足第三范式。
2)所有非主属性对每一个码都是完全函数依赖。
3)所有的主属性对每一个不包含它的码,也是完全函数依赖。
4)没有任何属性完全函数依赖于飞码的任何一组属性。
示例:(以下例子 不符合 第BCNF范式)
/*学生 老师 课程*/
Stu Teacher Course
张三 李开复 数据库
假设:每个老师只教一门课。
候选码:
(Stu,Teacher)->Course
(Stu,Course)->Teacher
这两个码由两个属性组成,而且它们是相互交叉的,所以不存在传递依赖,所以为3NF。
但是由于:Teacher->Course,(主键的一部分被另一部分决定),所以不符合BCNF。
参考文献:王珊,萨师煊.数据库系统概论(第4版) [M].北京:高等教育出版社,2006.170-178.
GISerYang博客园.第一范式,第二范式,第三范式[CP/OL].http://www.cnblogs.com/GISerYang/archive/2012/05/09/2491996.html ,2012-05-09/2014-05-28.
Ruthless博客园.数据库设计三大范式[CP/OL].http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html ,2012-04-01/2014-05-28.
AllenLSY 孤而无寂的CSDN博客.第一范式,第二范式,第三范式,BCNF[CP/OL].http://blog.csdn.net/allenlsy/article/details/5356899 ,2010-03-08/2014-05-28
SQL 第一范式、第二范式、第三范式、BCNF的更多相关文章
- SQL 第一范式、第二范式、第三范式、BCNF范式
一.第一范式 1NF 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. 2)字段不能再分. 示例:(以下例子 不满足 第一范式) /*学号 年龄 信 ...
- oracle系列--基础理论
一.数据库系统架构: 外层(External Level)外层是提供给用户直接操作使用的 概念层(Conceptual Level)用来描述数据库中存放数据的类型.表之间的关系.高级的数据模型.用户的 ...
- .NET软件工程师面试总结
1.手写画出系统架构图,系统代码架构,有什么技术难点? 2.手写画出系统部署图 CDN(一般购买别人的服务器会自动CDN,他们自己配置就OK啦) 3.asp.net 的session怎么实现会话共享 ...
- about oracle
Oracle 劳伦斯.埃里森 Larry Ellison history: 人工管理阶段 文件管理阶段 数据库系统阶段 model:[模型是所研究的系统.过程.事物或概念的一种表达形式] 层次结构m ...
- Oracle 11g
Oracle 11g 第一章 Oracle 11g数据库简介 1.1 认识Oracle11g Oracle 11g是Oracle 数据库最新的版本,目前已经被企业广泛的应用. 1.2 Oracl ...
- 【学习笔记】大数据技术原理与应用(MOOC视频、厦门大学林子雨)
1 大数据概述 大数据特性:4v volume velocity variety value 即大量化.快速化.多样化.价值密度低 数据量大:大数据摩尔定律 快速化:从数据的生成到消耗,时间窗口小,可 ...
- Mysql性能优化全揭秘-庖丁解牛
「为什么写」 一直想写数据库相关的文章,最直接的原因是数据库这块我们工作中每天都会用到,也是面试求职绕不开的话题,无论你是何种测试,优秀的数据库能力都会非常加分,最近我在总结数据库性能优化这块内容,性 ...
- 数据库建模、面向对象建模>从零开始学java系列
目录 数据库建模 前置知识 使用PowerDesigner数据库建模设计 一对多CDM概念数据模型设计 多对多的PDM物理数据模型设计(针对mysql) PowerDesigner将不同的模型进行转换 ...
- SQL基础随记3 范式 键
SQL基础随记3 范式 键 什么是范式?哈,自己设计会使用但是一问还真说不上来.遂将不太明晰的概念整体下 什么是 & 分类 范式(NF),一种规范,设计数据库模型时对关系内部各个属性之间的 ...
随机推荐
- js填写银行卡号,每隔4位数字加一个空格
1.原生js写法 !function () { document.getElementById('bankCard').onkeyup = function (event) { var v = thi ...
- Microsoft Dynamics CRM 2013 安装程序及SDK 下载地址
Microsoft Dynamics CRM 2013 已经具有相关资料 2013 Setup (Microsoft Dynamics CRM Server 2013) 下载地址: http://ww ...
- 网站防止CC攻击的方法
CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一 ...
- android XMl 解析神奇xstream 三: 把复杂对象转换成 xml
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- HBase权威指南环境配置
出处:http://wuyudong.com/1958.html 系统采用ubuntu-14.04,64bit 1.安装git sudo apt-get install git 出现下面错误:Err ...
- iOS--开发之手势解锁
本文主要介绍通过手势识别实现手势解锁功能,这个方法被广泛用于手机解锁,密码验证,快捷支付等功能实现.事例效果如下所示. 首先,我们先分析功能的实现过程,首先我们需要先看大致的实现过程: 1.加载九宫格 ...
- git 查看远程分支、本地分支、删除本地分支
1 查看远程分支 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $ git branch -a * br-2.1.2.2 master remotes/origi ...
- js事件执行顺序
http://ejohn.org/blog/how-javascript-timers-work/
- 测试管理_出色测试管理者的思考[持续更新ing]
如何合理安排并按质按量按时完成每一个测试任务,做好项目管理? 如何把控到每一个测试任务的质量? 如何快速构建和构建好测试环境? 如何获取或快速制作测试数据? 如何确保每一个测试人员的工作都饱满? 如何 ...
- Eclipse 快捷键 篇
1. Ctrl+Shift+R:打开资源这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml ...