关系数据理论

article/2025/10/9 17:34:56

关系数据理论

本篇文章记录了第十五次作业


 关系数据理论指的是关系数据库的规范化理论。这一理论是用来规范数据库模式的。落到实践层面来说,就是对数据库里面的这些表应该怎么建才好的一种理论。比如在之前遇到的的学生-选课-课程表中,我们有很多属性,而哪些属性应该组成几个什么样的表才能使我们这个数据库最优、出现问题最少呢?这就是我们要研究的问题。


规范化(normalization)

函数依赖

 要了解关系数据库的规范化理论,我们首先要了解函数依赖这一关系。
 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在:两个元组在X上的属性值相等,而在Y上的属性值不等, 我们则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。否则记作X ↛ \nrightarrow Y。
 简单来说,这里两者相当于形成了一种一一对应的函数关系,我们称这种关系为函数依赖。
 函数依赖有平凡函数依赖和非平凡函数依赖,但我们在在这里基本不讨论平凡函数依赖。

完全/部分/传递函数依赖

 对于非平凡函数依赖,我们还分为完全函数依赖、部分函数依赖和传递函数依赖:
在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 X ’ ↛ Y X’ ↛ Y XY, 则称Y对X完全函数依赖,记作 X → F Y X \overset F \rightarrow Y XFY。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作 X → P Y X \overset P \rightarrow Y XPY
 什么意思呢?我们举一个例子。
在关系SC(Sno, Cno, Grade)中,有:
  Sno ↛ \nrightarrow Grade,Cno ↛ \nrightarrow Grade
 因此:(Sno, Cno) → F \overset F \rightarrow FGrade
  (Sno, Cno) → P \overset P \rightarrow PSno
  (Sno, Cno) → P \overset P \rightarrow PCno
 不难发现,部分函数依赖的例子里面Sno其实只需要Sno就可以确定,但由于候选码有俩,所以很尴尬。这样强行带着就属于部分函数依赖,反之则是完全函数依赖。
 至于传递函数依赖,定义如下:
 在R(U)中,如果X→Y(Y⊈X),Y ↛ \nrightarrow X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖(transitive functional dependency)。记为:X → 传 递 \overset {传递} \rightarrow Z。 如果Y→X, 即X←→Y,则Z直接依赖于X,而不是传递函数依赖。
 传递函数依赖比较容易理解,需要注意的是需要Y ↛ \nrightarrow X,否则就不是传递函数依赖了。


范式

 刚刚说了半天就是为了现在的范式打基础。为了规范化,科学家提出了范式(normal form)的概念。**满足某种程度要求的关系叫做范式。**到现在我们有1NF、2NF、3NF、BCNF、4NF和5NF这几种范式。各种范式分关系为5NF ⊂ \subset 4NF ⊂ \subset BCNF ⊂ \subset 3NF ⊂ \subset 2NF ⊂ \subset 1NF。这些范式是建立在函数依赖/多值依赖的基础上的。
 一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)。
NF

1NF

 满足最低要求,即存在关系的关系即使1NF,第一范式,不多说。

2NF

 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF

3NF

 设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ ↛ X不成立,则称R<U,F> ∈ 3NF。

BCNF

 设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。

4NF

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

5NF

 如果关系模式R中的每一个连接依赖均由R的候选码所隐含,则称此关系模式符合第五范式。
normalization

习题

1、建立一个关于系、学生、班级、学会等诸信息的关系数据库

 描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区;
 描述班级的属性有:班号、专业名、系名、人数、入校年份;
 描述系的属性有:系名、系号、系办公室地点、人数;
 描述学会的属性有:学会明、成立年份、地点、人数。
 有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会。学生参加某学会有一个入会年份。
 请给出关系模式,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况,讨论函数依赖是完全函数依赖还是部分函数依赖。 指出个关系的候选码、外部码,并说明是否全码存在。
 

解答:

 这里我们先把基本的关系模式建立起来。
学生: S(Sno,Sname,Sdate,Dept,Cno,Sloc);
 班级: C(Cno,Maj,Dept,Cnum,Cyear);
 系: D(Dept,Dno,Dloc,Dnum);
 学会 A(Aname,Ayear,Aloc,Anum);

 
