数据库原理与应用系列_03关系数据库与关系代数

简介: 数据库原理与应用系列_03关系数据库与关系代数

一、关系模型的数据结构及其形式化定义



关系模型的数据结构非常简单,只包含单一的数据结构——关系。

在关系模型中,无论是实体还是实体之间的联系,骏由单一的结构类型即关系来表示。

关系模型是以集合代数理论为基础的。


1、关系的形式化定义及其有关概念

  1. 域(Domain)


域是一组具有相同数据类型的值的集合,又称为值域(D)。例如:整数,实数,字符串的集合都是域。


域中所包含的值的个数称为域的基数(m)。


在关系中用域来表示属性的取值范围。


例如:D1={王伟,张三,李四},m1=3


D1表示姓名域的集合。


域名没有排列次序,如:D2={男,女}={女,男}


笛卡尔积

笛卡尔积也是一个集合

【1】每一个元素(d1,d2,d3…,dn)中的每一个值di叫做一个分量,分量来自对应的域。

【2】每一个元素(d1,d2,d3…,dn)叫做一个n元祖,简称元祖。但元祖是有序的。


笛卡尔积可以使用二维表来表示。

99c671e942094abab013b71fd5e0001e.png

3. 关系(Relation)

关系是笛卡尔积的子集。

笛卡尔积的任一子集称为定义在域上的n元关系,关系用R来表示。

R:关系的名字

n:关系的目或者度

【1】R=1:单元关系,R=2:二元关系。

【2】关系中的每个元素是元组,用t表示。关系中元组的个数是关系的基数。

f8b79363aca04433b248a0cd1dc19b70.png

【3】

无限关系:一个关系当中的元组个数是无限的


有限关系:一个关系当中的元组个数是有限的


【4】关系是笛卡尔积的子集,因此关系也是二维表


1、表的框架由域构成,即表的每一列对应一个域。


2、表的每一行对应一个元组


3、每列有唯一的名字,叫属性。


n元关系必有n个属性。


属性的取值范围称为值域,对应域当中的取值范围。


【4】具有相同关系框架的关系称为同类关系


【5】定义在域上的关系由关系头和关系体组成


关系头是属性名的集合(A1,A2 , A3)


关系头是关系的数据结构的描述,是固定不变的


关系体是指关系结构中的内容或者数据,它随元组的插入,删除,修改而变化。【考】【只是增,删,改,而没有查询,因为查询只是read only】


2、关系的性质


关系是一种规范化了的二维表中的行的集合。


关系的性质:


【1】列是同质的,即每列中的分量必须来自同一个域,必须是同一类型的数据


【2】不同的属性可来自同一个域


【3】列的顺序可以任意交换。但交换时,应该连同属性名一起交换,否则得到不同的关系


【4】关系当中元组的顺序可以任意,在一个关系中可以任意交换两行的次序。因为关系是以元组为元素的集合,而集合中的元素是无序的,所以作为集合元素的元组也是无序的。

【笛卡尔积当中的元组是有序的】


【5】关系当中不允许出现相同的元组(去重)


作为集合元素的元组是唯一的。


【6】关系中的每一分量必须是不可分的数据项


所有的属性值都是一个确定的值。


满足此关系的称为规范化关系,否则为非规范化关系。

672986dd7a2f49438fc93aa1fb388961.png


3、关系模式


关系数据库当中,关系模式是型,关系是值(实例化)。


关系模式是一个五元组。


关系的描述称为关系模式

关系模式可以形象化的表示为:R(U,D,DOM,F)


【1】R:关系名

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

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

【4】DOM:属性向域的映像集合

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


关系模式通常还可以简化为:R(U)或者R(A1,A2,…An)


【1】R:关系名


【2】U:属性名的集合


【3】A1,A2,…An:各属性名


关系模式是型,即关系头


关系是值,即关系体


实际中常把关系和关系模型统称为关系


【考试当中关系模式的写法:】

1、学生(学号,姓名,年龄)

2、教师(教师号,姓名,性别,工资)


4、关系数据库和关系数据库模式


  1. 关系数据库的型称为关系数据库模式
  2. 关系数据库的值称为关系数据库。是关系模式在某一时刻对应关系的集合
  3. 与关系数据库模式对应的数据库中的当前值就是关系数据库的内容,称为关系数据库的实例


