数据库系统-关系数据理论

article/2025/10/9 17:26:51

数据库系统-关系数据理论

关系数据库规范化理论

关系数据库规范化是为了告诉你如何才能设计出合适的库和表。

关系模式由五部分组成,即它是一个五元组

​ R(U,D,DOM,F)

R: 关系名

U: 组成该关系的属性名集合

D: 属性组U中属性所来自的域

DOM: 属性向域的映像集合

F: 属性间数据的依赖关系集合

关系数据库规范化理论研究的就是R、F、U,之间的关系。

因为D和DOM对研究表的设计关系不大,所以在学习关系数据库规范化理论时可以将五元组简化成三元组

R (U,F)

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

数据依赖

数据依赖说一个关系内部属性与属性之间的一种约束关系

这种约束关系说通过属性间值的相等与否体现出来的数据间相关联系

它说现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现

数据依赖分类

1.函数依赖(Functional Dependency,简记为FD)

函数依赖极为普遍地存在于现实生活中。

属性间的这种依赖关系类似于数学中的函数y=f(x),自变量x确定之后,相应的函数值y也就唯一地确定了

2.多值依赖(Multivalued Dependency,简记为MVD)

3.其他

数据依赖F对关系模式的影响

因为关系数据库规范化理论主要研究的是三元组R(U,F),最重要的是F

【例】建立一个描述学校教务的数据库,数据库涉及的对象有:

学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程名(Cname)、成绩(Grade)

用单一的关系模式Student来表示做些对象:Student<U、F>

该关系的属性集合:U={Sno,Sdept,Mname,Cname,Grade}

关于这些对象之间的联系:

  • 一个系有若干个学生,但一个学生只能属于一个系
  • 一个系只有一名负责人
  • 一个学生可以选修多门课程,每门课程用若干个学生选项
  • 每个学生学习每一门课程只有一个成绩

属性组U上的一组函数依赖:

F={Sno->Sdept,Sdept->Mname,(Sno,Cname)->Grade}

这个关系模式设计的并不好,存在以下问题:

  • 数据冗余(Date redundancy)

    比如,每一个系的系主任姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。这将浪费大量的存储空间

  • 更新异常(update anomalies)

    由于数据冗余,当更新数据库中的数据时,系统要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险。比如,某系更换系主任后,必须修改与该系学生有关的每一个元组

  • 插入异常(insertion anomalies)

    如果一个系刚成立,尚无学生,则无法把这个系及其系主任的信息存入数据库

  • 删除异常(deletion anomalies)

    如果某个系的学生全部毕业了,则这删除改系学生信息的同时,这个系及其系主任的信息也丢掉了

得出结论:Student关系模式不是一个好的模型

好的模式不会发生插入异常、删除异常、更新异常,数据冗余应该尽可能少

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

解决方法:通过分解关系模式来消除其中不合适的数据依赖

可以把这个单一模式分成3个关系模式:

S(Sno,Sdept,Sno->Sdept);

SC (Sno,Cname,Grade,(Sno,Cname)->Grade)

DEPT(Sdept,Mname,Sdept->Mname)

这三个模式都不会方式插入异常、删除异常的问题,数据的冗余也得到了控制。

一个模式的数据依赖会有哪些不好的性质,如何改造一个不好的模式,就是规范化要讨论的内容

规范化

规范化研究什么

规范化讨论如何根据属性间依赖情况来判定关系是否具有某些不合适的性质

通常按属性间依赖情况来区分关系规范化程度为第一范式、第二范式、第三范式和第四范式等用来改造关系模式

通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题

函数依赖

数据依赖F中的函数依赖,分为以下几种类型:

  • 函数依赖
  • 平凡函数依赖与非平凡函数依赖
  • 完全函数依赖与部分函数依赖
  • 传递函数依赖

设R(U)是一个属性集U上的关系模式,X和Y是U的子集

若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组这X上的属性值相等,而这Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X->Y

image-20220331163031319

image-20220331163125241

image-20220331163404085

image-20220331163649976

码是一个或多个属性的集合。包括超码,候选码,主码等。

超码

是一个或多个属性的集合,超码中的这些属性可以让我们这一个实体集中唯一地标识一个实体。

例如在{a,b,c,d}中,假设知道a的值就能确定a,b,c,d的值,假设知道c,d的值也可以确定a,b,c,d的值,那么{a}就是超码,{c,d}就是超码。并且{a,b},{a,c},{a,b,c},{a,b,c,d}等也都是超码,因为它们也可以确定一个元组的所有值,即使很多冗余。虽然超码可以唯一标识一个实体,但是可能大多数超码中含有多余的属性。所以我们需要候选码。

候选码

候选码是极小的超码集,也就是它的任意真子集都不是超码,而他本身是超码。

