浅显易懂 SQLite3 笔记(08)— 数据库三大范式


前言

   本篇,我们将学习关系数据理论——数据库三大范式。了解什么是函数依赖,什么是数据库三大范式,以及范式对查询的影响。


一、函数依赖

  • 在数据库范式中,有一个重要的概念叫做函数依赖,具体包括完全函数依赖、部分函数依赖和传递函数依赖。

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)— 数据库三大范式的所有内容,希望大家阅读后都能有所收获!原创不易,转载请标明出处,若文章出现有误之处,欢迎读者留言指正批评!

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤生i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值