一、第一范式 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。

SQL 第一范式、第二范式、第三范式、BCNF范式的更多相关文章

  1. SQL 第一范式、第二范式、第三范式、BCNF

    作者 : Dolphin 原文地址: http://blog.csdn.net/qingdujun/article/details/27365979 一.第一范式 1NF 要求:每一个分量必须是不可分 ...

  2. SQL基础随记3 范式 键

    SQL基础随记3 范式 键 什么是范式?哈,自己设计会使用但是一问还真说不上来.遂将不太明晰的概念整体下   什么是 & 分类 范式(NF),一种规范,设计数据库模型时对关系内部各个属性之间的 ...

  3. bcnf范式

    3.5范式--bcnf范式到底是什么呢? 对于bcnf范式,通过查阅资料,我的理解是--主键依赖的去除.比如说:一个仓库管理的表格,有以下属性(管理员编号,仓库号,货物编号,货物数量)其中每个管理员管 ...

  4. 重温sql 设计的基本三大范式

    第一范式:确保每列的原子性. 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式. 例如:顾客表(姓名.编号.地址.……)其中"地址"列还可 ...

  5. BCNF范式及其分解方法(对一次Lab作业的总结)

    BCNF是比第三范式更严格一个范式.它要求关系模型中所有的属性(包括主属性和非主属性)都不传递依赖于任何候选关键字.也就是说,当关系型表中功能上互相依赖的那些列的每一列都是一个候选关键字时候,该满足B ...

  6. oracle系列--基础理论

    一.数据库系统架构: 外层(External Level)外层是提供给用户直接操作使用的 概念层(Conceptual Level)用来描述数据库中存放数据的类型.表之间的关系.高级的数据模型.用户的 ...

  7. .NET软件工程师面试总结

    1.手写画出系统架构图,系统代码架构,有什么技术难点?  2.手写画出系统部署图 CDN(一般购买别人的服务器会自动CDN,他们自己配置就OK啦) 3.asp.net 的session怎么实现会话共享 ...

  8. about oracle

    Oracle  劳伦斯.埃里森 Larry Ellison history: 人工管理阶段 文件管理阶段 数据库系统阶段 model:[模型是所研究的系统.过程.事物或概念的一种表达形式] 层次结构m ...

  9. Oracle 11g

    Oracle 11g 第一章  Oracle 11g数据库简介 1.1  认识Oracle11g Oracle 11g是Oracle 数据库最新的版本,目前已经被企业广泛的应用. 1.2  Oracl ...

随机推荐

  1. SOAPdenove 使用

    0. 该软件原理 它以kerm为节点单位,利用de Bruijn图的方法实现全基因组的组装.何为de Bruijn............... contig 的构建过程: (1)选取初始Kmer, ...

  2. 第一次作业——WorkCount

    项目地址:https://gitee.com/yangfj/wordcount_project 1.软件需求分析: 撰写PSP表格: PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) ...

  3. redis的数据类型及使用

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  4. localStorage、sessionStorage用法以及区别

    设置: sessionStorage.setItem("key", "value");localStorage.setItem("site" ...

  5. c#关于捕获错误的问题

    一般捕获错误,采用try,catch,但是有时捕获的错误不明朗,完全不知道是什么错误,这是可以取消try,catch调试运行,找到错误后并修正后,再把try,catch加上.

  6. SQL DELETE 语句详解

    SQL DELETE 语句详解   DELETE 语句 DELETE 语句用于删除表中的行. 语法 DELETE FROM 表名称 WHERE 列名称 = 值 Person: LastName Fir ...

  7. vs2017如何设置类或函数前不显示引用的数量

    这几天,从vs2013换成vs2017,17版本增加了一个类或函数前提示引用的数量,这个感觉很别扭,如何取消显示这个呢? 问题如下: 取消显示这个引用的步骤: 找到菜单栏: 工具 ---> 选项 ...

  8. LeetCode Rotatelmage

    ---恢复内容开始--- You are given an n x n 2D matrix representing an image. Ratate the image by 90 degrees( ...

  9. spoj Minimax Triangulation

    题解: dp+计算几何 F[i][j]表示第i-j条边的答案 然后转移一下 代码: #include<bits/stdc++.h> using namespace std; ]; ][]; ...

  10. VirtualBox导致Vmware的虚拟机桥接模式网络不通

    VMware内的虚拟机,设置为桥接后,无法连接外网.物理主机IP地址:192.168.0.60,虚拟机IP地址:192.168.0.61,网关地址:192.168.0.1虚拟机网络采用桥接模式: 从物 ...