就上面的例子而言,{a}是候选码,{c,d}是候选码,因为它们的真子集中不存在超码。而诸如{a,b}并不是候选码,因为它的真子集中含有{a},且{a}是超码。

主码

主码就是主键的意思,主码是被选中用来这一个关系中区分不同元组的候选码。也就是是主码是任意一个会候选码。

主码是候选码{a},{c,d}中的其中一个。只能有一个。

主属性和非主属性

包含这任何一个候选码中的属性,称为主属性(Prime attribute)

不包含这任何候选码中的属性称为非主属性(Nonprime attribute)

外码

学生(学号,姓名,性别,专业号,出生日期)

专业(专业号,专业名)

学生关系模式中的专业号引用了专业关系模式中的专业号(且专业号这专业关系模式中是主码),显然学生关系中的专业号必须是个存在的专业号(可以为空表示未分配专业)。即学生关系模式中的专业号是引用了专业关系模式中的专业号的外码。

全码

整个属性组是主码,称为全码(All-key)

范式

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

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

  • 范式的种类

    第一范式(1NF)

    第二范式(2NF)

    第三范式(3NF)

    BC范式(BCNF)

    第四范式(4NF)

    第五范式(5NF)

    image-20220331211253165

一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。

1NF的定义

如果一个关系模式R的所有属性都是不可分的基本数据项,则R是1NF

单一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。

但是满足第一范式的关系模式并不一定是一个好的关系模式。

1NF指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性

弊端:

  • 数据的冗余很大,有大量的数据会重复,重复占空间。
  • 字段名确定了,插入数据的时候但其他有些字段无值就会造成一些问题
  • 删除某个字段具体值的时候,相应的并联字段会受到影响

2NF的定义

若R是1NF,且每一个非主属性完全函数依赖于码,则R是2NF。

在第一范式(1NF)的基础上,实体的属性完全函数依赖于关键字(混合主键),不能存在部分依赖函数与主关键字(混合主键)

image-20220331212657296

3NF的定义

image-20220331212908087

商品ID字段依赖与订单ID,商品的颜色和商品的尺寸依赖与商品ID,使用订单ID字段和商品颜色,商品尺寸操作一个传递依赖,所以,不满足于第三范式。

BCNF

也叫修正的第三范式,在3NF的基础上消除主属性对于码的部分与传播函数依赖。

若:某公司有若干个仓库;每个仓库只能有一名管理员,一名管理员只能在一个仓库中工作;一个仓库中可以存放多种物品,一种物品也可以存放这不同的仓库中。每种物品在每个仓库中都有对应的数量。

那么关系模式仓库(仓库名,管理员,物品名,数量)属于哪一级范式?

已知 函数依赖集:仓库名->管理员,管理员->仓库名,(仓库名,物品名)->数量

码:(管理员,物品名),(仓库名,物品名)

主属性:仓库名、管理员、物品名

非主属性:数量

image-20220331214727538

从这里可以得出结论,在某些特殊情况下,即使关系模式符合3NF的要求,仍然存在着插入异常,修改异常与删除异常的问题,仍然不是“好”的设计。存在着主属性对于码的部分函数依赖与传递函数依赖。(在此例中就是存在主属性{仓库名}对于码{(管理员,物品名)}的部分函数依赖)

解决方法就是要在3NF的基础上消除主属性对于码的部分与传递函数依赖

仓库(仓库名,管理员)

库存(仓库名,物品名,数量)

这样,插入异常,修改异常与删除异常的问题就被解决了

多值依赖

用一个例子引入多值依赖:

【例】学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用

image-20220331223614426

可以看出规范后的关系模式CTB的键是(C,T,B),即全码,CTB属于BC范式。但是,进一步分析可看出,CTB还存在着如下弊端。

但是当某一课程(如物理)增加一名讲课教师(如周英)时,必须插入多个(这里是三个)元组:(物理,周英,普通物理学),(物理,周英,光学原理),(物理,周英,物理习题集)。同样,某一门课(如数学)要去掉一本参考书(如积分方程),则必须删除多个(这里是两个)元组:(数学,李勇,微分方程),(数学,张平,微分方程)。可以看出对数据的增删改很不方便,数据的冗余也十分明显。这类关系模式具有一种称为多值依赖(Multi-Valued Dependency,MVD)的数据依赖。

image-20220331231225552

平凡多值依赖和非平凡的多值依赖

若X->->Y,而Z=空集,则称X->->Y为平凡的多值依赖

否则称X->->Y为非平凡的多值依赖

4NF定义

关系模式R<U,F>是1NF,如果对于R的每个非平凡多值依赖X->->Y (Y不属于X),X都含有码,则R是4NF。

