1NF | 2NF | 3NF的区分以及什么是函数依赖、部分函数依赖、值传递依赖(最详细的讲解1NF、2NF、3NF的关系)
1NF | 2NF | 3NF的区分以及什么是函数依赖、部分函数依赖、值传递依赖
符合3NF一定符合2NF、一定符合1IF
简单区分。2NF不存在部分函数依赖,3NF不存在传递函数依赖
第一范式1NF
- 符合1NF的关系中的每个属性都不可再分。
第二范式2NF
- 消除了1NF非主属性对主属性的部分函数依赖。
函数依赖:在属性(属性组)X的值确定的情况下,必定能够确定属性Y的值。
例如:学号–>班主任。(学号,课程名称)–>分数。
完全函数依赖:在一张表中,如果X–>Y,对于X的任意子集都不能确定Y。
例如(学号,课程)–>分数。单独的学号、和课程都不能确定分数。一个学号多个课程分成绩,一个课程对应多个同学的成绩。只能由学号和课程共同确定具体的分数。
部分函数依赖:Y函数依赖X函数,但是Y函数不完全依赖X函数。就称函数Y部分依赖函数X。
例如:(学号,课程名)–>姓名。一个学号对应一个学生姓名,但是课程名并不能对应具体的学生。
传递函数依赖:Z函数依赖Y函数,Y函数依赖X函数(Y不包含X,X不依赖Y前提)。Z函数依赖X函数。
判断是否是2NF:查看表中是否存在非主属性对于码的部分函数依赖。不存在部分函数依赖就是2NF
判断方法:
- 1、找出数据表所有的码
- 2、根据码找出主属性
- 3、找出非主属性
- 4、查看非主属性对码的部分函数依赖
找码的过程:
1、查看一个单一属性,其他属性值是否都能确定
2、查看两个属性:其他属性值能否全部确定
3、…
例如:(学号,课名,姓名,系名,系主任,分数)。
单一的学号不能确定分数,分数的确定需要学号和课程。
码(学号,课名)
(学号,课名)–>系名.单独的学号就可以确定。部分依赖
…
改为2NF,消除部分依赖
将分数搞出去,选课(课程名,学号,分数)
学生(学号,姓名,系名,系主任)
选课的码(课程名,学号)–>分数
学生的码(学号)–> 只有一个主属性,不存在部分函数依赖
第三范式:3NF
- 消除了非主属性对码的传递函数依赖。
选课表(课程名,学号,分数)不存在传递函数依赖。(课程名,学号)为主码,传递也需要另外两个属性。
学生表中,学号–>系名。系名–>系主任。存在传递函数依赖。不符合3NF。
消除这个传递函数依赖
系(系名、系主任)
学生(学号,姓名,系名)
1NF | 2NF | 3NF的区分以及什么是函数依赖、部分函数依赖、值传递依赖(最详细的讲解1NF、2NF、3NF的关系)的更多相关文章
- c++11-17 模板核心知识(十)—— 区分万能引用(universal references)和右值引用
引子 如何区分 模板参数 const disqualify universal reference auto声明 引子 T&&在代码里并不总是右值引用: void f(Widget&a ...
- Java 中值传递和引用传递 区分
详细参见 http://blog.csdn.net/zzp_403184692/article/details/8184751
- 数据仓库3NF基础理论和实例
一.引言 最近在梳理大数据模式下的数据仓库数据模型,花了点时间,系统的回顾一下传统数据仓库数据模型设计的理论,作为笔记分享给大家,很多资料来自互联网和读过的数据仓库理论和实践相关的熟悉,无剽窃之心,共 ...
- 数据仓库3级范式(3NF)基础
一.引言 最近在整理理大数据模式下的数据仓库数据模型,资料来自互联网和读过的数据仓库理论和实践相关. 二.3NF (1)1NF-无重复的列 数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个 ...
- SQL Server 进阶 01 数据库的设计
SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范 ...
- 数据库基础学习3-T-SQL语句
一.语句操作的基本方法 1.选中执行. 2.注释的方法‘--’. 二.数据类型 整数:int,bigint,smallint 小数:float,decimal(长度,精度) 字符:char(n),va ...
- 一个小时学会MySQL数据库
随着移动互联网的结束与人工智能的到来大数据变成越来越重要,下一个成功者应该是拥有海量数据的,数据与数据库你应该知道. 一.数据库概要 数据库(Database)是存储与管理数据的软件系统,就像一个存入 ...
- 【转载】一个小时学会MySQL数据库
一个小时学会MySQL数据库 目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数 ...
- 一个小时学会 MySQL 数据库
随着移动互联网的结束与人工智能的到来大数据变成越来越重要,下一个成功者应该是拥有海量数据的,数据与数据库你应该知道. 一.数据库概要 数据库(Database)是存储与管理数据的软件系统,就像一个存入 ...
随机推荐
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...
- mui 登录之后tab切换页面会失灵
我的app做完刚进去的时候底部导航栏的tab切换是正常的,但是退出之后重新登录,我在首页用reload进行了刷新,之后就引发了一些问题,tab切换有时候会失灵,登录转态的改变不成功.原来是reload ...
- DolphinScheduler 新晋 Committer 成员啦
Apache DolphinScheduler在2021年的3月18号正式成为 Apache 顶级项目后,就又迎来了好消息,经过Apache DolphinScheduler PMC们的推荐和投票, ...
- Luogu3803 【模板】多项式乘法(FFT)
为什么我这么弱 其实FFT也挺水的,一点数学基础加上细心即可.细节·技巧挺多. 递归 在TLE的边缘苦苦挣扎 #include <iostream> #include <cstdio ...
- Spring源码 09 IOC refresh方法4
参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...
- DOM及DOM相关操作
DOM 概述: DOM 全称(document object model)文档对象模型(文档指定为对应html文档),对应的DOM就是操作HTML文档的(增删改查) DOM结构 document 文档 ...
- SyncFusion安装和使用
1.Visual Studio 继承 Visual Studio菜单栏 → 扩展 → 扩展管理 → 搜索框中搜索 "Syncfusion Windows",单击 "Win ...
- idea主类main左侧栏启动按钮消失原因
今天在开发完一个小项目后,打开idea发现我的springboot项目的启动类左侧栏的按钮消失了,然后我又去看了看mapp等文件的调转也全部消失了,我就很纳闷是不是idea配置坏了,赶忙点击导航栏的按 ...
- C#使用BouncyCastle生成PKCS#12数字证书
背景 生成数字证书用于PDF文档数字签名 数字证书需要考虑环境兼容性,如linux.windows 网上资料不全或版本多样 本文章主要介绍了在C#中使用BouncyCastle生成PKCS#12个人信 ...
- 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制
一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...