数据库范式

设计数据库时,根据不同的规范要求,设计出合理的关系型数据库。而这些规范就叫做范式,越高的范式冗余越小

一般的数据库只遵循第一范式,第二范式,第三范式就足够了。满足了这三个范式的数据库一般都是简单和结构清晰的,同时也不会发生insert,delete,update的操作异常。

六个范式分别为:

  1. 第一范式(1NF)
  2. 第二范式(2NF)
  3. 第三范式(3NF)
  4. 巴斯-科德范式(BCNF)
  5. 第四范式(4NF)
  6. 第五范式(5NF,又称完美范式)

第一范式(1NF)
在关系模型中,对于添加一个规范的要求,所有的域都是原子性的,即数据库的每一个项都是不可分割的原子数据项,而不能是集合、数组、记录等非原子的数据项。
实现某个属性有多个值时,必须拆分为不同的属性,第一范式无重复的域。

第二范式(2NF)
第二范式就是在第一范式的基础上完全依赖于主键。消除了部份依赖。(最后会说明三种依赖)
数据库表中的每个实例或记录必须可以被唯一的区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一表示。
例如,学生号可以实现每一个学生的区分,学生号就是候选键。找不到候选键,就要增加额外属性实现区分。

第三范式(3NF)
在2NF的基础上,任何非主属性不依赖于其他非主属性。在3NF要求一个关系不包含已在其他关系中已包含的非关键字信息。即任何非主属性不传递依赖于主属性
例如,班级表,班级编号class_Id,年级信息等;那么在学生表中,列出班级编号后就不再显示年级信息等。

巴斯-科德范式(BCNF)
在3NF的基础上,任何主属性不能对主属性子集依赖,即在3NF基础上消除对主码子集的依赖
BCNF没有加入新的设计规范,只是对第二范式和第二范式的设计规范要求更强,因此被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,是数据库冗余度更小。

部分依赖,完全依赖,传递依赖

部分依赖
通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。

完全依赖
通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。

传递依赖
通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么说C传递依赖于A。

数据库四种范式和部分依赖,完全依赖,传递依赖相关推荐

  1. 数据库四种事务隔离级别详解

    四种数据库隔离级别及解决的数据问题如下所示: 1.READ-UNCOMMITTED(读取未提交内容) 由于在该隔离级别下即使事务未提交所做的修改也会对其他事务产生影响.所以该级别会出现数据脏读的发生. ...

  2. MYSQL数据库四种储存引擎

    四种mysql存储引擎 前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用 ...

  3. oracle 备份 几种,Oracle数据库四种备份方法优缺点

    实用医药杂志 2013 年 08 月 第 30 卷 第 08 期 Prac J Med & Pharm. Vol 30, 2013-08 No.08 [参考文献] [1] 潘明志. 新时期复合 ...

  4. 数据库的完全依赖,部分依赖和传递依赖

    一.部分函数依赖: 设X,Y是关系R的两个属性集合,存在X→Y,若X'是X的真子集,存在X'→Y,则称Y部分函数依赖于X. 例如:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖 ...

  5. sql中完全依赖,部分依赖,传递依赖关系

    以学生表的几个简单例子介绍一下,说明:Sno(学生学号),Sname(学生姓名),Sdept(学生所在院系),Cno(课程号),Grade(课程成绩),Mname(系主任名字) 1.完全依赖:一个学号 ...

  6. Android Studio 第四十九期 - Sqlite数据库四种写法

    最近在看撸撸代码,他自己创了一种,网上有三种,分别是OpenDroid,greenDao,sugar,Sqlite原生写法,感觉都差不多,个人使用最优的是greenDao,下面开始介绍: 1.Open ...

  7. MYSQL数据库四种索引类型的简单使用

    MYSQL数据库索引类型包括普通索引,唯一索引,主键索引与组合索引,这里对这些索引的做一些简单描述: (1)普通索引 这是最基本的MySQL数据库索引,它没有任何限制.它有以下几种创建方式: 创建索引 ...

  8. C#数据库四种执行方法(ExecuteNonQuery)

    目录 使用ExecuteNonQuery()操作数据库 使用ExecuteScalar()操作数据库 使用ExecuteReader()操作数据库 使用DataSet数据集插入记录,更新数据 使用Ex ...

  9. 数据库的部分依赖,完全依赖,传递依赖以及三种范式总结

    关系数据库理论也称为关系的规范化理论,是数据库的理论基础,同时也是数据库设计的有力工具. 规范化,数据依赖的公理系统和模式的分解是本科阶段要了解的内容,而后两者在研究生学习阶段需要加深巩固,所以对这几 ...

  10. 关系数据库理论:数据库的六大范式知识笔记

    1.数据库范式的作用 数据库范式主要是为解决关系数据库中数据冗余.更新异常.插入异常.删除异常问题而引入的设计理念.简单来说,数据库范式可以避免数据冗余,减少数据库的存储空间,并且减轻维护数据完整性的 ...

最新文章

  1. mysql 实现yyyyww_java – LocalDate无法使用’yyyy’解析’ww’
  2. 在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)
  3. Python-解决粘包
  4. 视频直播中 | 5G到底有多快?现场测速,带你走进5G生活
  5. 四步获取微信登录所需的openid和session_key
  6. php映射,PHP实现路由映射到指定控制器
  7. 迁移学习:迈向真正的人工智能
  8. SQL Server 修改表
  9. Atitit js中的依赖注入di ioc的实现
  10. WordPress安装插件提示输入FTP账户信息
  11. w ndows7旗舰版怎么重装系统,windows7旗舰版怎么重装系统|怎么重装系统windows7旗舰版...
  12. Glide库里,藏了一套你心心念念的GIF压缩工具集
  13. android 股票行情走势图K线控件 KLineView
  14. Python最详细的 机器学习算法:逻辑回归的推导及实战 你值得拥有!
  15. iPhone 重大缺陷 存储空间耗尽后无法正常开机
  16. linux下敏感文件(账号密码)查找—内网渗透linux主机密码收集
  17. C语言 输出Sn = a + aa + aaa + aaaa + ······
  18. ROS开发实践-QT工具箱
  19. 集成电路设计那些事儿
  20. Perl:化繁为简 (转载)

热门文章

  1. 外汇天眼:美国10年期国债收益率创下2011年以来新高
  2. efcore微软官方文档
  3. Windows操作系统免费下载地址(itellyou)
  4. python海龟绘图颜色_Python:海龟绘图(六)——来点颜色看看
  5. Golang开源流媒体服务器(RTMP/RTSP/HLS/FLV等协议)
  6. mysql 1006_MySQL: 1006 - Can't create database '***' (errno: 13) 错误 解决方法
  7. 最早的即时通讯软件哪一个,你知道吗?
  8. NOIP 模拟题 国际跳棋
  9. 程序员的第一次相亲,还没开始,就已经结束了
  10. 10天java基础学习笔记五