3.6.2数据库系统-范式判断:范式分类、第一范式、第二范式、第三范式、BC范式

  • 范式分类
  • 第一范式
    • 例题
  • 第二范式
    • 例题
  • 第三范式
    • 例题
  • BC范式
    • 例题

范式分类

逐步优化以解决问题:插入异常、删除异常、数据冗余

  • 1NF:属性值都是不可再分的原子值
  • 2NF:消除非主属性对候选键的部份依赖
  • 3NF:消除非主属性对候选键的传递依赖
  • BCNF:消除主属性对候选键的部分和传递依赖

主要考察方向是区分范式、有时候还有优化操作,BCNF只考察判断,不会考察优化。

第一范式

第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。

涉及到属性是否可以再分,可以按下面归类:
简单属性和复合属性、单值属性和多值属性、NULL属性、派生属性

简单属性和复合属性
简单属性,就是原子的,不可再分的,复合属性可以划分成更细小的一些取值,一般认为,在没有说明的情况下,属性都是不可再分的,如果有说明,比如姓名,正常不说就是存name即可,如果有说明按姓,名分别去存,对应就是表两列,first_name,last_name,这样可以再细分的就是复合属性,向常见的记录地址的省市区街道,也可以按复合属性去再分。

简单属性和复合属性
单值属性和多值属性指的是取值,单值表示唯一,多值表示可以在里面记录多个值,比如电话号码、紧急联系人、家属,我们记录的时候会把这种多个属性放在一个位置上,我们就会把这个属性叫做多汁属性,即一个属性对应多个取值。

NULL属性
属性没有值,或者属性未知,表示没有意义,或者不知道。

NULL属性派生属性是可以计算出来的,比如通过出生日期计算年龄,年龄就属于派生属性,同理知道销售量和销售单价可以计算出销售额,销售额就是派生属性

例题

例如:关系模式R(系名称、高级职称人数)是否满足1NF,如果不满足,应该如何调整?

从图中,可以看出高级职称人数还可以继续按职称去分,所以不满足1NF的要求,连二维表的标准都够不上。没有达到1NF是不能成功建表的。需要把下面能够继续再分的树形作为真正的属性。

第二范式

第二范式(2NF):当且仅当实体E是第一范式(1NF),且每一个非主属性完全依赖主键(不存在部份依赖)时,则称实体E是第二范式。

例题

如下图,从关系模式看会存在哪些问题(数据冗余、更新异常、插入异常、删除异常这几个方面来考虑),解决方案是什么?

从图中可以看出学号和课程号可以得到成绩,由课程号可以得到对应的课程学分,途中学分的数据是冗余的,会更新异常,容易更新部分,导致更新不全,可能造成数据不一致,加入有一门课程还没有学生,就没有办法插入学分,就会产生插入异常,这个课程不在使用的时候,要进行删除,会同时删除掉学生的学号信息,会产生删除异常。

如何优化?
①首先确定关系模式满足第几范式
可以看出属性值都是不可再分的原子值,因此至少满足1NF
②找候选键
在1NF的基础上,来找关系模式的候选键,从函数依赖来看,由学号和课程号才能确定唯一的学生对应课程的成绩,这两个条件缺一不可,因此可以得到候选键是学号和课程号,候选键(学号,课程号)
③知道候选键,求主属性和非主属性
主属性:学号、课程号
非主属性:成绩、学分
④是否存在非主属性对候选键的部分函数依赖
如果候选键是单属性,则不可能出现部分函数依赖
所以考虑2NF的时候,都是出现组合候选键,由非主属性部分依赖依赖于候选键
学分只依赖于课程号,不依赖于学号,所以是非主属性部分函数依赖候选键
因此只达到了1NF,想要优化达到2NF,要拆分关系,拆分关系时要注意,保留原有的函数依赖关系
(课程号,学分)
(学号,课程号,成绩)

第三范式

