【MySQL进阶之路 | 高级篇】范式概述与第一范式

1. 范式简介

在关系型数据库中,关于数据表的设计的基本原则,规则就称为范式。可以理解为,一张数据表的设计结果需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。

范式的英文名是Normal Form,简称NF。范式是关系型数据库理论的基础,也是我们在设计数据库结构过程中要遵循的规则和指导方法。

2. 哪些范式

目前关系型数据库有6种常见的范式,按照范式级别,从低到高是:第一范式,第二范式,第三范式,巴斯-科德范式,第四范式,第五范式(完美范式)。

数据库的范式设计越高阶,冗余度越低。同时高阶的范式一定要符合低价范式的要求,满足最低要求的范式是第一范式。在第一范式地方基础上进一步满足更多规范的要求称为第二范式。

一般来说,在关系型数据库设计中,最高也就遵循到了BCNF,普遍还是3NF.但也不绝对,有时候为了提高某些查询性能,我们还需要破坏范式规则,也就是反范式化。

3. 键和相关属性的概念

范式的定义会使用到主键和候选键,数据库中的键是由一个或多个属性组成。数据表中常见的几种键和属性的定义。

  • 超键:能唯一标识元组的属性集叫做超键。
  • 候选键:如果超键不包括多余的属性,那么这个超键就是候选键。
  • 主键:用户可以从候选键中选择一个作为主键。
  • 外键:如果数据表R1中的某属性不是R1的主键,而是另一个数据表R2的主键,那么这个属性集就是数据表R1的外键。
  • 主属性:包含在任一候选键中的属性称为主属性。
  • 非主属性:与主属性相对,指的是不包含在任何一个候选键中的属性。

通常我们也将候选键称为"码",把主键也称为"主码"。因为键可能是由多个属性组成的,针对单个属性,我们还可以用主属性和非主属性来区分。

举例:

这里有两个表:

球员表:球员编号 | 姓名 | 身份证号 | 年龄 | 球队编号

球队表: 球队编号 | 主教练 | 球队所在地

  • 超键:对于球员表来说,超键就是包含球员编号或身份证编号的任意组合,比如(球员编号)(球员编号,姓名)(身份证号,年龄)等
  • 候选键:就是最小的超键,对于球员表来说,候选键就是(球员编号)或者(身份证标号)等。
  • 主键:我们自己选定,也就是从候选键中选择一个,如(球员编号)。
  • 外键:球员表中的球队编号。
  • 主属性,非主属性:在球员表中,主属性是(球员编号)(身份证编号),其他的属性(姓名)(年龄)都是非主属性。

4. 第一范式(1NF)

第一范式主要是确保数据库表中的每个字段的值必须具有原子性,也就是说数据表中的每个字段的值为不可再次拆分的最小数据单元。

我们在设计某个字段的时候,对于字段X来说,不能把字段X拆成字段X-1和字段X-2.事实上,任何的DBMS都会满足第一范式的要求,不会将字段进行拆分。

例子:

相关推荐
阮胜昌25 分钟前
MySQL 中的动态数据脱敏:无需更改应用程序即可保护敏感数据
android·mysql·adb
摆烂z42 分钟前
简单理解StarRocks
sql
小白说大模型2 小时前
AI驱动的个性化学习路径:知识图谱与知识点关联的存储与推理
大数据·人工智能·学习·mysql·机器学习·prompt·知识图谱
这个DBA有点耶2 小时前
多模数据库深度解读:从“多库拼装”到“一库多能”的架构演进
数据库·mysql·dba
程序员夏洛3 小时前
MySQL 默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
艺术留白3 小时前
MokaTest使用篇-SQL接口
数据库·sql
卓怡学长3 小时前
w180springboot基于Java的悠扬乐器管理
java·spring boot·mysql·spring·maven·intellij-idea
( •̀∀•́ )9204 小时前
MySQL 自动备份与恢复方案
数据库·mysql·oracle
这个DBA有点耶4 小时前
大事务的“事前预防”:监控、拦截、Kill,四层防线一次讲透
数据库·mysql·代码规范
阮胜昌7 小时前
MySQL 9.7.0 LTS 现已发布:扩展了社区功能,并为企业级应用增加了动态数据脱敏功能
数据库·mysql