第二章、关系数据库

第二章、关系数据库

关系数据库简介

image-20230816210359709

2.1、关系数据结构及形式化定义

2.1.1、关系

1、单一的数据结构——关系

2、逻辑结构——二维表

3、关系模型是建立在集合代数的基础上

1、相关定义

1、域(Domain)

1、属性的取值范围

2、就是列

2、笛卡尔积(Cartesain Product)

1、定义

image-20230816211653671

3、元组(Tuple)

1、就是二维表中的一行

4、分量(Compoent)

1、笛卡尔积元素(d1,d2,……,dn)中的di个称为分量

5、基数(Cardinal number)

1、介绍

image-20230816212201227

2、就是取值范围能取几个数

6、笛卡尔积的表示方法

1、笛卡尔积可以表示为一个二维数组表

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

3、每一列对应一个域

4、例子

image-20230816213316706

2、关系(Relational)

1、关系

1、R(D1,D2……,Dn)

2、其中R表示关系名

3、n表示关系的目数,就是个数

2、元组

1、每个元素是关系中的元组,通常用t表示

3、单元关系与二元关系

1、n=1时:单元关系

2、n-2时:二元关系

4、关系的表示

1、关系是一个二维表

2、每行对应一个元组

3、每列对应一个域

4、一个属性

5、属性

1、为了区别相同的域,所以列对应的名字就叫属性

2、n有几个,属性就有几个

6、码

1、候选码(Candidate key):唯一地标识一个元组,简单情况:候选码只包含一个属性

2、全码(All-key):极端情况:关系模式的所有属性组称为一个关系模式的候选码

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

4、主属性:候选码的诸属性称为主属性

5、非主属性:不包含在任何候选码中的属性、或非码属性

6、例子

1、笛卡尔积的子集并不是都有实际意义

2、例子

image-20230816215203482

7、三类关系

1、基本关系:实际存在的表,是实际存储数据的逻辑表示

2、查询表:查询结果对应的表

3、视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

8、基本关系的性质

1、列是同质的(Homogeneous)

2、不同的列可能出自同一个域,其中的每一个列称一个属性,不同的属性要基于不同的属性名,(例如:学生和性别不是同一列,但都是汉字类型的这个域)

3、列的顺序是无所谓,列的次序可以交换

4、任意两个元组的候选码不能相同(例如两个身份证号不能相同)

5、行的顺序无所谓,行的次序可以交换

6、分量必须取原子值,规范条件中最基本的一条

2.1.2、关系模式

1、什么是关系模式

1、是对关系的描述(关系模型就像模具)

1、元组集合的结构

1、属性结构、属性来自域、属性与域之间的映象关系

2、一个关系通常由赋予它的元组语义确定
3、现实的世界中还存在的完整性约束

2、定义关系模式

1、内容

image-20230816221212332

3、关系模式与关系

1、关系模式是静态的稳定的(类似表头)

2、关系是动态的、随时间不断变化(类似表中数据)

3、根据某一时刻的状态或内容,在实际开发中开发问问称为关系,需要上下文加以辨别

2.1.3、关系数据库

1、关系数据库

1、给定的应用领域中,所有关系的集合构成的关系数据库

2、关系数据库的型与值

1、关系数据库的型

1、关系数据库模式、对关系数据库的描述

2、关系数据库的模式

1、若干域的定义,在这些域上定义的一个若干关系模式

3、关系数据库的值

1、关系模式在某一刻对应的关系的集合,简称关系数据库

2.1.4、关系模型的存储结构

1、有的关系数据库管理系统中:一个表对应一个操作系统文件,将物理数据

2、有的关系数据库管理系统从操作系统那里申请若干个大文件,自己划分文件空间,组织表,索引等存储结构,并进行存储管理

2.2、关系数据结构

2.2.1、基本关系操作

1、常用的关系操作

1、查询:选择、投影、连接、除、并、交、差等

❗2、其中选择、投影、并、差、笛卡尔积5种基本操作

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

4、查询的表达能力是其中最主要的部分

2、关系操作的特点

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

2.2.2、关系数据库语言的分类

1、关系代数语言

1、对关系的运算来表达查询要求。代表ISBL

2、关系演算语言

1、用谓词(例如真假)来表达查询要求

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

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

3、具有关系代数和关系演算双重特点的语言

