【数据库原理 • 二】关系数据库理论

简介: 数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。当前互联网+与大数据,一切都建立在数据库之上,以数据说话,首先需要聚集数据、分析数据和管理数据,数据库技术已成为各种计算机系统的核心技术。数据库相关知识也已成为每个人必须掌握的知识。

在学习上一篇数据库系统概念后,我们知道数据模型是描述数据数据、数据联系、数据的语义以及一致性约束的概念工具的集合,现在我们系统的学习关系数据库。学习关系数据库前,带大家了解一些集合的概念。

微信图片_20230527152859.png



如果集合A的任意一个元素都是集合B的元素,那么称集合A是集合B的子集,用A⊆B表示,读作A包含于B,或者B包含A


如集合B中至少有一个元素不属于A,那么集合A叫做集合B的真子集。也就是A包含于B,且A不等于B,就说集合A是集合B的真子集


一些常用的符号:


符号 含义

子集符号 ⊆、⊇

非子集符号 ⊈、⊉

真子集符号 ⫋、⫌、⊊、⊋、⊂、⊃

非真子集符号 ⊄、⊅

属于 ∈(元素与集合的关系)

不属于 ∉(元素与集合的关系)

并符号 ∨,满足其中一个条件

交符号 ∧,满足两个条件

σ选择运算符 满足σ的条件

θ比较运算符 它可以是>,≥,<,≤,=或< >

集合描述法 :A={x|P}(x为该集合的元素的一般形式,P为这个集合的元素的共同属性)



一、关系及关系模式

美国 E.F.Codd 1970年:“A Relational Model of Data for Large Shared Data Banks”,《Communication of the ACM》标志着关系模型的提出,也是标志着层次、网状数据库的消亡。


1.1 关系模型的基础概念

1.1.1 域(Domain)

域是一组具有相同数据类型的值的集合。例:整数,{‘男’,‘女’},简单理解的话就是属性的取值范围。


1.1.2 笛卡尔积

给定一组域D1,D2,…,Dn,允许其中某些域是相同的。

D1,D2,…,Dn的笛卡尔积为:

D1×D2×…×Dn ={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}


集合中的d1来自于D1,以此类推,所有域的所有取值的一个组合并且不能重复就是笛卡尔积。


元组(Tuple)


笛卡尔积中的每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple),或简称为元组(Tuple)。简单理解表中的一行即为一个元组,也就是行


分量(Component)


笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量,也就是某一行对应属性的值


基数(Cardinal number)


若Di(i=1,2,…,n)为有限集,其基数为Mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为: 每个域基数的连乘的个数。


例如,给出3个域:


D1=导师集合SUPERVISOR={张清玫,刘逸}

D2=专业集合SPECIALITY={计算机专业,信息专业}

D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}


注:{张清玫,刘逸}就是元组,刘逸就是分量


这3个域的笛卡尔积的运算如下:

D1×D2×D3={

(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),

(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),

(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),

(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),

(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),

(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }


基数为2×2×3=12,但是在现实生活中是不存在这样关系的。


1.1.3 关系(Relation)

关系:


一个关系对应通常说的一张表


D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)


R:关系名


n:一个关系中,有几个域做笛卡尔积的构成称作关系的目或度(Degree),也就是几个列


元组


关系中的每个元素是关系中的元组,通常用t表示。也就是行


属性


关系中不同列可以对应相同的域;为了加以区分,必须对每列起一个名字,称为属性(Attribute)。也就是列



候选码(Candidate key):若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码

主码:若一个关系有多个候选码,则选定其中一个为主码(Primary key)

主属性:候选码的诸属性称为主属性(Prime attribute), 不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)

例如,主码?(假设学生不会重名)


SUPERVISOR SPECIALITY POSTGRADUATE

张清玫 计算机专业 李勇

张清玫 计算机专业 刘晨

刘逸 信息专业 王敏

POSTGRADUATE 就是主码


1.2 关系模式

关系模式(Relation Schema)是型,关系是值


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


R:关系名

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

D:U中属性所来自的域

DOM:属性向域的映象集合

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


二、关系模型的三要素

2.1 关系数据结构

关系模型的数据结构是二维表,需要注意是关系中的描述和表中的描述是不一样的


关系 表

关系名 表名

关系模式 表头

关系 二维表

元组 记录或行

属性 列

