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

1. 范式简介

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

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

2. 哪些范式

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

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

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

3. 键和相关属性的概念

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

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

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

举例:

这里有两个表:

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

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

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

4. 第一范式(1NF)

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

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

例子:

相关推荐
Z***G47914 分钟前
【零基础学Mysql】常用函数讲解,提升数据操作效率的利器
数据库·mysql
aml258__29 分钟前
MySQL 数据库管理入门:从创建到删除(T1)
数据库·mysql·oracle·初学数据库
悦悦欧呐呐呐呐34 分钟前
数据库事务是什么,怎么用的
服务器·数据库·oracle
beata1 小时前
MySQL 索引你真的用对了吗?
mysql
忘记9261 小时前
mybatis是什么
数据库·oracle·mybatis
q***92511 小时前
Springboot3 Mybatis-plus 3.5.9
数据库·oracle·mybatis
TDengine (老段)2 小时前
MySQL/PG/TDengine 时间范围 SQL 表达式
sql·mysql·tdengine
大白的编程日记.2 小时前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
q***71012 小时前
SQL注入(SQL Injection)攻击原理与防御措施
数据库·sql·oracle
f***R82 小时前
解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException
java·数据库·sql