第三范式(3NF):当且仅当实体E是第二范式(2NF),且E中没有非主属性传递依赖于码(即候选键)时,则称实体是第三范式。

非主属性传递依赖于码时:A→B,B→C,C传递依赖于A,且B为非主属性,则满足第三范式。

只有达到第三范式,才能解决数据冗余、更新异常、插入异常、删除异常问题。

在考虑规范化程度的情况下,如果没有非主属性,则认为至少能够达到3NF。

例题

如下图,从关系模式看会存在哪些问题(数据冗余、更新异常、插入异常、删除异常这几个方面来考虑),解决方案是什么?

如图可知,学号→姓名,学号→系号,系号→系名,系号→系位置
分析属于第几范式
①首先确定关系模式满足第几范式
可以看出属性值都是不可再分的原子值,因此至少满足1NF
②找候选键
这里是学号
③知道候选键,求主属性和非主属性
主属性:学号
非主属性:姓名,系号,系名,系位置
④是否存在非主属性对候选键的部分函数依赖
如果候选键是单属性,则不可能出现部分函数依赖
所以考虑2NF的时候,都是出现组合候选键,由非主属性部分依赖依赖于候选键
而候选键只有一个属性,学号,因此不可能存在部分函数依赖
所以满足2NF
⑤看没有非主属性是否传递依赖于候选键
学号→姓名,学号→系号,系号→系名,系号→系位置
可知,系名,系位置都通过系号得出,因此是传递依赖于学号

所以规范化程度只能达到第二范式,要优化成第三范式,需要对系号的关系进行拆分,将系号相关的作为另一个关系模式,系号需要保留,来作为两个关系模式的关联方式

(学号,姓名,系号)
(系号,系名,系位置)

BC范式

BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。

BCNF的规范化程度就很高了,它是消除主属性对相应的候选键产生的部分函数依赖和传递函数依赖,没有消除就不满足BC,消除就满足。左侧决定因素都包含候选码。

一般达到3NF就可以,BCNF拆的太细,会涉及到多表联表查询,而联合查询效率低,因此为了查询效率出现了反规范化的思想。

例题

关系模式STJ(S,T,J)中,S表示学生,T表示老师,J表示课程。每一老师只教一门课程。没门课程有若干老师,某一学生选定某门课,就对应一个固定老师。


函数依赖集合为:F={T→J,SJ→T}
①判断是否满足1NF
属性不可再分满足
②判断候选键
候选键只出现在左侧,入度为0的是候选键
候选键为两个组合键SJ,ST
③判断主属性和非主属性
候选键为两个组合键SJ,ST,也就是STJ都是主属性,即没有非主属性,满足2NF
④考虑部分函数依赖
在候选键存在组合键的情况下,有可能出现部分函数依赖

考虑的部分函数依赖是非主属性对候选键的部分函数依赖,而没有非主属性,则说明没有这部分依赖,也就是说,消除了非主属性对候选键的部分函数依赖,满足2NF

没有非主属性,则满足3NF,没有非主属性传递依赖于码(即候选键)时,则称实体是第三范式。

在考虑规范化程度的情况下,如果没有非主属性,则认为至少能够达到3NF。
⑤根据定义判断是否满足BCNF
函数依赖集合为:F={T→J,SJ→T}
候选键为两个组合键SJ,ST
T→J的T不包含候选键
SJ→T的SJ包含候选键

定义:BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。

需要都包含才能达到BCNF,所以不满足,只达到了3NF。

