MySQL关系规范化

作者:就叫易易好了

时间:2020/10/21

指导老师:桃群老师

一、关系规范化

1、函数依赖

什么是函数依赖?比如学生管理系统数据库,有学生姓名(Sname)、学生系名(Sdept)、学生学号(Sno)等等。一个学号只能唯一确定一个学生,一个学生只在一个系学习。所以,当“学号”确定后,学生姓名和该学生所在系也被唯一确定了。

这时我们可以说

Sno函数决定Sname和Sdept,或者说Sname,Sdept函数依赖于Sno

可记作:Sno->Sname,Sno->Sdept

1.1 完全函数依赖

在R(U)中,若X->Y,并且对于X的任意一个真子集X’,都有Y不依赖于X’,那么称Y对X完全函数依赖

比如一个学生的学号和课程号才能共同决定一个学生该门课的成绩,即(Sno,Cno)->Grade,但X的真子集为Sno或者Cno,他们无法单独决定该门课的成绩,所以学号和课程号完全函数依赖成绩

2.2 部分函数依赖

在R(U)中,若X->Y,对于X的任意一个真子集X’,有Y依赖于X’ ,那么称Y对X部分函数依赖。

比如(Sno,Cno)->Sname,X的真子集Sno和Cn都能单独决定学生姓名,所以学号和课程号部分函数依赖学生姓名。

2.3 传递函数依赖

在R(U)中,如果Y依赖于X,X不依赖于Y,Z依赖于Y,则称Z对X传递函数依赖;

比如:Sno->Sdept,Sdept不依赖于Sno,Sdept->Manager,则Sno传递函数依赖于Manager

2.4 直接函数依赖

在R(U)中,如果Y依赖于X,X依赖于Y,Z依赖于Y,则称Z对X直接函数依赖

比如:Sno->Sdept,Sdept->Sno,Sdept->Manager,则Sno直接函数依赖于Manager

二、范式

范式是衡量关系的规范化程度。

满足最低要求的是第一范式,简称1NF。在第一范式中满足进一步要求为第二范式,简称2NF,以此类推。

1NF<2NF <3NF

一个低一级的范式关系模式,通过模式分解可转换为更高一级的范式关系模式集合,这个过程就叫规范化。

1、第一范式 (1NF)

若一个关系模式R的所有属性都是不可再分项,则该关系属于第一范式

学号

姓名

班级

正班长

副班长

2018029

成小白

5班

龙龙

豫豫

2018030

晨小美

5班

龙龙

豫豫

在上面这个表格中,所有属性都是不可再分项,所以该关系为1NF。

2、第二范式(2NF)

1NF是关系数据库中对关系最基本的要求,但不是理想的结构形式,仍然有大量的数据冗余和操作异常。所以为了解决这些问题,就要消除模式中属性之间存在的部分函数依赖,将其转化成更高一级的第二范式。

若关系模式R属于1NF,且R中每个非主属性都完全函数依赖于主关键字,则称R是第二范式(2NF)

也就是说当1NF消除了非主属性对关键字的部分函数依赖,则称为2NF

案例:

学生关系S(Sno,Sname,Sdept,Manager,Cno,Grade)

·关系S属于第一范式

·关系S不属于第二范式,存在非主属性对(Sno,Cno)的部分函数依赖

·如果将该学生关系S分解成以下两个关系S1和S2,

-S1(Sno,Cno,Grade),这时Grade完全依赖于主码

没有部分函数依赖,所以属于第二范式

-S2(Sno,Sname,Sdept,Manager)

主码是Sno,其他非主关键字都是完全函数依赖于主码

属于第二范式

3、第三范式(3NF)

当第二范式消除了非主属性对码的传递函数依赖,则称为第三范式

举例:

关系S1(Sno,Cno,Grade),不存在非主属性对主属性的部分函数依赖个传递函数依赖,所以S1属于第三范式。

关系S2(Sno,Sname,Sdept,Manager),存在非主属性Manager对码Sno的传递函数依赖,即Sno->Sdept,Sdept不依赖于Sno,Sdept->Manager,Sno传递函数依赖于Manager。所以S2不属于第三范式。

若将S2分解成下述两个关系S3和S4,即:

S3(Sno,Sname,Sdept),消除了非主属性对主属性的部分函数依赖和传递函数依赖,属于第三范式。

S4(Sdept,Manager),消除了非主属性对主属性的部分函数依赖和传递函数依赖,属于第三范式。

解决了删除异常、更新异常和冗余度大等问题

4、BC范式(BCNF)

当第三范式消除了主属性对码的部分和传递函数依赖,称为BCNF

如果关系R是BCNF,那么R一定是3NF

如果R是第三范式,并且R只有一个候选码,则R必属于BCNF

二元关系模式R必定是BCNF

都是主属性的关系并非一定属于BCNF

从数据库设计的角度看,在函数依赖的基础上,分解最高范式BCNF的模式中仍然勋在数据冗余问题,这时就需要更高的范式来解决这个问题,本篇文章先到这里,后面再更新多值依赖,连接依赖和更高范式喔~