1、代表:SQL(Structured Query Language)

2.3、关系的完整性

1、关系模型中有三个完整性约束:实体完整性、参照完整性、用户定义的完整性

2、其中实体完整性、参照完整性是关系模型必须满足的完整性约束条件,称为关系的两个不变性

3、用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束

2.3.1、实体完整性

1、实体完整性规则:是指若属性A是基本关系R的主属性,则A不能取空和相同(例如:A为父类,R为子类, A不能为空)

1、实体完整性规则的说明

1、是针对基本关系而言,一个基本表通常对应现实世界的一个实体集

2、现实世界中的实体是可区分的,即它们具有某种唯一性的表示

3、关系模型中以主码作为唯一性标识

4、主码中的属性即主属性不能取空值

2.3.2、参照完整性

1、关系间的引用

1、在关系模型中实体及实体间都是用关系描述的,存在着关系与关系间的引用

2、外码(Foreign Key)

1、 内容

image-20230816230855587

2、例子

image-20230816230955102

解释:S2中的专业号是主码,S1专业号不是主码,S1和S2连接靠专业号,所以S1 中的专业号是外码

3、例子

image-20230816231307798

3、说明

1、关系R和S不一定是不同的关系

2、目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上

3、外码不一定要与之相对应的主码同名

4、当外码与响应的主码属于不同关系时,往往取相同的名字,便于识别

4、参照完整性规则

1、内容

image-20230816231924945

2.3.3、用户定义的完整性

1、内容

1、针对某一具体关系数据库的约束条件,反映某一具体应用所设计的数据必须满足的语义要求

2、关系模型应提供定义和检验这类完整性的机制,以便用同一的系统的方法处理,而不要有程序承当这一功能

2.4、关系代数

2.4.1、介绍

1、关系代数是一种抽象的查询语句,是对关系(表)的运算来表达查询

2、关系代数的运算对象是关系,运算结果页是关系

3、按运算符可分为传统的集合运算、专门的关系运算

4、集合运算:从关系的水平方向,即行的角度进行

5、专门的关系运算:涉及行和列

6、内容

2.4.2、传统的集合运算

1、并(Union)

1、 关系R和S有相同的n(n个属性),属性都来自同一个域

2、R与S的并运算表示:RUS

3、结果:n目关系,由属于R或属于S的元组组成(把不相同的放在一起,相同的只留一个)

4、

image-20230818170212389

2、差(except)

1、1、 关系R和S有相同的n(n个属性),属性都来自同一个域

2、R与S的原酸表示:R-S

3、运算结果:n目关系,由属于R而不属于S的所有元组组成

4、例子

image-20230818170221284

3、交(intersection)

1、关系R和S有相同的n(n个属性),属性都来自同一个域

2、R与S的交运算表示:R ∩ S

3、运算结果:n目关系,既属于R又属于S的元组组成

4、笛卡尔积(Cartesian Product)

1、是广义的笛卡尔积

2、R:n目的关系(列),k1个元组(行)

3、S:m目关系(列),k2个元组

4、R与S的笛卡尔积运算表示:R X S

5、运算结果:行:k1*k2个元组;列:(m+n)列 元组的集合

6、其中元组的前n列是关系R的一个元组,后m列是关系S的一个元组

7、例子

image-20230818171703118

2.4.3、专门的关系运算

1、内容

1、关系运算包括

1、选择、投影、连接件、除运算

2、相关标记说明

1、内容

image-20230818172612818

2、例子

image-20230818172845822

3、选择(Selection)

1、内容

image-20230818192817295

2、条件表达式中的运算符

image-20230818192834405

3、例子

image-20230818193122297

2、投影(Projection)

1、从R中选择若干属性列组成新的关系

2、公式表达解释

image-20230818193504023

3、例子

image-20230818193636048

3、连接(Join)

1、又称为θ连接,表示从两个关系笛卡尔积中选取属性间满足一定条件的元组

2、公式

image-20230818194046459

3、运算结果:从R和S的广义笛卡尔积R*S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组

2、两类常用连接

1、等值连接

1、θ为“=”的连接运算称为等值连接

2、等值连接的含义:从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组

2、自然连接

1、是特殊的等值连接,两个连接中进行比较的分量必须是相同属性组,在结果中重复的属性列去掉