属性值 列值

分量 一条记录中的一个列值

微信图片_20230527152918.png


关系必须是规范化的

最基本的规范条件:每一个分量必须是不可分的数据项

微信图片_20230527152922.png



基本关系的性质


列是同质的(Homogeneous),取值的属性是相同的

不同的列可出自同一个域,其中的每一列称为一个属性,不同的属性要给予不同的属性名

列的顺序无所谓,列的次序可以任意交换

任意两个元组的候选码不能相同

行的顺序无所谓,行的次序可以任意交换


2.2 关系数据操作

查询操作: 选择、投影、连接、除、并、差、交、笛卡尔积,其中选择、投影、并、差、笛卡尔积是5种基本操作


数据更新: 插入、删除、修改


2.2.1 关系操作的特点

用的是集合操作方式,操作的对象和结果都是集合,一次一集合的方式


2.2.2 关系操作的查询语言

查询操作是在关系数据中最常用的操作,分为专门的关系运算符和集合运算符,其中有如下操作语言:

微信图片_20230527152958.png


关系代数语言: 用对关系的运算来表达查询要求,代表:ISBL


关系演算语言: 用谓词来表达查询要求


元组关系演算语言:谓词变元的基本对象是元组变量,代表:APLHA, QUEL

域关系演算语言 :谓词变元的基本对象是域变量,代表:QBE

具有关系代数和关系演算双重特点的语言:SQL(Structured Query Language)


2.3 关系完整性约束

2.3.1 实体完整性

若属性A是基本关系R的主属性,则属性A不能取空值。


例如选修(学号,课程号,成绩),“学号、课程号”为码,“学号”和“课程号”两个属性都不能取空值


2.3.2 参照完整性规则

若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值。

微信图片_20230527153003.png



要么学生中的ClaID为空,要么是班级信息表中ClaID属性值。


2.3.3 用户定义的完整性

反映某一具体应用所涉及的数据必须满足的语义要求。

例如课程(课程号,课程名,学分),“课程号”属性必须取唯一值,“学分”属性只能取值{1,2,3,4}


三、关系代数

关系代数运算符中包含多种数学运算

微信图片_20230527153026.png



3.1 集合运算符

3.1.1 并(Union)

R和S具有相同的目n(即两个关系都有n个属性),相应的属性取自同一个域


R∪S仍为n目关系,由属于R或属于S的元组组成


R∪S={t|t∈R∨t∈S}


∪并符号:集合基本符号,表示至少满足一个集合

∨并符号:逻辑基本符号,表示两个命题有一个发生则命题成立


也就是t∈R要么t∈S

微信图片_20230527153031.png



3.1.2差(Difference)

R和S具有相同的目n,相应的属性取自同一个域


R - S仍为n目关系,由属于R而不属于S的所有元组组成


R -S = { t|t∈R∧t∉S }


∧交符号:逻辑基本符号,表示两个命题同时发生则命题成立

∉符号:集合基本符号,不属于的意思


也就是t∈R

微信图片_20230527153107.png



3.1.3 交(Intersection)

R和S,具有相同的目n,相应的属性取自同一个域


R∩S仍为n目关系,由既属于R又属于S的元组组成


R∩S = { t|t∈R∧t ∈S }

R∩S = R –(R-S)


∩交符号:集合基本符号,表示满足2个集合

微信图片_20230527153110.png



3.1.4 笛卡尔积

微信图片_20230527153112.png

微信图片_20230527153116.png



3.2 专门的关系运算符

3.2.1 引入一些记号

微信图片_20230527153157.png

微信图片_20230527153201.png微信图片_20230527153204.png微信图片_20230527153208.png

微信图片_20230527153911.png

3.2.2 选择(Selection)

选择又称为限制(Restriction)

选择运算符的含义:在关系R中选择满足给定条件的诸元组σF( R )= {t|t∈R∧F(t)= ‘真’}


给大家解释一下这个公式:


σ运算符σF(): 在括号中写出运算的关系,在F处写出选择条件的表达式


={t|t∈R∧F(t)= ‘真’}: 它的结果是一个元组的集合,这个元组是属于关系R的,并且满足σ运算符σF()F处写出选择条件的表达式

F是选择条件,是一个逻辑表达式,取值为“真”或“假”

微信图片_20230527153928.png



基本形式为:X1θY1


