首页 > 其他分享 >【学习笔记】三大范式

【学习笔记】三大范式

时间:2022-10-05 16:26:18浏览次数:78  
标签:范式 数据库 班主任 笔记 满足 主键 三大

三大范式

 

为什么要数据规范化?

  • 信息重复

  • 更新、插入、删除异常

 

三大范式

参考博客:关系型数据库设计:三大范式的通俗理解 - 景寓6号 - 博客园 (cnblogs.com)

 

第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项。

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

img

图中存在可在分的项如学校信息和家庭信息,可以分成如下

img

现在表中的每一项都不可再分了,故满足第一范式

 

第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码,第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关

前提:必须满足第一范式

每张表只描述一件事情

img

该表中是订单号和产品号联合组成主键,但是订单金额和订单金额与产品号无关,只与订单号有关,所以该表不满足第二范式。

需要调整如下图,才能满足第二范式

img

img

 

第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

前提:需要满足第一范式和第二范式

img

该表中,班主任姓名与主键直接相关,班主任性别和班主任年龄和班主任姓名直接相关,与主键间接相关,所以不满足第三范式。

需要修改如下图:

image-20221005160121924

 

三大范式是用来规范数据库的设计

 

但是所有的数据库都要满足规范去设计吗?

阿里的规定:关联查询不得超过三张表

规范性和性能 该如何去选择?

  • 考虑商业化需求和目标,数据库的性能更加重要

  • 在规范性能的问题时,需要适当考虑规范性

  • 故意给某些表增加一些冗余的字段(使多表查询变为单表查询)

  • 故意增加一些计算列(从大数据量减为小数据量的查询)

标签:范式,数据库,班主任,笔记,满足,主键,三大
From: https://www.cnblogs.com/wztblogs/p/16755737.html

相关文章

  • MYSQL学习之数据库设计三范式
    (一)什么是设计库设计范式?  数据库表的设计依据,从而进行数据表的设计。(二)范式内容I.第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分。II.第二范式:建立在第一范......
  • VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION(VGG) 阅读笔记(22
    VERYDEEPCONVOLUTIONALNETWORKSFORLARGE-SCALEIMAGERECOGNITION(VGG)阅读笔记(22.10.05)摘要:本文研究在大规模图像识别设置中卷积网络深度对其准确性的影响。主要贡献......
  • SpringMVC笔记
    一、SpringMVC简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称......
  • Closed-loop Matters: Dual Regression Networks for Single Image Super-Resolution
    第一遍:摘要:现有的SR方法有两个潜在的限制:首先,学习从LR到HR图像的映射函数通常是一个病态问题,因为存在无限个HR图像可以下采样到相同的LR图像;其次,配对的LR-HR数据在现实应......
  • 算法笔记(5)
    题目1一个子序列的消除规则如下:在某一个子序列中,如果'1'的左边有'0',那么这两个字符->"01"可以消除在某一个子序列中,如果'3'的左边有'2',那么这两个字符->"23"可以......
  • Python-错误笔记
    TypeError:sliceindicesmustbeintegersorNoneorhavean__index__method原因1:存在带除法的操作,“/”会生成浮点数,需要将除法符号“/”更改成“//”。原因2:“[......
  • STL学习笔记
    目录STL介绍什么是STL泛性编程STL基本组成STL序列式容器什么是STL容器什么是迭代器什么是序列式容器array容器vector容器deque容器list容器STL关联式容器pair容器map容器mu......
  • 【学习笔记】数据库用户管理和备份
    数据库用户管理和备份 用户管理可视化管理用navicat可视化管理软件进行用户的添加删除和权限的管理新建用户连接用户  sql命令操作对用户的......
  • Python-API笔记
    random.seed()&np.random.seed()np.random.seed()函数用于生成指定随机数。seed()被设置了之后,np,random.random()可以按顺序产生一组固定的数组。如果使用相同的se......
  • MYSQL学习笔记之索引
    (一)什么是索引??    索引(Index)是在数据库的字段上添加的,是为了提高查询的效率存在的一种机制。一张表的一个字段可以添加一个索引,当然,多个字段联合起来也可以添加索引。......