2、含义:R与S具有相同的属性组B

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

3、例子

1、例子1

image-20230818200216155

4、悬浮元组

1、两个关系R与S在自然连接时,关系R与S中被舍弃的元组称为悬浮元组

5、外连接

1、如果把悬浮元组舍弃的元组也保存在结果关系中,在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)

6、左外连接

1、如果只保留左外关系R中的悬浮元组叫做左外连接

7、右外连接

1、如果只保留右边关系S中的悬浮元组叫做有外连接

2、例子

image-20230818202030623

3、除运算

1、内容

1、关系R(X,y)和S(Y,Z),其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域

2、R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影

3、格式

image-20230822201201234

2、例子

image-20230822201848605

1、先找出R与S中不同的A,找到所有A的象集,再将A的象集和S中与R相同域的元素对比,如果象集包含所有的元素,就是除的结果

2、例子

image-20230822202649724

2.5、关系演算

1、是以数理逻辑中的谓词演算为基础,按谓词变元的不同,关系演算可以分为元组关系演算和域关系演算

2.5.1、元组关系演算语言ALPHA

1、元组关系演算以元组变量为谓词变元的基本对象,一种典型的元组关系演算语言是ALPHA

2、ALPHA语言主要有:

GET/PUT/HOLD/UPDATE/DELETE/DROP

1、语句的基本格式

1、格式:操作语句 工作空间名(表达式):操作条件

2、表达式:用于说明查询的结果,可以是关系名或(和)属性名

3、操作条件:一个逻辑表达式,说明查询结果要满足的条件,用于将操作结果限定在满足条件的元组中

4、还可以加上排序要求

2、检索操作(查询)

1、用GET语句

1、简单检索

1、不带条件的检索

2、例子

image-20230822204834172

2、限定的检索

1、带条件

3、带排序的检索

1、带条件,还有排序功能

2、DOWN表示降序

3、UP表示升序

4、例子

image-20230822210753608

4、指定返回元组的个数

1、就是指定返回几行

2、例子

image-20230822211148005

5、用元组变量的检索

1、就是给元组(行)取个名(sql中用AS)

2、作用:可以简化关系名

3、操作条件中使用量词时必须用元组变量,ALPHA语言用RANGE来说元组变量

4、例子

image-20230822212202124

6、用存在量词(existential quantifier)的检索条件中使用量词时必须用元组变量

1、存在量词

1、例子

image-20230822213447814

2、例子

image-20230822215538394

7、带多个关系的表达式检索

1、把题目中所需要的关系属性给连接起来(表与表连接起来),再进行判定关系

2、例子

image-20230822221039689

8、用全称量词(generality quantifier)的检索

1、例子

image-20230822221510351

9、用两种量词的检索

1、例子

image-20230822221544327

10、蕴含

1、根据理论P—>推出q,充分条件

2、例子:p:我来过北京,q:我来过中国

3、例子

image-20230822222709063

11、聚集函数

1、进行简单计算,关系数据库建立了运算的函数库,通常叫内置函数,聚集函数

2、包括:COUNT/TOTAL/MAX/MIN/AVG

3、功能

image-20230822222945626

3、更新操作

1、修改操作

1、使用UPDATE语句

2、步骤:

①首先用HOLD语句将修改的元组从数据库读入工作空间(HOLD有加锁功能)

②用宿主语句修改工作空间中元组的属性值

③最后用Update语句将修改后的元组送回数据库

3、注意:UPDATE语句,一定要yonHOLD语句锁定,避免其他管理员修改产生错误

2、修改操作说明

1、如果修改两个以上关系(表),就要执行两次HOLD-MOVE-UPDATE操作序列

2、在ALPHA语言中,修改关系的主码不允许修改

3、如果需要修改主码,必须先删除,然后重新插入主码

3、插入操作

1、用PUT语句实现

2、步骤

首先用宿主语言在工作空间中建立新元组
然后用 PUT 语句把该元组存入指定的关系中

3、PUT语句只对一个关系操作,表达式必须为单个关系名字

4、例子

image-20230822224459457

4、删除

1、使用DELETE语句

2、步骤

用HOLD语句把删除的元组从数据库读取到工作空间中
用DELETE语句删除该元组

3、例子

image-20230822224745571

4、例子

image-20230822225024628

2.5.2、元组关系演算