二、关系的码和关系的完整性



1、候选码和主码


候选码

能唯一标识关系中元组的一个属性或属性集,称为候选码,也称候选键或者候选关键字。


如:在选课当中

只有属性组合“ 学号+课程号 ” 才能唯一地区分每一条选课记录,则属性组合“ 学号+课程号 ”就是选课关系的候选码。


当且满足以下两个条件,K才被称为候选码:

【1】唯一性:关系R的任意两个不同元组,其属性集K的值是不同的。

【2】最小性:组成关系键的属性集中,任一属性都不能从属性集K中删去,否则破坏唯一性。


例如:选课关系中的“ 学号+课程号 ” 满足最小性,从中去掉任何一个属性,都无法唯一标识选课记录。


2、主码(PK)


如果一个关系当中有多个候选码,可以从中选择一个作为查询,插入或者删除元组的操作变量,被选用的候选码称为主码,或者称为主键,关键字等等。

每个关系必须选择一个主码,选定后不得随意改变。

通常选最少的属性组合作为主码。


3、主属性和非主属性


主属性【Prime Attribute】:包含在主码中的各个属性称为主属性。

非主属性【None-Prime Attribute】:包含在任何候选码中的属性称为非主属性。


【考试判断题】

包含在候选码中的各个属性称为主属性。(错,不是候选码,是主码)

全码:所有属性的组合是关系的候选码,这是称为全码。


4、外键(FK)


如果关系R2的一个或一组属性X不是R2的主码,而是另一关系R1的主码,则该属性或属性组X称为关系R2的外码或外部关系键。

并称关系R2为参照关系,关系R1为被参照关系。


5、关系的完整性


对关系数据库的插入、删除和修改操作必须有一定的约束条件,这些约束条件实际上是现实世界的要求。


任何关系在任何时刻都要满足这些语义约束。


关系模型当中,有三类完整性约束:实体完整性,参照完整性,用户自定义完整性。


【1】实体完整性和参照完整性是关系模型当中必须满足的完整性约束条件,被称为关系的两个不变性。


【2】用户自定义完整性:不同关系数据库系统由于应用环境不同,需要的一些特殊的约束条件。体现在具体的领域中的语义约束。


实体完整性【考试:填空和判断中都有】

实体完整性指的是主码的值不能为空或者部分为空。


参照完整性

如果关系R2的外码X与关系R1的主码相符,则X的每个值或者等于R1中主码的某一个值,或者去空值。


例如:


4857b067f61b4be48cfc59056e3b5886.png

  1. 用户自定义完整性

同关系数据库系统由于应用环境不同,需要的一些特殊的约束条件。体现在具体的领域中的语义约束。


三、关系代数



关系模型由关系数据结果,关系操作和关系完整性约束三部分组成。

65ce220bd4194fac9b442d738b1b9660.png

1、关系代数的分类以及其运算符

40a2d44a4833422db6eb5bf492f7310a.png

40e078974f4945e9b43bc6e7d041efeb.png

【1】传统的集合运算:该类运算把关系看成元组的集合,以元组为集合的元素来进行运算,其运算是从关系的水平方向(axis=0)来进行的。传统的集合运算包括:并,交,差,笛卡尔积。


【2】专门的关系运算:该类运算不仅涉及行方向,也涉及列方向。包括选取,投影,连接和除法运算。


【考试判断题】

专门的关系运算只包括行运算是错的。(错)


除了笛卡尔积运算外,其他集合运算要求参加运算的关系必须满足下述相容性的定义:


【1】两个关系R,S具有相同的列数

【2】R的第i个属性和S的第i个属性必须来自同一个域

2、传统的集合运算

【1】并(Union)

关系R和关系S的并运算结果由属于R或者S的元组组成。即R或者S的所有元组合并,删去重复元组,组成一个新的关系,其结果仍然是n元关系。

801879cf435f4a98be38deb68f5b89cb.png0b7541f18a2946e2ad000a6159785e2e.png

【2】差(Difference)

关系R和关系S的差运算结果由属于R而不属于S的元组组成。即R中删去与S中相同的元组,组成一个新的关系,其结果仍然是n元关系。

