数据库的三大范式

第一范式(1NF)

原子性:保证每一列不可再分

举例:

在上面的表中,family_inf列中不满足原子性的要求,故不满足第一范式。需调整如下:

第二范式(2NF)

在第一范式的基础下,非主键属性必须完全依赖于主键(候选码)
举例:

在上面的表中,同一订单中可能包含不同的商品(如订单2、订单3),因此主键必须由“订单编号”和“商品号”联合组成。“商品名称”、“商品数量”、“商品折扣”和“价格”都是依赖于“订单编号”和“商品号”;“订单金额”只依赖于“订单编号”(没有完全依赖于主键)。

不满足第二范式,调整如下,需要分成两个表:

第三范式(3NF)
在第一范式、第二范式的基础下,第三范式需要确保数据表中每一列数据都与主键直接相关,而不能间接相关(消除传递依赖)。
举例:
在上面的表中,所有的属性都不可再分且都完全依赖于编号,所以符合第一、第二范式。但是,“老师性别”和“老师年龄”直接依赖的是“老师姓名”,而不是主键“编号”,所以需调整为以下两个表:

学生表老师表
这样就满足了第三范式的要求。

ps:上表中的老师姓名改成老师ID更确切,更符合我们实际开发的情况。

规范性和性能的问题

关联查询的表不得超过三张

  • 考虑商业化的需求和目标(成本、用户体验)数据库的性能更加重要
  • 在规范和性能的问题的时候,需要适当考虑规范性
  • 故意给一些表增加一些冗余的字段。(从多表查询变为单表查询)

数据库的三大范式详解相关推荐

  1. mysql数据库设计三大范式_数据库设计三大范式详解

    引言数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不 ...

  2. 数据库设计三大范式详解

    引言数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不 ...

  3. 数据库三大范式详解,部分依赖、完全依赖、传递依赖

    数据库三大范式详解以及部分.完全.传递依赖 一.第一范式 二.第二范式 三.第三范式 四.部分依赖.完全依赖.传递依赖 完结撒花 一.第一范式 数据库每一列都是不可分的基本数据项(原子数据项) 就比如 ...

  4. 数据库三大范式详解实例图文教程

    title: 数据库三大范式详解实例图文教程 date: 2021-09-04 20:29:31 tags: 数据库 MySQL categories: 数据库 cover: https://cove ...

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

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

  6. 数据库三范式详解,优缺点,解决了什么问题?

    https://zhuanlan.zhihu.com/p/20028672 三范式详解 解决了什么问题:(上面也有讲到)https://blog.csdn.net/qq_41174684/articl ...

  7. php mysql source_Mysql数据库导入命令Source详解

    Mysql数据库导入命令Source详解 几个常用用例: 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root -p data ...

  8. linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解

    本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...

  9. 数据库的三大范式以及五大约束

    实体:表: 属性:表中的数据(字段): 关系:表与表之间的关系: 数据库设计三大范式(重点): 第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性: 例 ...

最新文章

  1. linux 模拟生成 CAN 设备
  2. 干掉 Postman?测试接口直接生成API文档,这工具真香!
  3. 乾坤 微前端_前端优秀资源整理(持续更新~)
  4. 组件化的css-module
  5. 5.Lambert光照Diffuse Shader
  6. Python——Django框架——django-simple-captcha(验证码)
  7. 接水问题(信息学奥赛一本通-T1233)
  8. bulma.css_如何建立一个? Bulma CSS的自适应博客设计
  9. 计算机丢失lib.dll,libprotobuf.dll
  10. 吴恩达|机器学习作业8.1.推荐系统(协同过滤算法)
  11. Project Euler 102:Triangle containment 包含原点的三角形
  12. #地形剖面图_备战中考 地理图表判读——地形剖面图
  13. 一份来自亚马逊技术专家的Google面试指南,GitHub收获9.8万星,已翻译成中文
  14. 图论--最短路径--观光旅游
  15. 云计算机教室详细建设方案,计算机教室更新建设方案.doc
  16. Unity MVC实现背包系统(2)
  17. LINUX centos7.6修改静态IP与配置参数NM_CONTROLLED
  18. [UER #6]逃跑
  19. Android Surface 介绍
  20. ERP已死,云计算上位

热门文章

  1. 什么是 MongoDB,为什么它是当今最受欢迎的数据库之一?
  2. 如何处理javascript中var类型有效数据极限值问题(超大数据)
  3. 高精度的乘除法(C++实现)
  4. 下电影必须知道的电影版本简写
  5. Java注解和反射,美团Java面试题库
  6. 拼手气红包java_拼手气红包-基于继承实现(Java萌新篇)
  7. 蚂蚁变大象:浅谈常规网站是如何从小变大的(四)
  8. java poi html转PDF_word和.txt文件转html 及pdf文件, 使用poi jsoup itext心得
  9. 高仿人人网客户端安卓源码项目
  10. cf服务器维护时能否更新游戏,CF新版本今日更新维护公告