θ表示比较运算符,它可以是>,≥,<,≤,=或< >


选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算

微信图片_20230527153933.png



例如,查询σ学号 =2022003(Student)

微信图片_20230527153937.png

3.2.3 投影

投影:从R中选择出若干属性列组成新的关系, πA( R ) = { t[A] | t ∈R }


微信图片_20230527154022.png


πA:R中的属性列


投影操作主要是从列的角度进行运算:


投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

微信图片_20230527154024.png



列如,求Student关系上学生姓名和所在系两个属性上的投影, πSname,Sdept(Student)

微信图片_20230527154027.png

3.2.4 连接

一般连接运算

微信图片_20230527154101.png

从两个关系的笛卡尔积中选取属性间满足一定条件的元组

微信图片_20230527154104.png


R跟S连接就等于Tr和Ts连接的集合,Tr和Ts表示元组的连接,Tr来自关系R,Ts来自关系S,并且满足AθB的条件


微信图片_20230527154108.pngA和B:分别为R和S上度数相等且可比的属性组


θ:比较运算符


连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组


等值连接(equijoin)


θ为“=”的连接运算称为等值连接从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:

微信图片_20230527154113.png



自然连接(Natural join)


自然连接是一种特殊的等值连接,两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉


自然连接的含义:R和S具有相同的属性组B


微信图片_20230527154117.png


一般的连接操作是从行的角度进行运算。




自然连接还需要取消重复列,所以是同时从行和列的角度进行运算


例如关系R和关系S如下所示

微信图片_20230527154121.png


3.2.5 除

给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:


微信图片_20230527154252.png


除操作是同时从行和列角度进行运算


设关系R、S分别为下图的(a)和(b),R÷S的结果如右下图:


微信图片_20230527154256.png


关系R中,A可以取四个值{a1,a2,a3,a4}


a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}


a2的象集为 {(b3,c7),(b2,c3)}


a3的象集为 {(b4,c6)}


a4的象集为 {(b6,c6)}


S在(B,C)上的投影为 {(b1,c2),(b2,c1),(b2,c3) }


只有a1的象集包含了S在(B,C)属性组上的投影,所以 R÷S ={a1}


相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
目录
相关文章
|
9天前
|
运维 关系型数据库 MySQL
自建数据库迁移到云数据库RDS
本次课程由阿里云数据库团队的凡珂分享,主题为自建数据库迁移至云数据库RDS MySQL版。课程分为四部分:1) 传统数据库部署方案及痛点;2) 选择云数据库RDS MySQL的原因;3) 数据库迁移方案和产品选型;4) 线上活动与权益。通过对比自建数据库的局限性,介绍了RDS MySQL在可靠性、安全性、性价比等方面的优势,并详细讲解了使用DTS(数据传输服务)进行平滑迁移的步骤。此外,还提供了多种优惠活动信息,帮助用户降低成本并享受云数据库带来的便利。
|
4月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
1月前
|
存储 缓存 网络安全
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
|
24天前
|
安全 关系型数据库 MySQL
体验自建数据库迁移到云数据库RDS,领取桌面置物架!
「技术解决方案【Cloud Up 挑战赛】」正式开启!本方案旨在帮助用户将自建数据库平滑迁移至阿里云RDS MySQL,享受稳定、高效、安全的数据库服务,助力业务快速发展。完成指定任务即可赢取桌面置物架等奖励,限量供应,先到先得。活动时间:2024年12月3日至12月31日16点。
|
2月前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
89 5
Mysql(3)—数据库相关概念及工作原理
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
69 2
|
2月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
116 5
|
2月前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
|
2月前
|
SQL 存储 Java
sql注入原理与实战(二)数据库原理
sql注入原理与实战(二)数据库原理
|
4月前
|
消息中间件 Kafka 数据库
深入理解Kafka的数据一致性原理及其与传统数据库的对比
【8月更文挑战第24天】在分布式系统中,确保数据一致性至关重要。传统数据库利用ACID原则保障事务完整性;相比之下,Kafka作为高性能消息队列,采用副本机制与日志结构确保数据一致性。通过同步所有副本上的数据、维护消息顺序以及支持生产者的幂等性操作,Kafka在不牺牲性能的前提下实现了高可用性和数据可靠性。这些特性使Kafka成为处理大规模数据流的理想工具。
109 6