1、假设关系(基数)是无限的,再进行演算做适当调整,要保证演算中每个演算的公式必须有限

2、表达式

image-20230822230121512

其中t:是元组变量

1、原子公式有三类

1、R(t)

1、R是关系名

2、t是元组变量

3、意思:t是R中的元组

2、t[i]θu[j]

1、t和u是元组变量

2、θ是算术比较运算符,

3、t[i]θu[j]:表示断言

4、内容是:元组t的第i个分量与元组u的第j个分量满足比较关系θ

5、例子:t[2]<u[3] #其中t[2]表示第一行的第2个数据,u[3]表示的是u第一行的第三个数据

3、t[i]θc或cθt[i]

1、c是常量

2、内容是:t的第i个分量与常量c满足比较关系θ

2、自由元组变量/约束元组变量

1、自由元组变量

1、没有全称量词、或存在量词约束

2、约束元组变量

1、有全称量词或存在量词的约束

3、公式可以递归定义如下

1/2、内容

image-20230822231928895

2、与:1、2同时为真,才为真

3、或:1、2其中一个慰问真就是真,两个是假才是假

4、非:1为真、2就为假,反之一样

3、若φ是公式则∃t(∮)也是公式

1、∃:存在量词符号

2、∃t(∮)表示:若有一个t使∮为真,则∃t(∮)为真,否则为假

4、 公式

1、内容

image-20230822233418641

2、两个真才为真,一个假就是假

4、元组演算公式中,各种运算符的优先次序

1、内容

1、算术比较运算符最高

2、量词次之,且∃的优先级高于全称量词的优先级

3、逻辑运算符最低,且非的优先级高于∧(与)的优先级,∧(与)的优先级高于∨ (或)的优先级

4、加括号时,括号中的优先级,同一括号中,遵守①、②、③

2、注意

1、有限次第使用上述五条规则得到的公式是,元组公式,否则不是元组关系演算公式

3、关系代数运算—>关系表达式

1、关系代数运算可以用关系演算表达式来表示(相反也可以),下面用关系演算符表达式来表示五种基本运算

2、图示公式

image-20230823200306482

3、例子

image-20230823201209444

5、安全限制

1、内容

1、以上定义的关系演算允许无限关系,但是必须排除无意义的表达式

2、安全表达式:不生成无限关系的表达式,采取安全限制

3、安全限制:定义有限的集合,必须在在限定的范围内的查询数据

2.5.3、域关系演算语言QBE

1、内容

1、是另一种形式的域关系演算

2、1975年被踢出,1978年在IBM370上得以实现

3、基于屏幕表格的查询语句

4、QBE中用实例元素来查询结果可能的情况,示例元素实质上是域变量

2、QBE操作框架

1、图示

image-20230823204306955

3、查询操作

1、简单查询

1、操作步骤

image-20230823205121240

2、注意表格中有下划线的是一定要有该元素

3、没有下划线的表示条件

4、说明

①可以使用比较运算符

②其中=可以省略

2、条件查询

1、就是带比较运算符等条件

2、两个条件写一行,就是并的关系

3、两个条件写不同行,且查询条件不一样,就是或的关系

4、例子

image-20230823212512485

5、例子2

image-20230823213138285

①设计到两表连接

6、例子3

image-20230823214521047

①对一个表格中的属性取反,就用表非符号

3、聚合函数

1、提供一些包装好的函数供使用

2、内容

image-20230823214648251

3、例子

image-20230823215128451

4、对查询结果排序

1、升序

AO(i).
#i为优先级

2、降序

DO(i).
#i为优先级

3、例子

image-20230823220139916

4、更新操作

1、修改操作

1、格式

U.

2、主码不允许修改,要修改主码,和阿尔法语言一样

3、例子

image-20230823220552727

4、例子

image-20230823221627596

2、插入操作

1、格式

I.

2、新插入的元组必须有码值(主码必须有值)、其他属性值可以为空

3、例子

image-20230823221819462

3、删除操作

1、格式

D.

2、删除就是整条记录,或表格删除

3、如果单独删除一个属性,那要用update操作

4、相关对照的其他表也应该删除(例如学生退学了,住宿、课程、等表都应该删除),保证数据的完整性

5、例子

image-20230823222250485

第三章、关系数据库标准语言SQL

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