如果R是4NF,则R是BCNF

  • 不允许有非平凡且非函数依赖的多值依赖
  • 允许非平凡多值依赖是函数依赖

image-20220401155328534

规范化小结

关系数据库的规范化理论是数据库逻辑设计的工具

目的:尽量消除插入、删除异常,修改异常,数据冗余

基本思想:逐步消除数据依赖中不合适的部分

实质:概念的单一化

关系模式规范化的基本步骤

image-20220401202515652

数据依赖的公理系统

image-20220401203337540

函数依赖闭包

image-20220402191140644

image-20220402191239772

最小依赖集

image-20220402193211775

image-20220402191601807

image-20220402195130904

模式分解

把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的。只有能保证分解后的关系模式与原关系模式等价,分解方法才有意义。

三种模式分解等价的定义:

1.分解具有无损连接性;

2.分解要保持函数依赖;

3.分解既要保持函数依赖,又要具有无损连接性。

例子:

职工级别工资
赵明4500
钱广5600
孙志6700
李开5600
周祥6700

分解:

职工级别
赵明4
钱广5
孙志6
李开5
周祥6
级别工资
4500
5600
6700

http://chatgpt.dhexx.cn/article/IhLhE7RS.shtml

相关文章

关系数据理论

关系数据理论 本篇文章记录了第十五次作业 关系数据理论指的是关系数据库的规范化理论。这一理论是用来规范数据库模式的。落到实践层面来说&#xff0c;就是对数据库里面的这些表应该怎么建才好的一种理论。比如在之前遇到的的学生-选课-课程表中&#xff0c;我们有很多属性&…

关系数据库设计理论

一、关系数据库模型 关系模型是一种基于表的数据模型&#xff0c;以下为关系学生信息&#xff0c;该表有很多不足之处&#xff0c;本文研究内容就是如何改进它&#xff1a; 下面是一些重要术语&#xff1a; 1.属性&#xff08;attribute&#xff09;&#xff1a;列的名字&…

数据库导论 关系数据库理论

1. 数据库理论 数据库是 一系列有价值的信息组成的结构化的集合 (A structured collection of meaningful data). 我们称任何有价值的信息为 数据, (Data) 用于构建和维护数据库的软件为 数据库管理系统 (DBMS, Database Management System), 而 数据库管理系统 和 数据 共同…

数据库设计——关系数据理论(超详细)

&#xff1f;问题——什么是一个好的数据库逻辑设计&#xff1f; ●关系型数据库逻辑设计&#xff1a; ➠针对一个具体问题应如何构造一个适合于它的数据模式&#xff0c;即应构造几个关系&#xff0c;每个关系由哪些属性组成等 eg&#xff1a; &#xff1f;这样的设计是一个…

关系数据库理论

关系数据库理论 关系模式的组成 一个关系模式应当是一个五元组R(U,D,DOM,F) 这里R是符号化的元组语义 U为一组属性D为属性组U中的属性所来自的域DOM为属性到域的映射F为属性组U上一组数据依赖&#xff08;是一组数据依赖的集合&#xff09; 由于D,DOM与模式涉及关系不大&a…

【数据库】关系数据理论

问题的提出 一、概念回顾 关系&#xff1a;描述实体、属性、实体间的联系。 从形式上看&#xff0c;它是一张二维表&#xff0c;是所涉及属性的笛卡尔积的一个子集。 关系模式&#xff1a;用来定义关系。 关系数据库&#xff1a;基于关系模型的数据库&#xff0c;利用关系来描…

数据库原理(2)关系型数据库理论

二、关系型数据库理论 2.1 关系型数据库中基本概念 关系&#xff08;Relation&#xff09; 一个关系就是一张二维表&#xff0c;每个关系都有一个关系名元组 二维表中的行称为元组属性 二维表中的列称为属性关系模式 关系模式是对关系的描述。一般格式为R(D1,D2,D3..) R关系名…

锂离子电池的国际标准和国家标准(含安全方面IEC62133等,IEC61060电性能和UN38.3 GB4943运输存储标准)

做锂电池测试的相关标准 锂离子电池相关标准&#xff1a; 国家标准公开系统&#xff1a;国家标准全文公开 国家标准|GB 31241-2022下载和预览 GB31241-2022《便携式电子产品锂离子电池和电池组 安全技术规范》与2014变化内容 GB31241-2022国家强制标准&#xff0c;2024年1月1…

IEC 60664-1-2020【现行】低压供电系统内设备的绝缘配合第1部分:原则、要求和试验

IEC 60664-1-2020【现行】低压供电系统内设备的绝缘配合第1部分:原则、要求和试验 IEC60664-1-2020【现行】低压供电系统内设备的绝缘配合第1部分:原则、要求和试验-咨询文档类资源-CSDN下载IEC60664-1-2020【现行】低压供电系统内设备的绝缘配合第1部分:原则、要求和试验&…