3.6.2数据库系统-范式判断:范式分类、第一范式、第二范式、第三范式、BC范式相关推荐

  1. MySQL (4) 第一范式 第二范式 第三范式 BC范式

    第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS) ...

  2. 第一范式 第二范式 第三范式 BC范式

    第一范式 第一范式:所有属性都是不可分割的原子值.  也就是每个属性都是不可再分的.  例如下图就不符合第一范式的要求   实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RD ...

  3. 数据库三大范式、BC范式、第四范式

    目录 第一范式(1NF):原子性(存储的数据应该具有"不可再分性") 第二范式(2NF):唯一性 (消除非主键部分依赖联合主键中的部分字段)(一定要在第一范式已经满足的情况下) 第 ...

  4. 数据库|第一范式、第二范式、第三范式、BC范式、第四范式简单理解

    数据库|第一范式.第二范式.第三范式.BC范式.第四范式简单理解 在设计数据库的时候,虽说将我们要的数据正确完整导入数据库是很关键的,但是对于数据库的设计者来说,如何将大量数据合理有效正确地导入数据库 ...

  5. 4.MYSQL 三大范式+BC范式

    前言 首先,你得知道范式是干啥的? 范式就是规范我们建表的依据,为后续的增删改查提高安全保障 正文 come on~~~~~~ 第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不 ...

  6. 数据库的三范式及BC范式

    数据库的三范式及BC范式 依赖 三范式 第一范式(1NF):唯一性,数据列不可再分割 第二范式(2NF):唯一性,消除非主键元素/列对组合主键中部分元素/列的依赖 第三范式(3NF):独立性,消除传递 ...

  7. mysql候选关键字_MySQL(三)之SQL语句分类、基本操作、三大范式

    一.SQL语句的分类 DML(Data Manipulation Langauge,数据操纵/管理语言) (insert,delete,update,select) DDL(Data Definiti ...

  8. 关系数据库理论----如何判断关系模式规范化达到第几范式

    文章目录 求关系模式最高达到第几范式的步骤 通俗理解1NF,2NF,3NF. 如何求关系模式的候选码 如何求闭包 函数依赖 求关系模式最高达到第几范式的步骤 根据给定的U和F,首先求它的候选码 根据候 ...

  9. 数据库部分函数依赖、传递函数依赖的区别以及范式判断

    说到部分函数依赖,传递函数依赖,必须谈到2个概念,"非主属性"和"主属性". 主属性:组成候选码的属性,就是主属性.例如,属性集{学号,姓名,身份证号码,联系电 ...

最新文章

  1. 【模型开发】EDA探索性分析
  2. Eclipse安装反编译插件
  3. 电信计算机知识考试,2020中国电信考试试题——专业知识一
  4. nmon Analyser分析仪
  5. python结课报告_20193111 2019-2020《Python程序设计》实验4报告
  6. 【杂谈】我学习这么好,为什么找不到工作?
  7. 什么是php-fpm
  8. 向量的点乘(内积、数量积)和叉乘(外积、向量积)
  9. JavasScript 第一天课 课后笔记 2022.3.21
  10. Jetty和Tomcat的比较。
  11. 中国脑与语言认知领域研究学者
  12. STM32使用正点原子无线烧录器无线查看数据波形
  13. 系统安全及应用实验案例
  14. oracle ebs mrp提前期,EBS-MRP提前期.doc
  15. ubuntu20.04 server 无图形命令行安装
  16. [全流程案例]壮汉:1. 起大形(Blender)
  17. field xinx required a bean of type x that could not be found
  18. 嵌入式:ARM最小系统设计详解
  19. 全国上下齐讽国足,一片和谐(加强版)
  20. 自制板载ST-LINKV2-1下载器

热门文章

  1. 字符串流stringstream--<sstream>
  2. 5G NR — 载波聚合
  3. 学计算机键盘用什么轴,机械键盘别再盲目的选择,看看四种常用轴到底适合什么用途...
  4. 微信小程序遇到的问题及解决办法
  5. xx-job任务管理平台
  6. 项目管理专业英语-项目预测
  7. vue 中使用$refs,报this.$refs.xxx.xxx() is not a function
  8. JavaWeb25.3【综合案例:注册功能(含邮箱激活账号)】
  9. 相对寻址方式与变址寻址方式的区别与联系
  10. windows电脑无线投屏到小米电视