第一范式(1NF)

每个属性都是不可分的基本数据项.(必须有主键,列不可分)

eg:非第一范式的表:(列可再分)

学院名称 高级职称人数
教授 副教授
信电学院 3 34
管理学院 5 23
外语学院 3 12

满足第一范式的表

学院名称 教授 副教授
信电学院 3 34
管理学院 5 23
外语学院 3 12


第二范式(2NF)

1NF基础上消除部分函数依赖,  消除数据冗余和增、删、改异常。

每个非主属性都完全函数依赖于主键

2NF关系举例:

不满足2NF的关系:

(学号, 课程名称) → (姓名, 年龄, 成绩, 学分)

满足2NF的关系:

(学号,课程名称) → (成绩)
(课程名称) → (学分)
(学号) → (姓名, 年龄)
ps:

完全函数依赖:在关系模式R(u)中,X,Y是U的子集,Y函数依赖于X 并且 Y非函数依赖于X的子集,则称Y完全函数依赖于X。X  f >Y)

部分函数依赖:在关系模式R(u)中,X,Y是U的子集,Y函数依赖于X 并且 Y函数依赖于X的子集)

函数依赖:某个属性集决定另一个属性集时,例如学生学号属性集Sno决定学生姓名属性集Sname,称Sname函数依赖于Sname )

平凡函数依赖:Y函数依赖于X,并且Y包含于X,例如(Sno)->(Sno)、(Sno、Sname)->(Sno))

非平凡函数依赖:Y函数依赖于X,并且Y不包含于X,例如(Sno,Sname)->(Ssex))


第三范式(3NF) 

2NF基础上消除传递函数依赖,属性集直接依赖于主键。

非第三范式表(Sno->BounsLevel,BounsLevel->BounsMoney)

Sno Sname Sage BounsLevel BounsMoney
1 Carrie 21 A 2000
2 Cherry 20 B 1500

第三范式表:(消除传递函数依赖)

Sno Sname Sage Bno
1 Carrie 21 1
2 Cherry 20 2
Bno BounsLevel BounsMoney
1 A 2000
2 B 1500

传递函数依赖:Y函数依赖于X,Z函数依赖于Y,且X不包含Y,X非函数依赖于Y,则称Z传递函数依赖于X。X  t  >Z)


鲍依斯-科得(巴斯)范式(BCNF)

3NF基础上消除主属性依赖,即不存在关键字段决定关键字段的情况。

(非主属性 :不包含在主码中的属性称为非主属性。)

反例:(SID->GID,GID->SID存在关键字决定关键字的情况)

SID(仓库ID)

GoodsID(商品ID)

MID(管理员ID)

GoodsNum(商品数量)

001

20170510

1

200

符合BCNF

StoreHouseID(仓库ID)

GoodsID(商品ID)

GoodsNum(商品数量)

001

20130104

200

StoreHouseID(仓库ID)

ManagerID(管理员ID)

001

1

 

最新文章

  1. HTML插入地图的方法
  2. Nginx详解(一)
  3. 快速升级php5.6
  4. spring-data-elasticsearch整合elasticsearch
  5. Nginx学习笔记(七) 创建子进程
  6. note.js之 Mongodb在Nodejs上的配置及session会话机制的实现
  7. visual studio粘贴html代码.会自行添加一些未知代码(自动格式化)
  8. 无法启动 IIS Express Web 服务器
  9. HDU1024 DP的优化 最大M子段和问题
  10. atom编辑器启动后文件不能编辑的解决办法
  11. 简单hdfs相关操作命令
  12. 《Linux内核分析》第四周学习总结
  13. db2 MON_GET_PKG_CACHE_STMT 表函数 抓取分析SQL
  14. docker tool
  15. 使用FBTweak
  16. array_unshift() 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。
  17. CodingLife的CSS样式整理
  18. Base class does not contain a constructor that takes '0' argument
  19. POJ 3613 Cow Relays (floyd + 矩阵高速幂)
  20. jQuery.ajax向后台传递数组问题

热门文章

  1. react学习笔记2之正确使用状态
  2. U-BOOT2016.05 配置内存大小
  3. C#函数的默认参数——填坑记
  4. matlab将矩阵数据归一化到[0,255]
  5. 消息中间件系列五:RabbitMQ的使用场景(异步处理、应用解耦)
  6. ios原生项目内嵌u3d工程
  7. datatable to List<T>带缓存
  8. Spring data Jpa,Mybatis,读写锁,@Lock 使用
  9. jquery实现同时展示多个tab标签+左右箭头实现来回滚动
  10. 离线提取域控HASH的方法