【数据库】五、关系数据理论

news/2025/1/26 0:11:35 标签: 数据库, sql

文章目录

  • 五、关系数据理论
    • 1 数据依赖
      • 1.1 概念回顾
      • 1.2 关系模式的形式化定义
      • 1.3 函数依赖
    • 2 范式
      • 2.1 第一范式(1NF)
      • 2.2 第二范式(2NF)
      • 2.3 第三范式(3NF)
      • 2.4 BC范式
    • 3 关系规范化
      • 3.1 关系规范化程度原理图
      • 3.2 关系规范化步骤

五、关系数据理论

1 数据依赖

1.1 概念回顾

  • 关系:描述实体与属性、实体间的联系
  • 关系模式:用于定义关系,对关系的描述
  • 关系数据库:一组关系的组成
  • 关系数据库模式:定义这组关系的关系模式的全体

1.2 关系模式的形式化定义

R(U,D,DOM,F)

  • R:关系名
  • U:属性集合
  • D:属性类型(域)
  • DOM:属性向域的映像集合
  • F:属性间数据的依赖关系集合(函数依赖)

简化为:R(U,F)

当且仅当U上的一个关系r满足F时,r称为关系模式R(U,F)的一个关系

1.3 函数依赖

数据依赖指的是一个关系中属性间的依赖关系。主要的数据依赖是函数依赖。

函数依赖:R中的所有关系实例均要满足的约束条件。

多值依赖:一个X对应多个Y,即X→→Y

非平凡多值依赖:X→→Y,但Z=空。非平凡多值依赖:X→→Y,也X→→Z

举个例子:(函数依赖)

  • 一个表中人不允许重名,则:姓名 → 年龄,学号 → 姓名
  • 即:姓名决定年龄,学号决定姓名
  • X → Y:X决定Y;Y依赖于X
  • X ↔ Y:相互依赖,相互决定

函数依赖分类

  • 平凡函数依赖:若 X → Y,但 Y ⊆ X(废话)
  • 非平凡函数依赖:若 X → Y,但 Y ⊄ X
  • 完全函数依赖:X是一个集合(不是也行),他能 X → Y,但X的子集不能推出Y,X —> f _f f Y
  • 部分函数依赖:X是一个集合,他能 X → Y,但X的子集也能推出Y,X → p _p p Y
  • 传递函数依赖:X → Y,Y → Z,且Y⊄X,Y!→X,则Z传递函数依赖于X

设K是关系模式R(U,F)中的属性或者属性集合

如果:K → f _f f U,即U完全依赖于K,则称K为R的一个候选码,若关系模式中有多个候选码,则选其中一个作为主码

码的特点:

  • 候选码能唯一的表示关系的元组,是关系模式中一组最重要的属性
  • 组成候选码的属性称为主属性,其他属性称为非主属性

如何推出候选码?

把所有的函数依赖写出来,选出能决定所有属性的属性集合,这个集合就是码

2 范式

关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式

范式:符合某一种级别的关系模式的集合

某一关系模式R为第n范式,简记为 R ∈ n N F R∈nNF RnNF

2.1 第一范式(1NF)

定义:要求一个关系模式中所有的属性都是不可分的基本数据项

特点:

  • 对关系模式最基本的要求就是满足第一范式
  • 不满足第一范式的数据库模式不能称为关系数据库
  • 满足第一范式的关系模式不一定是一个好的关系模式

缺点:存在很多不完全函数依赖会有很多问题,如:

  • 插入异常、数据冗余、删除异常等
  • 插入异常:由于码值的一部分为空而不能将有用的信息作为一个元组插入到关系中
  • 更新异常:例如改员工的组,那么员工的所有销售额对应的分组和组长都要更新。维护数据完整性代价大
  • 删除异常:例如将某个组的员工移动到另一组,这个组的信息会随着组员的调动而全部丢失

原因:存在于模式中的某些数据依赖引起的

解决:分解关系模式来消除不合适的数据依赖

2.2 第二范式(2NF)

定义:若关系模式满足1NF,且每一个非主属性完全依赖于关系模式的码,则该关系模式满足2NF

缺点:存在传递函数依赖,导致冗余异常。主属性可能部分函数依赖于码

解决:继续分解(投影分解法)===>3NF

2.3 第三范式(3NF)

定义:若关系模式满足1NF,且不存在非主属性对码的传递函数依赖,则该关系模式满足3NF

特点:2NF是特殊的3NF,可证明,即 R ∈ 3 N F R∈3NF R3NF可推出 R ∈ 2 N F R∈2NF R2NF

