一、什么是数据库范式

无规矩不成方圆,同理范式是数据表设计的一些约束和规范。为了让各个属性间的关系更加合理,减少数据冗余。

一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约束,可也会导致数据表的增加,从而让数据库 IO 更加繁忙,冗余度更低。当然,凡事没绝对,有时为了提高某些查询性能,需要反规范化。

二、三大范式和 BC 范式

一般来说,数据表设计主要遵循三大范式:1NF(第一范式)、2NF(第二范式)和 3NF(第三范式)。越高的范式必须要符合比它低的范式要求,比如 2NF 除了要满足自身的要求,还须满足 1NF 的要求。

1NF(第一范式):是范式中最基本的范式,为了避免重复性,要求每个列的值域由原子值组成和每个字段的值都只能是单一值。

2NF(第二范式):要求表数据和表键(主键和候选键)有完全依赖关系。每个非键属性必须独立于任一候选键的一部分属性。

3NF(第三范式):要求非主属性之间应该是独立无关联,只和候选键有关联。不允许非主属性被另一个非主属性决定,但允许主属性被非主属性决定。

BCNF(BC 范式,Boyce-Codd normal from):是基于 3NF 的改进范式。与 3NF 主要区别在于任何属性都不能被非主流属性所决定。

三、反范式化

有时为了提高性能和读取效率,允许少量的数据冗余。也就是要反范式化,用空间换时间。

范式化和反范式化的区别:

范式化可以减少数据冗余,但因为查询需要多表关联,很难优化不同表中的索引。

反范式化能减少表的关联,增加读取效率,可以更好地优化索引,但数据会冗余。

四、关系型数据库的键和键属性

超键:能够标识多行的属性集。

候选键:不含有多余属性的超键。

主键:每个数据表只能有一个主键,它不能为空值(NULL)。因为主键是用于唯一定位数据的,确认了不好再修改,所以最好是完全与业务无关的字段。

如果是 INT 自增类型,数据上限是约 21 亿。BIGINT 自增类型上限约有 922 亿。

外键:如果表 A 中某个属性不是本表主键,而是另一个表 B 的主键,即这个属性是表 B 的外键。也可以不设置外键约束,仅靠应用逻辑保证数据操作正确性。

关联关系:一对一、一对多和多对多。

主属性:包含任一候选键中的属性。

非主属性:不包含任一候选键中的属性。

mysql三大范式和反范式_数据库范式:三大范式、BC范式和反范式化相关推荐

  1. 3.6.2数据库系统-范式判断:范式分类、第一范式、第二范式、第三范式、BC范式

    3.6.2数据库系统-范式判断:范式分类.第一范式.第二范式.第三范式.BC范式 范式分类 第一范式 例题 第二范式 例题 第三范式 例题 BC范式 例题 范式分类 逐步优化以解决问题:插入异常.删除 ...

  2. mysql数据库五大对象_数据库的三大范式以及五大约束

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

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

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

  4. 从第一范式到第二范式所做的操作是_数据库设计三大范式

    为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际 ...

  5. MySQL笔记:第11章_数据库的设计规范

    第11章_数据库的设计规范 1. 为什么需要数据库设计 2.范式 2.1范式简介 2.2范式都包括哪些 2.3 键和相关属性的概念 2.4第一范式(1st NF) 2.5 第二范式(2nd NF) 2 ...

  6. mysql三大范式_数据库的三大范式?

    展开全部 1.第一范式(1NF) 所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,32313133353236313431303231363533e59b9e ...

  7. java三大范_Java深度学习系列——数据库的三大范式

    大家好,我是张哲,是一位在互联网上不愿透露姓名的小学员. 概念: 在设计数据库的基础上会存在各种各样的问题,因此有些专门的设计规则来避免一些问题,这些设计规则被统称为范式(NF). 目前关系数据库中有 ...

  8. mysql分库分表按时间_数据库分库分表思路

    一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量.连接数.处理能力都有限.当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库.优化索引,做很多操作时性能仍下降 ...

  9. mysql查询最轻的零件_数据库复习题

    一.填空题(本题10空 ,每空1分,共10分 ) 1. 关系数据模型由关系数据结构.关系操作和①关系完整性约束三部分组成. 2.  一般情况下,当对关系R和S使用自然连接时,要求R和S含有一个或多个共 ...

  10. mysql中db的名词解释_数据库原理名词解释

    名词解释 实体有联系,反之型DML. 关系中元组在将SQL语句嵌涉及到U中属性1 DB是统一管理亦然,则称实体集嵌入在宿主语组成主键的属性入在高级语言的的函数依赖集,如的相关数据的集E1对E2的联系言 ...

最新文章

  1. uLua中遇到的问题
  2. word2vec代码_Word2Vec-——gensim实战教程
  3. C语言基础语言总结(二)
  4. 网易云出现undefined symbol: fribidi_get_par_embedding_levels_ex
  5. expec不管异常 try_java – 如何使用ExpectedException规则在一个测试中测试多个异常?...
  6. matlab打乱矩阵行,matlab 中,怎么让一个矩阵按某一列排列,并且行也跟着变动?...
  7. 归并排序(Java)
  8. Adobe Originals的可变字体
  9. 【实战】替代Flash的,基于JQuery、HTML5文件上传插件
  10. 时空数据生成对抗网络研究综述(上)
  11. 金蝶KIS迷你版标准版备份助手V2.0
  12. 03 ,线性代数 :集合,空间,群,阿贝尔群,向量,向量空间
  13. isalpha() / isupper() / islower()函数
  14. 【Java】通讯录管理系统小项目
  15. JavaScript:在一段时间不连续的数据中获取某一段时间段内相同时间间隔的数据
  16. C#:今日上机问题描述:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。
  17. Lulu的自动化测试学习(一)
  18. 【ArcGIS平台系列】Apps,新一代WebGIS平台的入口
  19. IoT技术的最后决战,百万大奖究竟花落谁家
  20. 【Neuralink 与大脑的神奇未来】Part 3:脑机接口

热门文章

  1. Apsara Clouder云计算专项技能认证:云服务器ECS入门[2023.2.2考试真题分享]
  2. Windows2016 PPTP服务器搭配RADIUS服务器认证
  3. 终于!微信可以开“小号”了
  4. 科技的成就(二十五)
  5. javax.el.PropertyNotFoundException: Property 'fullName' not found on type java.lang.String
  6. kepserver写入mysql_OPC服务器软件Kepware Kepserver实现与Mysql数据库连接交互(三)Kepserver 数据写入mysql数据库...
  7. 基础摄像头四轮智能车的制作
  8. 对标天猫、主打带货,“购物号”能否成为微信的新增长点?
  9. 用户查出本人所有待办流程
  10. 10题经典Redis面试题