数据库建立遵循的三大范式

数据库设计深刻影响着存储性能和数据的操作效率,为了避免操作异常,在设计数据库的时候需要满足一定的规范要求,这里就引入了范式。

范式有多种级别:第一范式,第二范式,第三范式,bcnf,第四范式以及第五范式

本章节重点讲解第一范式,第二范式和第三范式

三大范式的共同点是:一张表只描述一个事物

​ 使用外键连接有关系的表

第一范式

第一范式是指数据库表的每一列都是不可分割的基本数据线;也就是原子性

学号(主键) 姓名 联系方式
9222 向高 email:xiangg@qq.com;phone:156666

在该表中的联系方式没有遵守第一范式。该练习方式的列包含了邮箱地址和联系电话,应该在该列也要分为两列

第二范式

第二范式是在第一范式的基础之上建立起来的,满足第二范式的前提是先满足第一范式。

第二范式的规则是:

如果表是单键的,那么主键以外的列必须完全依赖主键

如果表是复合主键的,那么主键以外的列必须完全依赖主键,不能仅仅依赖主键的一部分

如示例出现的问题:

学号(主键) 学生姓名 课程编号 课程名称
1216 下颚 122 程序c

该表本来是描述了两个事物的,学生和课程的,不能放到一个表中。因为学生依赖的唯一标识是学号主键,而课程号主键唯一标识的是学生对应的课程

可以将其改进为学生表,课程表,学生表和课程表的中间表。

第三范式

第三范式着重问题还是为了 解决数据冗余的问题。第三范式的基础的前提同样是第二范式。第三范式要求:

表中的非主键列必须和主键直接相关而不能间接相关;也就是说非主键之间不能相关依赖

示例:

用户编号(主键) 用户姓名 用户等级 享受折扣
2464 徐华说 1 0.9
2469 殿下 2 0.8

该表中:用户等级和享受折扣存在依赖关系,不满足第三范式,需要拆分表格

用户表 只有用户编号,用户姓名,用户等级

折扣表只有用户等级和享受折扣

数据库建立遵循的三大范式相关推荐

  1. 数据库逻辑设计之三大范式,一看就懂

    数据库逻辑设计之三大范式 第一范式 第二范式 第三范式 反范式化 范式化设计和反范式化设计的优缺点 范式化 反范式化 第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解: 表:字段1. ...

  2. Oracle学习总结(2)——Oracle数据库设计总结(三大范式)

    一.实体与表对应关系 表<=>实体,字段<=>属性. 二.表与表的关系(实体间的关系):一对一.一对多.多对多 一对一:一条记录只对应其他表中的一条记录有关系 学生基本信息表t ...

  3. 数据库的基本概念(三大范式,数据)

    数据库的三大范式: 1NF:列不可 分割,各列都具有原子性,业务含义原子性(相对的),业务不可分割. 2NF:列有标识(有主键) 3NF:列不能传递和依赖,列不能传递除主键外在另一张表不能引用该表的列 ...

  4. 数据库逻辑设计之三大范式通俗理解

    一.第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解: 表:字段1. 字段2(字段2.1.字段2.2).字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还 ...

  5. mysql三大范式 答案_数据库逻辑设计之三大范式通俗理解,一看就懂,书上说的太晦涩...

    一.第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解:表:字段1. 字段2(字段2.1.字段2.2).字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可 ...

  6. 数据库逻辑设计之 三大范式 及 反范式化 优缺点

    一.第一范式 原子性:要求属性具有原子性,不可再分解: 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是: 二.第二范式 惟一 ...

  7. MySQL数据库建表的三大范式

    第一范式 表的每一列都是最小的不可分割的原子值. 错误表实例: 正确表实例: 第一范式的好处: 1. 减少了数据冗余 2. 更利于数据的维护和更新 第二范式 在第一范式的基础上,要求一个表中的所有字段 ...

  8. MySQL三大范式详解(小白也能懂哦)

    1.范式基础 1.1范式的概念 设计数据库的时候需要遵从的一些规范,目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF) ...

  9. 6、数据库设计为什么要使用三大范式

    本节主要介绍不使用三大范式会对设计数据库有什么影响,会出现什么问题. 这里可以将三大范式理解为:设计数据库时需要遵循的规则,可以有效的帮助我们建立冗余小且结构合理的数据库. 在概要设计阶段,同一个项目 ...

最新文章

  1. linux平台开发自学笔记(三)-代码编译
  2. 猜数字游戏_FLEX版
  3. 垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
  4. POI 使用替换字符方式进行模板生成word
  5. 虚拟服务器容器,docker容器和虚拟机的区别
  6. modification of global variable “Promise.prototype.finally“ is not allowed when using plugins at app
  7. win10无线投屏_如何实现win10无线投屏电视?电脑投屏电视的办法介绍
  8. linux 服务管理
  9. Mesos资源调度与管理的深入分享与交流
  10. celebA_hq高清人脸图片下载、生成代码
  11. 万用表的使用方法 (图解)
  12. vue3.0之Router的使用
  13. python练习-跳跃游戏
  14. 清华开学!柯洁报到,00后AI明日之星扎堆姚班、智班
  15. 应急响应—常见应急响应处置思路
  16. P0.9COB小间距LED显示技术的优势。
  17. oracle异地接管,群集的接管和故障恢复 - Oracle® ZFS Storage Appliance 管理指南,发行版 OS8.6.0...
  18. 圆形上下挤压 matlab,基于Matlab的GUI设计双螺杆挤压机系统仿真软件
  19. 有m个人围成一圈,顺序编号,编号固定,从1道n循环报数,遇到n出圈,依次类推。。。。。
  20. 尤雨溪:Vue3.0 官宣彻底抛弃 IE 浏览器

热门文章

  1. pytorch每日一学1(torch.is_tensor(obj))
  2. 尚硅谷-宋红康-JVM上中下篇完整笔记-JVM中篇
  3. 海淘代购商城APP/小程序平台开发源码设计方案
  4. 关于新建网站一点学习
  5. Translate Shell使用
  6. 用java在redis中存储对象
  7. 弘辽科技:淘宝有违规评价有什么影响吗?违规评价多久会消失?
  8. 企业用什么留住人才???
  9. Java项目代码依赖包安全漏洞检测插件Dependency Check
  10. 中国BBS社区100强(前三名)