数据库三大范式详解实例图文教程
title: 数据库三大范式详解实例图文教程
date: 2021-09-04 20:29:31
tags:
- 数据库
- MySQL
categories: - 数据库
cover: https://cover.png
feature: false
需要用到的例表:
1. 名词概念
1.1 函数依赖
A --> B,如果通过A属性(属性组)的值,可以确定唯一属性B的值,则称属性B依赖于A
如:学号 --> 姓名 (学号唯一确定姓名) 1001 --> 张三
(学号,课程名称)--> 分数 (学号和课程名称唯一确定分数) (1001,Java) --> 89
1.2 完全函数依赖
A --> B,如果A是一个属性组,则B属性确定需要依赖于A属性组中的所有属性值
如:(学号,课程名称)–> 分数 (分数需要完全依赖于学号和课程才能得出)
1.3 部分函数依赖
A – > B,如果A是一个属性组,那么B属性只需要依赖A属性组中的一些值即可
如:(学号,课程名称)–> 姓名
1.4 传递函数依赖
A --> B,B --> C,则A --> C。通过A属性(属性组)的值,可以确定唯一B属性的值,通过B属性的值,可以确定唯一的C属性的值,则称 C 传递依赖于 A
如:学号 --> 系名,系名 --> 系主任,则学号 --> 系主任(通过学号,可以确定唯一的系主任)
1.5 码
在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码
如:该表的码为:(学号,课程名称)
其中,姓名,系名,系主任,都完全依赖于学号,而分数则完全依赖于(学号,课程名称)。(学号,课程名称)被其他所有属性所完全依赖,即为该表的码
2. 三大范式概念简述
第一范式(1NF):每一列都是不可分割的原子数据项
第二范式(2NF):在满足第一范式的前提下,表中的每一个字段都完全依赖于主键。即在1NF的基础上,消除非主属性对主码的部分函数依赖,非码属性必须完全依赖于码属性
第三范式(3NF):在满足第二范式的前提下,表中的每一列都直接依赖于主键,而不是通过其他的列来间接依赖主键。即不得传递依赖于主键,在2NF基础上,消除传递依赖
3. 具体实现
存在问题:
- 数据冗余:姓名,系名,系主任
- 添加新系时,数据不合法。
- 删除张三同学的数据时,系也删除了
3.1 转换为2NF,消除部分函数依赖,全为完全函数依赖
由前面所说:姓名,系名,系主任都完全依赖于学号,而分数完全依赖于学号和课程名称,将其分为两个表
化简:
现存问题:
1. 数据冗余,姓名,系名,系主任
2. 添加新系时,数据不合法。
3. 删除张三同学的数据时,系也删除了
3.2 转换为3NF,消除传递函数依赖
由前面所说,学号 --> 系名,系名 --> 系主任,再将其分为两个表,一共三个表
现存问题:
1. 数据冗余,姓名,系名,系主任
2. 添加新系时,数据不合法。
3. 删除张三同学的数据时,系也删除了
结尾:由此,问题全部解决,同时也由1NF转换为2NF,再转换为3NF
数据库三大范式详解实例图文教程相关推荐
- 数据库三大范式详解,部分依赖、完全依赖、传递依赖
数据库三大范式详解以及部分.完全.传递依赖 一.第一范式 二.第二范式 三.第三范式 四.部分依赖.完全依赖.传递依赖 完结撒花 一.第一范式 数据库每一列都是不可分的基本数据项(原子数据项) 就比如 ...
- Spring Boot 2.0 的配置详解(图文教程)
本文来自作者 泥瓦匠 @ bysocket.com 在 GitChat 上分享 「Spring Boot 2.0 的配置详解(图文教程)」 编辑 | 哈比 Spring Boot 配置,包括自动配置和 ...
- 数据库三范式详解,优缺点,解决了什么问题?
https://zhuanlan.zhihu.com/p/20028672 三范式详解 解决了什么问题:(上面也有讲到)https://blog.csdn.net/qq_41174684/articl ...
- 数据库的三大范式详解
数据库的三大范式 第一范式(1NF) 原子性:保证每一列不可再分 举例: 在上面的表中,family_inf列中不满足原子性的要求,故不满足第一范式.需调整如下: 第二范式(2NF) 在第一范式的基础 ...
- MySQL三大范式详解(小白也能懂哦)
1.范式基础 1.1范式的概念 设计数据库的时候需要遵从的一些规范,目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF) ...
- 各种字符编码详解【图文教程】
平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...
- 数据库三范式详解+例子
转载 <a href="http://blog.csdn.net/w__yi/article/details/19934319"></a> 数据库的设计范式 ...
- dell灵越笔记本后盖怎么拆_dell笔记本拆机详解【图文教程】
总所周知,笔记本室友大大小小的配置组装而成的,而笔记本同样的,有时也会存在着或多或少的故障,又或者有时由于好奇心的趋势,让我们相对笔记本内部的相关配置做更深一步的了解,这个时候,我们会选择对笔记本进行 ...
- mysql数据库设计三大范式_数据库设计三大范式详解
引言数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不 ...
最新文章
- php mysql execute语法_PHP PDOStatement::execute讲解
- HDLBits 系列(4)如何设计一定不会产生Latch的组合逻辑?
- 一旦一个业务可以由一个人来全部完成而不涉及分工,就会产生单干的情况
- 紧随Java 16,Spring Framework 5.3.5 发布:涵盖JDK 16的支持!
- SWFUpload上传文件组件,跨域上传文件
- 配置管理和Java开发_Java开发环境之------MyEclipse中服务器Server的配置,管理和启动...
- 在centos上搭建svn服务器
- java文件拷贝_Java实现文件拷贝的4种方法
- ccleaner无法更新_CCleaner正在静默更新关闭自动更新的用户
- 解读 | 滴滴主题研究计划:机器学习专题+
- Win7部署基础知识(2):制作WinPE
- Java讲课笔记17:Lambda表达式
- 福彩3D Matlab统计分析,基于ANSYS和遗传算法的3D打印桨叶结构优化设计的制作方法...
- python实现华容道游戏(v0.4)--支持游戏自动完成功能
- 网易企业邮箱搬家步骤
- RVDT接口测试工装研究
- 面试指导笔记——面试篇
- VS2015+caffe+matlab+python+CPU
- HTML/CSS大作业--仿联想官网
- 初识Kotlin新的安卓编程语言