【MySQL】范式

一、范式

  在数据库中,关于数据表设计的基本原则就称为范式。目前关系型数据库有六种范式,按照范式级别,从低到高为:第一范式、第二范式、第三范式、巴斯科德范式、第四范式以及第五范式。范式的级别越高,其冗余度就越低,且高阶的范式一定符合低阶范式的规范。

1.1、键和相关属性的概念

  • 超键:能唯一标识元组的属性集叫做超键
  • 候选键:如果超键不包含多余的属性,此时这个超键就是候选键。
  • 主键:用户可以从候选键中选择一个作为主键
  • 外键:如果一张表中的属性集为另一张数据表的主键,则该属性集为这张表的外键
  • 主属性:包含在任一候选键中的属性称为主属性
  • 非主属性:指不包含在任何一个候选键中的属性。

1.2、范式

第一范式
  第一范式主要是确保数据表中的每个字段的值具有原子性,即每个字段的值不可拆分。

第二范式
  在第一范式基础上,满足数据表中的每一条数据记录,都是可以唯一标识的,并且所有非主键字段,都必须完全依赖主键而不是主键的一部分。
  例如,在成绩表(学号,课程号,成绩)关系中,通过(学号,课程号)可以决定成绩,而反过来则不行,所以(学号,课程号)->成绩的这个关系就是完全依赖关系

第三范式
  在第二范式的基础上,数据表中所有非主键字段不能依赖于其他非主键字段。即非主键属性之间相互独立,不能有依赖关系。

总结
  一范式要求列不可再分,二范式要求不能部分依赖,三范式要求不能传递依赖,要直接依赖主键。

二、反范式化

  如果数据库中的数据量较大时,如果数据表完全按照三大范式进行设计的话会产生大量的关联查询。在一定程度上影响了数据库的读性能。此时反范式化可以作为一种优化思路,通过增加冗余字段来提高数据库的读效率。

2.1、反范式化带来的问题

  • 存储空间变大
  • 不同表中的相同字段需要同步修改,否则会导致数据不一致
  • 如果采用存储过程来支持数据的操作,在更新频繁的情况下,非常消耗系统资源
  • 在数据量小的情况下,反范式化不仅不能优化性能,而且使数据库的设计更加复杂。

三、BCNF(巴斯范式)

  BCNF是修正的第三范式,若一个关系达到了第三范式,并且只有一个候选键,或者每个候选键都是单属性,这就是巴斯范式。
  简单来说,就是主属性之间不能相互依赖,非主属性之间也不能相互依赖

相关推荐

  1. MySQL范式

    2024-03-13 09:44:02       38 阅读
  2. MySQL】三大范式

    2024-03-13 09:44:02       63 阅读
  3. mysql存储范式简记

    2024-03-13 09:44:02       53 阅读
  4. Mysql 表设计范式

    2024-03-13 09:44:02       44 阅读
  5. Mysql学习笔记第八章—索引与范式

    2024-03-13 09:44:02       62 阅读
  6. mysql笔记:20. 什么是数据库六大范式

    2024-03-13 09:44:02       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 09:44:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 09:44:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 09:44:02       87 阅读
  4. Python语言-面向对象

    2024-03-13 09:44:02       96 阅读

热门阅读

  1. SeaTunnel 2.3.4 Cluster in K8S

    2024-03-13 09:44:02       38 阅读
  2. Centos搭建Nacos集群

    2024-03-13 09:44:02       48 阅读
  3. 【力扣347前k个高频元素】

    2024-03-13 09:44:02       42 阅读
  4. jenkins

    2024-03-13 09:44:02       33 阅读
  5. Redis Pipeline(管道)与事务的区分

    2024-03-13 09:44:02       43 阅读
  6. C# 数据结构初始化长度

    2024-03-13 09:44:02       37 阅读
  7. 用户管理测试用例

    2024-03-13 09:44:02       43 阅读
  8. 服务器简单介绍

    2024-03-13 09:44:02       35 阅读
  9. 【AIGC调研系列】AIGC赋能测试用例生成的案例

    2024-03-13 09:44:02       43 阅读
  10. 架构师之路:中台和微服务区别

    2024-03-13 09:44:02       39 阅读