缺点:主属性可能部分函数依赖于码。导致数据冗余等异常。

2.4 BC范式

定义:满足1NF基础上,每一个函数依赖的决定属性集都包含候选码,则 R ∈ B C N F R∈BCNF RBCNF

性质:

  • 非主属性完全函数依赖每个候选码
  • 主属性完全依赖于不包含它的候选码
  • 没有任何属性完全依赖于非码的任何一组属性

和3NF的关系:

  • 属于BC范式,必属于3NF
  • 属于3NF,且只有一个候选码,必属于BC

重要性:

  • 如果一个关系模式满足BC范式,说明它已经在函数依赖的范畴内实现了彻底分解
  • 达到最高的规范化程度
  • 消除了插入异常和删除异常

3 关系规范化

3.1 关系规范化程度原理图

消除非主属性对码的部分函数依赖
消除非主属性对码的传递函数依赖
消除主属性对码的部分和传递函数依赖
消除非平凡且非函数依赖的多值依赖
消除不是由候选码所蕴含的链接依赖
1NF
2NF
3NF
BCNF
4NF
5NF

3.2 关系规范化步骤

无损连接性的模式分解:

  • 原始关系模式 与 分解后的所有子关系模式自然连接的总结果 相等
  • 保证不丢失信息
  • 会丢失函数依赖

保持函数依赖的模式分解:

  • 原始模式的函数依赖一定也由分解得到的某个关系模式中函数依赖所包含
  • 减轻或解决各种异常情况

注:分解后必须满足无损链接和保持函数依赖


http://www.niftyadmin.cn/n/5819543.html

相关文章

【硕博研究生国际会议推荐(可线上)】方向涵盖电子信息、人工智能、能源利用、自动化、数据处理、信息化经济、管理、智慧城市、公共交通、计算机视觉...

【硕博研究生国际会议推荐】方向涵盖电子信息、人工智能、能源利用、自动化、数据处理、信息化经济、管理、智慧城市、公共交通、计算机视觉… 【硕博研究生国际会议推荐】方向涵盖电子信息、人工智能、能源利用、自动化、数据处理、信息化经济、管理、智慧城市、公共交通、计…

T-SQL语言的编程范式

T-SQL编程范式探析 引言 随着信息技术的迅猛发展,数据库在各个行业的应用日益广泛。在众多数据库管理系统中,SQL Server以其高性能和易用性受到广泛欢迎。T-SQL(Transact-SQL)是SQL Server的扩展版本,是一种用于查询…

VUE3 常用的组件介绍

Vue 组件简介 Vue 组件是构建 Vue 应用程序的核心部分,组件帮助我们将 UI 分解为独立的、可复用的块,每个组件都有自己的状态和行为。Vue 组件通常由模板、脚本和样式组成。组件的脚本部分包含了各种配置选项,用于定义组件的逻辑和功能。 组…

数据挖掘实训:基于CEEMDAN与多种机器学习模型股票预测与时间序列建模

股票市场的预测是金融领域中的一个重要研究方向,尤其是如何通过历史数据预测未来股价。这篇博客将带你走进如何通过多种方法,如CEEMDAN(Complete Ensemble Empirical Mode Decomposition with Adaptive Noise)分解技术与机器学习模…

高通,联发科(MTK)等手机平台调优汇总

一、常见手机型号介绍: ISP除了用在安防行业,还有手机市场,以及目前新型的A/VR眼睛,机器3D视觉机器人,医疗内窥镜这些行业。 下面是一些最近几年发布的,,,旗舰SOC型号: 1.联发科:天玑92…

Java(day7)

字符串练习 生成验证码 package day6; /*生成验证码 内容:可以是小写字母,也可以是大写字,还可以是数字 规则: 长度为5 内容中是四位字母,1位数字。 其中数字只有1位,但是可以出现在任意的位置。*/ impor…

【文件I/O】文件持久化

这篇文章详细讲解的是 理解在Linux操作系统中输入/输出(I/O)编程与文件操作的关系。 在计算机编程中,输入/输出编程(I/O 编程) 是一个重要的概念,指的是通过程序与外部世界(如用户输入、文件、…

ISP各模块功能介绍

--------声明,本文为转载整理------- ISP各个模块功能介绍: 各模块前后效果对比: 黑电平补偿(BLC) 在理想情况下,没有光照射的像素点其响应值应为0。但是,由于杂质、受热等其它原因的影响&…