文章目录

  • 前言
  • 一、函数依赖
    • 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)— 数据库三大范式相关推荐

  1. 浅显易懂 SQLite3 笔记(07)— 数据库视图简介及操作

    文章目录 前言 一.数据库系统的三级模式 二.视图定义和作用 1.什么是视图? 2.视图的作用? 三.SQL语句操作视图 1.创建视图 2.查询视图 3.更新视图 4.修改视图 5.删除视图 总结 前 ...

  2. 浅显易懂 SQLite3 笔记(01)— SQLite3简介及基本操作

    文章目录 前言 一.SQLite数据库 1.什么是SQLite? 2.为什么要用SQLite? 3.如何使用SQLite? 二.SQLite语言及基本操作 1.SQLite命令 2.SQLite类型 ...

  3. 浅显易懂 SQLite3 笔记(03)— SQL数据查询(超级详细)

    文章目录 前言 一.单表查询 1. 选择表中的若干列(投影) 2. 选择表中的若干元组(选择) 3.ORDER BY 子句 4.聚集函数 5.GROUP BY 子句 二.连接查询 1.等值连接 2.自 ...

  4. mysql三大范式 答案_数据库三大范式定义与理解

    数据库三大范式定义与理解 发布时间:2018-06-04 10:24, 浏览次数:291 一.第一范式(1NF) 要求: 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. ...

  5. 数据库三大范式(1NF,2NF,3NF)及ER图

    数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...

  6. 3nf mysql表_数据库三大范式(1NF,2NF,3NF)及ER图

    数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...

  7. Mysql数据库与数据库三大范式

    作者:左新宇 链接:https://zhuanlan.zhihu.com/p/59394493 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. MySQL 常用命令 ...

  8. 数据库三大范式详解,部分依赖、完全依赖、传递依赖

    数据库三大范式详解以及部分.完全.传递依赖 一.第一范式 二.第二范式 三.第三范式 四.部分依赖.完全依赖.传递依赖 完结撒花 一.第一范式 数据库每一列都是不可分的基本数据项(原子数据项) 就比如 ...

  9. 数据库三大范式(重要)

    转自微信 上周四下午的VIP试听课是由芒果给大家介绍的MySQL的一些基础知识,在这里芒果给大家分享其中的一部分内容--对数据库三大范式做个小介绍: 范式(数据库的设计范式)是符合某一种级别的关系模式 ...

最新文章

  1. python3小游戏源代码_如何用python3代码玩小游戏?
  2. haroopad夜间模式与数学公式显示
  3. C++和Opencv4.5 实现全景图像拼接
  4. 使用栈实现队列 Implement Queue using Stacks
  5. Selenium2+python自动化7-xpath定位
  6. Bootstrap3 表单支持的控件
  7. php做姓名隐藏,PHP只显示姓名首尾字符,隐藏中间字符并用*替换
  8. 关于mysql中select出数据未排序问题
  9. PHP中header和session_start前不能有输出的原因
  10. 设计模式(二)--单例模式
  11. java 异常java.lang.UnsupportedOperationException
  12. 1.第一本 docker 书 --- 简介
  13. Linux学习之源码2:start_kernel流程
  14. PHP常用方法(不定时更新)
  15. excel保护密码怎么解除
  16. (转载)C# Dictionary
  17. Visual Studio 2019离线安装教程(脱机安装、局域网安装)
  18. python人工智能面试题爱奇艺面试题_【爱奇艺Python面试】爱奇艺大数据面试 python-看准网...
  19. 4、不准用组函数(Max),取得最高薪水【bjpowernode34道SQL题】
  20. 入门推荐系统,你不应该错过的知识清单

热门文章

  1. 网游加速:互联网的又一个蓝海
  2. 找资源的网址——总结笔记一
  3. 2.4g无线跳频(三)
  4. Python语法学习记录(24):inspect模块介绍及常用使用方式
  5. 金华有哪几所计算机网络学校,金华最好的中专学校有哪些 十大中专学校排名...
  6. 中基鸿业投资理财入门的六个小技巧
  7. SQLyog连接数据库报错2058
  8. hadoop-3.0.0集群搭建
  9. C语言编写扫雷游戏,超简单
  10. c语言写我爱你中国编程,.请用户输入一组字符串,”我爱你中国”,然后倒序输出该字符串;...