一个系有若干专业,每个专业每年只招一个班,每个班有若干学生,我们知道Maj→Dept,(Cyear,Maj)→Cno,Sno→Cno;
一个系的学生住在同一宿舍区,得Dept→Sloc;
每个学生可参加若干学会。学生参加某学会有一个入会年份,我们得(Aname,Sno)->Adate.这时候就发现我们还得整个学生-学会的表。
 有S-A(Sno,Aname,Adate);
 
对于S关系,我们有:Sno→Sname,Sno→Sdate,Sno→Cno,Cno→Dept,Dept→Sloc;
对于C关系,我们有:Cno→Maj,(Maj,Cyear)→Cno,Cno→Cnum,Cno→Cyear,Maj→Dept;
对于D关系,我们有:Dept→Dno,Dno→Dept,Dno→Dloc,Dno→Dnum;
对于A关系,我们有:Aname→Ayear,Aloc,Anum;
S-A中(Sno,Aname)→Adate.
 
 那么开始解决第一个问题:是否有传递依赖?
 在S中,很明显,有。
因为Sno→Cno,Cno→Dept,故Sno和Dept存在传递函数依赖。又Dept→Sloc,所以Sno和Sloc之间,以及Cno和Sloc也有传递函数依赖
 在C中,Cno→Maj,Maj→Dept,故Cno和Dept又传递函数依赖。
 D、A、S-A中都没有传递函数依赖。
第二个问题:对于函数依赖左部是多属性的情况,讨论函数依赖是完全函数依赖还是部分函数依赖?
 手里有两个左边是多属性的:(Sno,Aname)→Adate,以及(Maj,Cyear)→Cno,很明显二者都是完全函数依赖不是部分函数依赖。
第三个问题:说出候选码,外码和全码。
 S中候选码明显是Sno(学号),外码有Cno和Dept,没有全码。
 C中候选码是Cno(班号)和(Maj,Cyear),外码为Dept,同样没有全码。
 D中候选码是Dno(系号)以及Dept(系名),没有外码全码。
 A中只有候选码Aname。
 S-A中候选码是(Sno,Aname),外码是Sno和Aname,没有全码。
 

2、有关系模式R(A,B,C,D,E),回答下面各个问题:

(1)若A是R的候选码,具有函数依赖BC→DE,那么在什么条件下R是BCNF?
(2)如果存在函数依赖A→B,BC→D,DE→A,列出R的所有码。
(3)如果存在函数依赖A→B,BC→D,DE→A,R属于3NF还是BCNF。

解答

(1)A是候选码,若A→BC,那么是2NF不是3NF。所以我们要使传递函数依赖消失。我们加上BC→A,这样不符合传递函数依赖的定义了,因此R成了3NF。又A是唯一决定因素,此时R是BCNF。
故条件为A→BC,BC→A。
(2)此时有F={A→B,BC→D,DE→A),码有ACE,CDE,BCE.
(3)存在决定因素里面不包含码的情况,故是3NF而不是BCNF。

3、下面哪些结论是正确的?哪些是错误的?

(1)任何一个二目关系是属于3NF的。
  正确。
(2)任何一个二目关系是属于BCNF的。
  正确。
(3)任何一个二目关系是属于4NF的。
  正确。
(4)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
  错误,反之是不成立的。当且仅当函数依赖A→→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和度R2(A,C)的连接。
(5)若R.A→R.B,R.B→R.C,则R.A→R.C。
  正确。
(6)若R.A→R.B,R.A→R.C,则R.A→R.(B,C)。
  正确。
(7)若R.B→R.A,R.C→R.A,则R.(B,C)→R.A。
  正确。
(8)若R.(B,C)→R.A,则R.B→R.A,R.C→R.A。
  错误,如SC(Sno,Cno,Grade),(Sno,Cno)→Grade,but Sno↛ Grade,Cno↛ Grade.

4、证明:

(1)如果R是BCNF关系模式,则R是3NF关系模式,反之则不然。
  若R是BCNF,则X →Y且Y ⊆ X时X必含有码.假设R不是3NF,那么其中必定存在传递函数依赖,使得BCNF的性质(X中不一定含有码)不一定成立,故若R是BCNF,则也是3NF。反之,若F仅仅是3NF,那么不一定满足BCNF条件,故不然。
