数据库第二章——关系数据库

关系数据库——关系模型

一、关系的定义

  1. :(x轴、y轴)域是一组具有相同数据类型的值的集合,例如整数,实数,指定长度的字符串集合,{‘男’,‘女’}…

  2. 笛卡尔积:(坐标平面)给定一组域 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn,允许其中某些域是相同的,那么他们的乘积(所有域的所有取值的组合)就是笛卡尔积。
    比如 D 1 , D 2 , D 3 D_1,D_2,D_3 D1,D2,D3三个域内分别有2,3,4个元素,那么笛卡尔积 D 1 x D 2 x D 3 D_1 x D_2xD_3 D1xD2xD3的元素就有2x3x4=24个,这时,称笛卡尔积里的每一个元素为“元组”,通常用t表示,元组的数量为“基数”。

  3. 关系 D 1 × D 2 × . . . × D n D_1 \times D_2\times ...\times D_n D1×D2×...×Dn的子集叫做在域 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn上的关系,表示为: R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) RD1,D2,...,Dn),其中,称R为关系名,n为关系的或者。如果n=1,称该关系为单元关系一元关系。如果n=2,称该关系为二元关系

  4. 属性:n个目也就是n个列的名字称为“属性”。(但是不是n个域就是n个属性)

  • 关系的表示是一个二维表,每行对应一个元组,每列对应一个域,列名就是一个“属性”,表名就是一个模式。
  1. 候选码(标识唯一性的号码):若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。

  2. 基本关系的性质:

    • 列是同质的
    • 不同的列可以出自同一个域(其中的每一列称为一个属性,不同的属性要给与不同的属性名)
    • 列的顺序无所谓,行的顺序也是无所谓的
    • 任意两个元组的候选码不能相同
    • 分量必须取原子值(不能存在表中表,若这是一个表中表,就不是一个关系,要把表中表改成合格的二维表)

二、基本的关系操作