sno什么意思mysql_MySQL关系规范化相关推荐

  1. mysql 函数依赖关系_MySQL关系规范化

    MySQL关系规范化 做者:就叫易易好了 时间:2020/10/21 指导老师:桃群老师 1.关系规范化 一.函数依赖 什么是函数依赖?好比学生管理系统数据库,有学生姓名(Sname).学生系名(Sd ...

  2. php mysql增删查改 主码不能修改_关系规范化中的删除操作异常是指什么

    关系规范化中的删除操作异常是指不该删除的数据被删除,插入异常是指应该插入的数据未被插入:而规范化就是为了解决数据库中数据的插入.删除.修改异常等问题的一组规则. 关系规范化中的删除操作异常是指不该删除 ...

  3. 关系规范化之满足第三范式3NF的函数依赖保持分解算法

    满足第三范式3NF的函数依赖保持分解算法 ------------------------------------------------------------------------------- ...

  4. sno什么意思mysql_mysql数据库的概念及入门语句

    数据库的概念 数据库(DataBase,DB)是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.她是一个按数据结构来存储和管理数据的计算机软件系统.数据库的概念实际包括两层意思: ( ...

  5. 数据库设计中关系规范化理论总结

    写在前面:大家好K.首先为你点进这篇有趣的文章点赞

  6. [MySQL]关系规范化中的操作异常理解

    插入失败:该插入的没插入: 插入异常:不该插入的被插入: 插入异常:该插入的没插入: 删除失败:该删除的没删除: 删除异常:不该删除的被删除: 简单地说 对于删除来说: 失败:有心栽花花不开,异常:无 ...

  7. 6.0 《数据库系统概论》之关系数据库的规范化理论(数据依赖对表的影响[插入-删除-修改-冗余]、1NF-2NF-3NF-BCNF-4NF、函数依赖与多值依赖)

    文章目录 0.思维导图 1.为什么要学习关系数据库规范化理论? (1)基本概念回顾 (2)关系模式的形式化定义 (3)什么是数据依赖F? (4)数据依赖F对关系模式的影响 1️⃣ 数据冗余(Data ...

  8. 『数据库』朴实无华且枯燥的数据库文章--关系数据理论

    『数据库』 朴实无华且枯燥的数据库教程–入门必看!(不收藏,真的吃亏了) 文章目录 问题的提出 规范化 数据依赖的公理系统 模式的分解 小结 问题的提出 一.概念回顾 关系:描述实体.属性.实体间的联 ...

  9. 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)

    关系数据理论 6.1 为什么要学习关系数据理论 什么是好的数据库逻辑设计 什么是数据依赖 关系模式的简化表示 6.2 规范化 - 关系的规范化理论 6.2.1 函数依赖 1.函数依赖 2.平凡函数依赖 ...

最新文章

  1. L1-009. N个数求和
  2. 谷歌某程序员抱怨“招人难”:招了小半年,8个岗位才招到1个,现在又空出6个岗位!...
  3. [LUOGU] P3128 [USACO15DEC]最大流Max Flow
  4. 计算机蠕虫的存在形式,计算机蠕虫
  5. 计算机语言是人们设计用于人与计算机交互,计算机语言是人们设计的用于人与计算机交互,计算机能够______与执行的一套规约和语法的集...
  6. java 位运算_java学习之运算符与表达式(四)
  7. 5种样式实现div容器中三图摆放实例对比说明
  8. 8196国开计算机专业英语,电大计算机网络(本)学习周期01任务A_0002答案
  9. BEST定理:有向图欧拉回路个数(bzoj 3659: Which Dreamed It)
  10. Excel怎么转换成PDF?这两种转换方法看到就是赚到
  11. 4行代码实现微信送祝福,这个新年有点不一样
  12. 圈叉棋、套娃圈叉棋、嵌套圈叉棋、九个井字棋
  13. 怎么给图片加滤镜?这三个实用方法教会你
  14. 如何购买一台腾讯云服务器
  15. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
  16. Ubuntu 命令行连接wifi
  17. Xilinx FPGA开发板 Digilent Spartan-3E 学习资料整理
  18. 修改pppd,提高openwrt中pppoe多拨成功率
  19. bugly热更新使用
  20. java生成二维码图片、转base64

热门文章

  1. php 如何获取文件类型,php怎么通过一个Url获得文件类型(后缀名)?
  2. 网络日志采集_企业网络日志对网络安全有哪些帮助作用?
  3. Oracle 补全数据
  4. 从“天地一体”到“移动组网”,中国量子通信产业是如何“炼成”的?
  5. 实际项目中的工作流工作原理
  6. Linux中free的使用
  7. 软考网络工程师 网络部分常用英语缩写
  8. 基于ESP32四旋翼无人机如何根据PID算法进行电机的PWM duty补偿
  9. 以太网接口电路中bob Smith电路串接电容的作用
  10. 笔记本电脑计算机恢复出厂设置密码,如何恢复笔记本计算机的出厂设置以恢复初始设置方法...