(2)如果R是3NF关系模式,则R一定是2NF关系模式。
  若R是3NF,则传递不存在函数依赖,假设R不是2NF,那么R中不存在每一个非主属性都完全函数依赖于任何一个候选码。这时必然存在传递函数依赖,否则码不是码,与3NF矛盾。故如果R是3NF关系模式,则R一定是2NF关系模式。

5、若Y(X1,X2,X3,X4),(X1,X2)→X3,X2→X4;

(1)Y的候选码?
(2)属于第几范式?

解答

因为X2→X4,所以(X1,X2)→X4;
又因为(X1,X2)→X3,所以(X1,X2)→(X1,X2,X3,X4)。
因此:候选码:(X1,X2);非主属性:X3,X4。
因为(X1,X2)→X4, X2→X4,存在非主属性X4对候选码(X1,X2)的部分函数依赖;
所以不属于2NF。
结论:候选码(X1,X2),属于第一范式。

6、R(A,B,C,D),F={AB→D,AC→BD,B→C}

(1) 侯选码?
(2)最高属于第几范式?

解答

因为B→C,AB→D,所以AB→CD。
故AB→ABCD
因为AC→BD,
故AC→ABCD。
因此候选码为AC和AB。
非主属性为D,不存在对候选码的部分函数依赖,最高为2NF。

7、R(X,Y,Z,W),F={Y←→W,XY→Z}

(1)侯选码?
(2) 最高属于第几范式?

解答

因为Y→W,XY→Z,
故XY→XYZW。
因为W→Y,XY→Z
故XW→XYZW;
因此候选码为XY和XW。存在传递函数依赖,最高为2NF。

8、R(A,B,C,D,E) F={A→B,CE→A,E→D}

1) 求候选码。
(2)最高属于第几范式,为什么?
(3)分解到3NF。

解答

因为CE→A,A→B,E→D
故CE→ABCDE,
因此候选码为CE。
因为E→D,故存在非主属性对候选码的部分函数依赖,不是2NF,最高为1NF。
分解:
R1(A,B)
R2(C,E,A)
R3(E,D)

9、R(商店编号,商品编号,数量,部门编号,负责人)

每个商店的每种商品只在一个部门销售,
每个商店的每个部门只有一个负责人,
每个商店的每种商品只有一个库存数量。
(1) 求候选码。
(2)R已达第几范式?为什么?
(3)若不属于3NF,分解成3NF。

解答

有R(Sno,Gno,Num,Dno,Name)
根据语义:(Sno,Gno)→Dno,(Sno,Dno)→Name,(Sno,Gno)→Num;
根据上面的条件,很明显候选码是(Sno,Gno)。其中存在传递函数依赖:由(Sno,Gno)得到Name的过程中。但不存在部分函数依赖,故是2NF。
分解:
R1(Sno,Gno,Num,Dno);
R2(Sno,Dno,Name).

10、R(A,B,C,D,E,F) F={A→C,AB→D,C→E,D→BF}

(1)写出候选码。
(2)分解到2NF。
(3)分解到3NF。
(4)分解到4NF。

解答

因为AB→D,A→C,
所以AB→ABCD.
又C→E,D→BF,
所以AB→ABCDEF.
又因为D→BF,A→C,
所以AD→ABCDF.
又C→E,
故AD→ABCDEF
所以候选码是AB与AD。
分解至2NF(去除部分函数依赖):
R1(A,B,D,F); R2(A,C,E).
分解至3NF(去除传递函数依赖):
R1(A,B,D), R2(D,F); R3(A,C); R4(C,E).
分解至4NF(去除多值依赖):
R1(A,B,D), R2(D,F); R3(A,C); R4(C,E).
(刚刚符合3NF的模式也符合4NF)
 
 
参考文献:
[1]萨师煊,王珊,数据库系统概论.5版.北京:高等教育出版社,2014.
[2]David老师的PPT.


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

相关文章

关系数据库设计理论

一、关系数据库模型 关系模型是一种基于表的数据模型&#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…

Java程序设计教程——第四、六章习题

1、判断题 下标是用于指出数组中位置的数字或变量。&#xff08;X&#xff09;同一个数组中可以存放多个不同类型的数据。&#xff08;X&#xff09;[数组是相同数据类型的数据元素的集合]数组的下标可以是int型或float型。&#xff08;X&#xff09;数组可声明为任何数据类型…