常用的关系操作:

  • 查询操作:选择、投影、连接、除、并、差、交、笛卡尔积(选择、投影、并、差、笛卡尔积是五种基本操作
  • 数据更新:插入、删除、修改

关系操作的特点:关系就是元组的集合,所以关系操作的对象和结果都是集合。

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

关系代数语言:用对关系的运算来表达查询要求,如ISBL
关系演算语言:用谓词来表达查询要求,包括元组关系演算语言和域关系演算语言,如APLHA,QBE

具有关系代数和关系演算双重特点的语言:如SQL

四、关系模型中的完整性

  1. 实体完整性
  • 关系的主码(所有候选码里任意取一种即可,能作为标识的属性)中的属性值不能为空值(不知道或无意义的值,不是“零值”,控制用“?”表示,有空值的时候需要特殊处理)
  • 意义:关系中的元组是可区分的各题,这些个体是通过主码来唯一标识的,主码为空,则出现不可标识的个体,这是不容许的。
  1. 参照完整性
    参照完整性就是指:如果F是关系R1的外码,参照的是关系R2的主码,那么F的值必须是R2的主码其中的值(也可以为空值,但是若其填入信息,也必须是R2主码其中的值)

    外码/外键:关系R中的一个属性组,他不是R的候选码,但他与另一个关系S的候选码相对应,则称这个属性组为R的外码/外键。两个关系通常就是靠外码连接起来的。两个表也可以合二为一,这时外码连接的就是两个属性,如下。
    在这里插入图片描述
    设F是基本关系R的外码,其与基本关系S的主码Ks相对应,则称基本关系R为 “参照关系” ,基本关系S称为 “被参照关系”“目标关系”

  2. 用户自定义完整性
    即用户针对具体的应用环境定义的完整性约束。比如年龄只能在[12,35]之间,性别只能是男、女。

  • DBMS对关系完整性的支持
    首先,实体完整性和参照完整性都是有DBMS系统自动支持。其次,DBMS会支持用户自定义完整性,同时会通过以上完整性对用户的录入等操作进行约束(相当于完整性就是一种数据库系统里的约束规则)

五、关系代数概述

  • 集合操作:并、交、差、笛卡尔积
    纯关系操作:投影、选择、连接、除

  • 并差交操作的前提条件:需要两个关系满足并相容性
    即参与运算的两个关系及相关熟悉之间有一定的对应性、可比性、意义关联性。要求:①两个关系的属性数目相同,②对应的属性的域必须相同。
    在这里插入图片描述

五个基本操作

1. 并(Union)

将两个关系的元组合并成一个关系,在合并时去掉重复的元组。

数学描述 R ⋃ S = S ⋃ R = { t ∣ t ∈ R ⋁ t ∈ S } R\bigcup S=S\bigcup R=\{t | t \in R \bigvee t \in S\} RS=SR={ttRtS}

文字描述:R(选了音乐课的同学),S(选了美术课的学生), R ⋃ S R\bigcup S RS(选了音乐课或者美术课的学生)

2. 差(Difference)

用两个关系的元组形成一个关系,剔除掉关系中的属于另一个关系的元组。

数学描述 R − S = { t ∣ t ∈ R ⋁ t ∉ S } R - S=\{t | t \in R \bigvee t \notin S\} RS={ttRt/S}

文字描述:R(选了音乐课的同学),S(选了美术课的学生), R ⋃ S R\bigcup S RS(选了音乐课但是没有选美术课的学生)

3. 笛卡尔积

将两个关系的元组排列组合成一个关系,在合并时有序地组合所有元组。
如下例,可以看到,若R的度为m,基数为x,S的度为n,计数为y,则做运算之后的新关系 K = R × S = S × R K=R \times S=S \times R K=R×S=S×R的度为m+n,基数为x*y。
在这里插入图片描述

4. 选择(Select)

用给定的一个条件(condition)在关系中挑选出满足条件的元组构成新的关系。

数学描述 σ c o n ( R ) = { t ∣ t ∈ R ⋁ c o n ( t ) = ′ 真 ′ } \sigma_{con}(R)=\{t | t \in R \bigvee con(t)='真'\} σcon(R)={ttRcon(t)=}

文字描述:R(选了音乐课的同学),con(是女生), σ c o n ( R ) \sigma_{con}(R) σcon(R)(选了音乐课的女生)

关于关系表示

  • 条件con通常有逻辑运算符连接比较表达式组成,比如“name=“小明” and age < 18”
    在这里插入图片描述
  • 符号的顺序是有优先级的,最好要加括号进行表示
5. 投影(Project)

用给定的一个条件(condition)在关系中挑选出某些列(某些属性)构成新的关系。

数学描述 ∏ A j 1 , A j 2 , . . . , A j k = { < t [ A j 1 ] , t [ A j 2 ] , . . . , t [ A j k ] > ∣ t ∈ R } \prod_{A_j1,A_j2,...,A_jk}=\{<t[A_j1],t[A_j2],...,t[A_jk]> | t \in R\} Aj1,Aj2,...,Ajk={<t[Aj1],t[Aj2],...,t[Ajk]>tR}

文字描述:R(选了音乐课的同学), A 1 A_1 A1(姓名), A 2 A_2 A2(年龄), ∏ A 1 , A 2 \prod_{A_1,A_2} A1,A2(选了音乐课的同学的姓名和年龄)

扩展操作

1. 交(Intersection)

挑选出在两个关系中同时出现的元组,构成一个新的关系。
数学描述 R ⋂ S = S ⋂ R = { t ∣ t ∈ R ⋀ t ∈ S } R\bigcap S=S\bigcap R=\{t | t \in R \bigwedge t \in S\} RS=SR={ttRtS}
文字描述:R(选了音乐课的同学),S(选了美术课的学生), R ⋃ S R\bigcup S RS(既选了音乐课也选了美术课的学生)
与基本运算的关系 R ⋂ S = S ⋂ R = R − ( R − S ) = S − ( S − R ) R\bigcap S=S\bigcap R=R - (R - S) =S - (S - R) RS=SR=R(RS)=S(SR)

2. θ − \theta- θ连接( θ − \theta- θJoin)

挑选出多个关系中所有满足条件的元组,构成一个新的关系。即先用笛卡尔积操作,把多个关系组合到一起,然后再用条件进行选择操作。

数学描述及与基本运算的关系:在R和S的笛卡尔积中,选取R中属性A与S中属性B同时满足 θ \theta θ条件的元组( θ \theta θ是比较运算符)
在这里插入图片描述

示例
在这里插入图片描述
在这里插入图片描述

3. 等值连接(Equal-Join)

这是 θ − \theta- θ连接的特殊情况,即当 θ − \theta- θ为“=”符号时。

数学描述及与基本运算的关系
在这里插入图片描述
示例
在这里插入图片描述
在这里插入图片描述

4. 自然连接(Natural-Join)

这是等值连接的特殊情况,即当两个关系中的属性相同时。

  • 连接的智能性:可以看到,笛卡尔积对于相同的属性并不会进行合并,但是连接中很自然地进行了合并。
    在这里插入图片描述
    数学描述及与基本运算的关系:可以看到这里符号里是没有条件的,这就是“自然连接”的内涵,即会自动检测相同的属性进行连接
    在这里插入图片描述
    示例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
5.除法

象集
给定一个关系R(X,Y),X和Y为属性组,X的某个值为x,记为 [ X ] = x [X]=x [X]=x,这些X的值为x的元组对应的Y的值的集合就称为“x在R中的象集”,记为 Y x Y_x Yx
在这里插入图片描述
给定两个关系R(X,Y)和S(Y,Z),则除法的定义为:
首先观察到两个关系同时有Y这个属性组,因此以Y为标准,先取S里属性Y的投影,得到一个集合,R÷S,就是寻找R里面有几个象集包含这个投影的X的值。

例:
在这里插入图片描述
求:既选了数据库又选了信息论课程的同学的学号——
先创建集合如下(只截取了Y这个属性组的投影)
在这里插入图片描述
然后用R÷S——

1的象集为{数据库,信息论}
2的象集为{操作系统,数据库,信息论}
3的象集为{信息论}

因此,只有1和2的象集是包含S中Y的集合的,因此R÷S={1,2},即得到既选了数据库又选了信息论课程的同学的学号是1和2

或者用一种定义的方式进行定义
上面的列表可以看做:(即X的元素与Y元素的笛卡尔积的并集)
在这里插入图片描述
再定义:(即一个笛卡尔积除以S,若S在Y中,返回X的值x,否则返回空,这就是判断S是不是在x元素的象集中)
在这里插入图片描述
因此:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值