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

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

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

微信图片_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}


目录
相关文章
|
19天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
79 10
|
19天前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
102 0
|
7天前
|
存储 算法 Serverless
了解数据库中的布隆过滤器原理
【5月更文挑战第17天】本文介绍布隆过滤器是一种空间高效的的数据结构,用于判断一个元素是否可能在一个集合中。它包含一个位图和多个哈希函数。
31 1
了解数据库中的布隆过滤器原理
|
19天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
137 6
|
19天前
|
存储 算法 搜索推荐
矢量数据库基础:概念、原理与应用场景
【4月更文挑战第30天】矢量数据库,处理高维向量数据的工具,应用于GIS、推荐系统、图像搜索及语义搜索。核心原理是将原始数据嵌入到高维空间,通过索引算法优化搜索性能。现代深度学习模型如Word2Vec提升向量表示准确性,KD-Tree、LSH等算法加速相似性搜索。随着技术发展,矢量数据库在数据科学领域的重要性日益增强。
|
19天前
|
移动开发 JavaScript 数据库
数据库原理—关系数据库
数据库原理—关系数据库
|
19天前
|
存储 数据库 索引
数据库原理——绪论
数据库原理——绪论
|
19天前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
252 0
|
19天前
|
数据库
头歌实践平台--数据库原理
头歌实践平台--数据库原理
22 0
|
19天前
|
C#
【自考】之数据库系统原理
【自考】之数据库系统原理
16 0

热门文章

最新文章