IEC60958/61937协议

目录 第零节 本文内容 第一节 IEC60958/61937协议概述 第二节 IEC60958/61937硬件接口 第三节 IEC60958数据格式 第四节 IEC61937数据格式 第零节 本文内容 IEC60958/61937协议是我们音频开发中常见的一种协议&#xff0c;本文就叙述一下该协议的架构&#…

c 17 语言标准下载,C++ 17 标准手册(含C++ 17 STL Cookbook) 官方pdf原版

这里提供C 17 标准手册&#xff1a;Working Draft, Standard for Programming Language C 和C 17 STL Cookbook下载&#xff0c;包含C17 标准 ISOIEC 14882 2017 官方pdf文档&#xff0c;需要的朋友可下载试试&#xff01; C17 是继 C14 之后&#xff0c;C 编程语言 ISO/IEC 标…

漫谈工业软件(2)-IEC61499标准

IEC 61499是用于分布式工业过程测量与控制系统(IPMCSs)功能块的标准。该标准的名称表明了两个重要的概念 -分布式工业过程测量与控制系统 (IPMCSs)表明该标准针对的是工业分布式系统-由多台设备通过网络构成的系统。相比之下&#xff0c;IEC61131 PLC 标准针对的是单台设备的…

行业认证标准:IEC 62304-医疗设备软件安全分类标准

什么是IEC 62304? IEC 62304标准在医疗设备行业中使用,它是一种软件安全分类,它为软件生命周期过程提供了一个框架,其中包含为安全设计和维护医疗设备软件所必需的活动和任务。美国FDA接受IEC 62304合规性作为证明医疗设备软件已根据要求的法规/标准进行设计的证据,因为它…

c语言c11标准 下载,【整理】C语言的各种版本:C89,AMD1,C99,C11

【背景】 之前就知道了有个C90和C99。 后来又在&#xff1a; 期间知道有C11。 现在去整理一下&#xff0c;关于C语言的版本方面的更详细的内容。 参考内容&#xff1a; C语言版本历史 C语言主要有三个版本&#xff1a; ANSI CC89C90 ANSI C standardX3.159-1989 1989年批准通过…

iec611313标准下载_IEC 60249-1-1982(R1993)

基本信息 标准号&#xff1a;IEC 60249-1-1982(R1993) 标准名称&#xff1a;Base Materials For Printed Circuits. Part 1: Test Methods 外文名&#xff1a; Base Materials For Printed Circuits. Part 1: Test Methods 标准状态&#xff1a; 废止 被以下替代标准&#xff1…

iec611313标准下载_IEC 61730-1-2016

基本信息 标准号&#xff1a;IEC 61730-1-2016 标准名称&#xff1a;Photovoltaic (Pv) Module Safety Qualification – Part 1: Requirements For Construction 外文名&#xff1a; Photovoltaic (Pv) Module Safety Qualification – Part 1: Requirements For Construction…

iec611313标准下载_IEC 62108-2016

基本信息 标准号&#xff1a;IEC 62108-2016 标准名称&#xff1a;Concentrator Photovoltaic (Cpv) Modules And Assemblies – Design Qualification And Type Approval 外文名&#xff1a; Concentrator Photovoltaic (Cpv) Modules And Assemblies – Design Qualification…

国际著名标准化组织及ISO/IEC/ASTM/IEEE等国际标准免费下载地址

在知识经济时代&#xff0c;标准已被称作世界的通用语言。你看不懂语言没关系&#xff0c;但是一个标准的图形符号&#xff0c;你就能看明白&#xff0c;很快能GET到你需要的信息。在没有标准的世界&#xff0c;不仅人与人之间难以沟通&#xff0c;机器、零部件以及产品之间的联…

光伏产品标准 - IEC 61215:2021版系列简介及标准下载

光伏产品标准 - IEC 61215:2021版全系列简介及标准下载 2021年初&#xff0c;IEC正式发布了光伏产品IEC 61215:2021相关系列标准的更新版本&#xff0c;这也是IEC 61215:2016发布以来的首次更新。近五年来光伏行业技术发展迅猛&#xff0c;新标准的推出也迫在眉睫&#xff0c;历…

Java入门教程(二)程序设计基础

Java入门 二.Java程序设计基础1.标识符和关键字1.1标识符概述1.2标识符1.3关键字概述1.4关键字特点&#xff1a; 2.注释2.1概述2.2注释分类 3.Java常量3.1常量概述3.2常量分类 4.数据类型4.1计算机存储单元4.2数据类型4.3内存占用和取值范围 5.Java变量5.1变量概述5.2变量定义5…