浅显易懂 SQLite3 笔记(08)— 数据库三大范式
文章目录
- 前言
- 一、函数依赖
- 1.第一定义
- 2.第二定义
- 3.第三定义
- 二、数据库范式
- 1.第一范式
- 2.第二范式
- 3.第三范式
- 4.范式关系图
- 5.范式对查询的影响
- 总结
前言
本篇,我们将学习关系数据理论——数据库三大范式。了解什么是函数依赖,什么是数据库三大范式,以及范式对查询的影响。
一、函数依赖
- 在数据库范式中,有一个重要的概念叫做函数依赖,具体包括完全函数依赖、部分函数依赖和传递函数依赖。
1.第一定义
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称 “X函数唯一确定Y” 或 “Y函数依赖于X” ,记作X→Y。
【例】请分析以下各个关系存在的函数依赖集。
(1)关系S = {学号,姓名,性别,年龄}
答:函数依赖集F = {学号→姓名,学号→性别,学号→年龄}。
(2)关系SC = {学号,课程号,成绩}
答:函数依赖集F = {(学号,课程号)→ 成绩}。
2.第二定义
在R(U)中, 如果X→Y,并且对于X的任何一个真子集X’,都有X’→Y,则称Y对X完全函数依赖
。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖
。
【例】请指出关系R = {学号,姓名,性别,系名,课程号,课程名,成绩} 的主码,并分析非主属性对主码的函数依赖的类别。
答:R的主码为(学号,课程号),成绩 完全依赖
(学号,课程号),姓名、性别、系名、课程名部分依赖
(学号,课程号)。
3.第三定义
R(U)中,如果X→Y,Y→X,Y→Z ,则称Z对X传递函数依赖。
【例】请分析关系中存在的传递函数依赖。
(1)关系R = {学号,姓名,系名,住处}
(2)关系Z = {职工号,职务,小时工资}
二、数据库范式
- 关系型数据库设计时为确保数据存储规范化,通常需要按照范式设计数据。
- 满足最低要求的叫第一范式,简称1NF;在第一范式中满足进一步要求的为2NF,以此类推。
- 一个低一级范式的关系模式通过
模式分解
可以转换为若干个高一级范式,这种过程叫做规范化
。
1.第一范式
- 定义:如果一个关系模式的所有属性都是不可分的基本数据项,则R∈1NF。
- 不符合1NF:
符合1NF:
2.第二范式
- 定义:若R∈1NF,且每一个非主属性完全函数依赖于码(任何一个候选码),则R∈2NF。
- 作用:2NF消除了非主属性对码的部分函数依赖。
【例】已知关系S-L-C的主码为(sno,cno) ,其中sloc为学生的住处,每个系的学生住在同一个地方。
问题分析:
关系S-L-C的每个字段表意明确,满足1NF。但存在非主属性sname、ssex、sdept、sloc、ccredit对码(sno,cno)的部分函数依赖,所以该关系不满足2NF。
解决办法:
将S-L-C分成三个关系模式:SC(sno,cno,grade),S-L(sno,sname,ssex,sdept,sloc),C(cno,ccredit)。
- 新关系包括三个关系模式,它们之间通过SC中的外码cno、sno相联系,需要时再进行自然联接,恢复了原来的关系。
- 新关系有效地减少了数据冗余、更新异常、插入异常和删除异常。
3.第三范式
- 定义:若R∈2NF,且每一个非主属性不传递函数依赖于码,则R ∈3NF。
- 作用:3NF消除了非主属性对码的部分和传递函数依赖。
【例】S-L-C分成三个关系模式:SC(sno,cno,grade),S-L(sno,sname,ssex,sdept,sloc),C(cno,ccredit)。
问题分析:
在关系S-L中,存在sno→sdept,sdept→sno,sdpet→sloc,即非主属性sloc传递依赖于主码sno,因此,S-L达不到3NF。
解决办法:
关系S-L分解如下 S(sno,sname,ssex,sdept),L(sdept,sloc)。
- 新关系S和L均为3NF,不存在上述的数据冗余、更新异常问题。
- 关系S和L通过属性sdept进行连接,可以恢复到原来的关系。
4.范式关系图
5.范式对查询的影响
- 对查询的利:
(1)减少数据冗余,数据更为紧凑。
(2)表的行数少,排序、索引更为迅速。
(3)表的行数少,排序、索引更为迅速。
- 对查询的弊:
使得查询数据分离在多张表中,增加了查询的复杂性,降低查询性能。
总结
以上就是浅显易懂 SQLite3 笔记(08)— 数据库三大范式的所有内容,希望大家阅读后都能有所收获!原创不易,转载请标明出处,若文章出现有误之处,欢迎读者留言指正批评!
浅显易懂 SQLite3 笔记(08)— 数据库三大范式相关推荐
- 浅显易懂 SQLite3 笔记(07)— 数据库视图简介及操作
文章目录 前言 一.数据库系统的三级模式 二.视图定义和作用 1.什么是视图? 2.视图的作用? 三.SQL语句操作视图 1.创建视图 2.查询视图 3.更新视图 4.修改视图 5.删除视图 总结 前 ...
- 浅显易懂 SQLite3 笔记(01)— SQLite3简介及基本操作
文章目录 前言 一.SQLite数据库 1.什么是SQLite? 2.为什么要用SQLite? 3.如何使用SQLite? 二.SQLite语言及基本操作 1.SQLite命令 2.SQLite类型 ...
- 浅显易懂 SQLite3 笔记(03)— SQL数据查询(超级详细)
文章目录 前言 一.单表查询 1. 选择表中的若干列(投影) 2. 选择表中的若干元组(选择) 3.ORDER BY 子句 4.聚集函数 5.GROUP BY 子句 二.连接查询 1.等值连接 2.自 ...
- mysql三大范式 答案_数据库三大范式定义与理解
数据库三大范式定义与理解 发布时间:2018-06-04 10:24, 浏览次数:291 一.第一范式(1NF) 要求: 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. ...
- 数据库三大范式(1NF,2NF,3NF)及ER图
数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...
- 3nf mysql表_数据库三大范式(1NF,2NF,3NF)及ER图
数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...
- Mysql数据库与数据库三大范式
作者:左新宇 链接:https://zhuanlan.zhihu.com/p/59394493 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. MySQL 常用命令 ...
- 数据库三大范式详解,部分依赖、完全依赖、传递依赖
数据库三大范式详解以及部分.完全.传递依赖 一.第一范式 二.第二范式 三.第三范式 四.部分依赖.完全依赖.传递依赖 完结撒花 一.第一范式 数据库每一列都是不可分的基本数据项(原子数据项) 就比如 ...
- 数据库三大范式(重要)
转自微信 上周四下午的VIP试听课是由芒果给大家介绍的MySQL的一些基础知识,在这里芒果给大家分享其中的一部分内容--对数据库三大范式做个小介绍: 范式(数据库的设计范式)是符合某一种级别的关系模式 ...
最新文章
- python3小游戏源代码_如何用python3代码玩小游戏?
- haroopad夜间模式与数学公式显示
- C++和Opencv4.5 实现全景图像拼接
- 使用栈实现队列 Implement Queue using Stacks
- Selenium2+python自动化7-xpath定位
- Bootstrap3 表单支持的控件
- php做姓名隐藏,PHP只显示姓名首尾字符,隐藏中间字符并用*替换
- 关于mysql中select出数据未排序问题
- PHP中header和session_start前不能有输出的原因
- 设计模式(二)--单例模式
- java 异常java.lang.UnsupportedOperationException
- 1.第一本 docker 书 --- 简介
- Linux学习之源码2:start_kernel流程
- PHP常用方法(不定时更新)
- excel保护密码怎么解除
- (转载)C# Dictionary
- Visual Studio 2019离线安装教程(脱机安装、局域网安装)
- python人工智能面试题爱奇艺面试题_【爱奇艺Python面试】爱奇艺大数据面试 python-看准网...
- 4、不准用组函数(Max),取得最高薪水【bjpowernode34道SQL题】
- 入门推荐系统,你不应该错过的知识清单
热门文章
- 网游加速:互联网的又一个蓝海
- 找资源的网址——总结笔记一
- 2.4g无线跳频(三)
- Python语法学习记录(24):inspect模块介绍及常用使用方式
- 金华有哪几所计算机网络学校,金华最好的中专学校有哪些 十大中专学校排名...
- 中基鸿业投资理财入门的六个小技巧
- SQLyog连接数据库报错2058
- hadoop-3.0.0集群搭建
- C语言编写扫雷游戏,超简单
- c语言写我爱你中国编程,.请用户输入一组字符串,”我爱你中国”,然后倒序输出该字符串;...