36f521470b44492f83ea0a9a5e445821.png

e26b9a7a852447eead03ef782cd6d192.png


【3】交(Intersection)

关系R和关系S的交运算结果由即属于R又属于S的元组组成。

f22c735b908345ee96146e74ba25cde1.png5dbad4ab557e4f8783be00df3036c795.png


【4】广义笛卡尔积

6e45d2a7cd8c4cd9b3dcf92d750ac494.png


3、专门的关系运算

45379dfd9f2843138dd078d6107adb99.png

a54112fad76247e5825bcdae2a8ee64b.png

选课表

17378156b4274349aef55613867a2cac.png

【1】选取(Selection)

df264c8f0e464778a1c10c7b54b47efa.png

0cd83a914e5e444793b187ff3697353f.png

因此选择是从行的角度挑出来符合条件的行。

87ec53c82be644bf9b0278b03960494d.png

21ffbe6f101a4913a9706f60261874df.png


【2】投影(Projection)

5030298a19384d698b9de9a13029974c.png3ece6ea5a1424b70a724aac6baa62ba9.png


23e246e949bd4d31856e245e83b3a8a5.png

e5b3c2ba4bd14189a56acb131eb86fa4.png

【3】连接(join)

116fe4d8d61d4678a2eb780b8cdd3728.png66e1ad1321b34763b620c111e0fdd503.png843630852d0e4965bbc492bd6b49de10.png525aef5c14bb475abab2abfffd88d14d.png5aa9c44a9fde4328992536c844d2eb61.png86aa184d60bf4ff78a759b0988940b8e.pngf2289139b611422fba4a322995f6e0a0.png5ae6014d1d64447c98087d493dba4bf4.png69f486369b0a475ba47ebf399b0991dd.png6148a2f9a67a49f0a75723d63bcac187.pngb96e9345ad244f5db0318baf3f0699f5.png0f9ddf8f6b954344a8c6099079fc4931.png

【4】除法(Division)589aec45397f4c4fa16f83e8f08a7c41.png

【1】R ÷ S的属性是在R当中但是没有在S当中的属性。

【2】R ÷ S的元组和S的元组进行组合,组合的结果必须都在R当中

bd55ea36348844d992a633e1f8813282.png

第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);所得结果如下

9b23eebadaa649879ba9e4f65457df24.png

第二步:被除关系R中与S中不相同的属性列是X ,关系R在属性(X)上做取消重复值的投影为{X1,X2};

第三步:求关系R中X属性对应的像集Y

根据关系R的记录,可以得到与X1值有关的记录,如图3所示;与X2有关的记录,如图4所示

fd194924c5a8468cb054fcb9a5076a32.png

第四步:判断包含关系

R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。对比即可发现:

X1的像集只有Y1,不能包含关系S中属性Y的所有值,所以排除掉X1;

而X2的像集包含了关系S中属性Y的所有值,所以R÷S的最终结果就是X2

1a248e6e866848a1ac2c89c92afbce03.png



相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
1月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
167 64
|
16天前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
23天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
39 3
|
23天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
43 2
|
1月前
|
XML 存储 数据库
XML在数据库中有哪些应用?
【10月更文挑战第17天】XML在数据库中有哪些应用?
33 2
|
1月前
|
供应链 数据库
数据库事务安全性控制有什么应用场景吗
【10月更文挑战第15天】数据库事务安全性控制有什么应用场景吗
|
1月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
3月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
3月前
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
86 2
|
3月前
|
关系型数据库 数据库 数据安全/隐私保护
"告别繁琐!Python大神揭秘:如何一键定制阿里云RDS备份策略,让数据安全与效率并肩飞,轻松玩转云端数据库!"
【8月更文挑战第14天】在云计算时代,数据库安全至关重要。阿里云RDS提供自动备份,但标准策略难以适应所有场景。传统手动备份灵活性差、管理成本高且恢复效率低。本文对比手动备份,介绍使用Python自定义阿里云RDS备份策略的方法,实现动态调整备份频率、集中管理和智能决策,提升备份效率与数据安全性。示例代码演示如何创建自动备份任务。通过自动化与智能化备份管理,支持企业数字化转型。
102 2
下一篇
无影云桌面