数据库 2.关系模型

2. 关系模型

2.1 关系结构与约束

关系是使用最广泛的逻辑数据模型。

关系模型涉及:关系结构、关系操作、完整性约束。

关系数据库用一系列表来表达数据以及这些数据之间的联系

:每个列有个列首,也称属性或者字段。每个属性有一个允许值的集合,称为该属性的域或取值范围,即数据类型。

关系模式中要求

① 表中的每一列属性都是不能再分的基本原子属性

② 同一表中的每个列都被指定一个不同的名字

③ 同一表中各行相异,不允许出现完全相同的行

④ 同一表中行、列次序均无关紧要

关系:一系列域上的笛卡尔积的子集。

关系和表的区别:表中的每个列(属性)赋予了名称,而关系没有。

行:元组。

元组的数量:基数

属性的数量:度

关系键:

超键:能唯一标识出各个元组的属性集合(超键中可能包含无关紧要的属性)

候选键:能唯一标识出各个元组的属性集合,且这个属性集合的任何一个真子集都不能标识出各个元组。

主键:一个关系中可能有多个候选键,通常指定一个(且只一个)候选键用来标识元组,具有唯一性。

主属性:候选键中的属性

非主属性:不包含在任何候选键中的属性

外键:关系表 S 1 S_1 S1的一个属性子集 A A A,必须匹配关系表 S 2 S_2 S2,则称 A A A是关系表 S 1 S_1 S1的外键。其中 S 1 S_1 S1称为引用表, S 2 S_2 S2称为被引用表。

约束

数据库的值必须与现实世界保持一致才有意义。

  • 对属性取值范围的限定
  • 对属性值之间相互关系的限定

关系操作

关系代数是一门代数,关系代数包括一个运算集合,这些运算以一个或者两个关系作为运算数,产生一个新的关系作为结果

基本关系运算:投影、选择、集合并、集合差、笛卡尔积、更名 (每个关系都去重)
投影

投影运算用来从任意已知关系表 t t t中产生一个只有 t t t的部分列的新关系,投影运算用 π \pi π表示,希望在结果关系中出现的属性作为 π \pi π的下标,而作为参数关系跟随在 π \pi π后的括号中。

选择

给出满足给定谓词(条件)的元组,用希腊字母 σ \sigma σ表示,将条件写作下标,后面的括号中给出参数的关系,结果关系和原关系有着相同的模式。

集合并运算

t 1 t_1 t1 t 2 t_2 t2的并写作 t 1 ∪ t 2 t_1 ∪ t_2 t1t2,是在 t 1 t_1 t1 t 2 t_2 t2两者中的元组的集合。

  • 关系表 t 1 t_1 t1 t 2 t_2 t2必须是同元的,即它们所包含的属性个数必须相同
  • 对任意 j j j,关系表 t 1 t_1 t1的第 j j j个属性的域必须和关系表 t 2 t_2 t2的第 j j j个属性的域相同或相容。
集合差运算

t 1 t_1 t1 t 2 t_2 t2的差写作 t 1 − t 2 t_1-t_2 t1t2,表示在 t 1 t_1 t1中而不在 t 2 t_2 t2中的元组的集合。用 − - 表示的集合差运算是用来找出在一个关系中而不在另一个关系中的那些元组。

也只能在相容的关系间进行。

笛卡尔积运算

× \times ×表示的笛卡尔积运算可以将任意两个关系的信息组合在一起。

不能自己与自己做笛卡尔积。笛卡尔积是个二重循环的过程。

更名运算

为了有效管理由一个或多个关系经代数运算构造的结果关系的属性名,通常使用一个更名运算。

ρ x ( E ) \rho_{x}(E) ρx(E)表示将关系 E E E更名为 x x x

附加关系代数运算:集合交、自然联接运算、属性联接、条件联接、条件联接、除运算、赋值运算

集合交运算

t 1 ∩ t 2 t_1 ∩ t_2 t1t2表示既在关系表 t 1 t_1 t1中,又在关系表 t 2 t_2 t2中的元组组成。也只能在相容的关系间进行。

自然联接运算

∞ \infin 自然联接将选择运算和笛卡尔积运算合并成一个运算。

首先,形成它的两个参数的笛卡尔积。

然后,在笛卡尔积的结果上,基于两个参数的关系模式中,都出现的属性,两个关系模式的同名属性进行属性值相等的选择运算

最后,去除重复属性,及结果关系模式中相同的属性在联接结果中只保留一个。
t 1 ∞ t 2 = π S 1 ∪ s 2 ( σ t 1 . a 1 = t 2 . a 1 … t 1 . a n = t 2 . a n ( t 1 × t 2 ) ) t_1 \infin t_2 = \pi_{S_1 ∪ s_2}(\sigma_{t_1.a_1=t_2.a_1 \dots t_1.a_n=t_2.a_n}(t_1 \times t_2)) t1t2=πS1s2(σt1.a1=t2.a1t1.an=t2.an(t1×t2))
自然联接没有公共属性转化为笛卡尔积

属性联接

属性联接是在笛卡尔积的基础上选定指定同名列上取值相等的行,结果关系中这些同名列只出现一次

首先,计算笛卡尔积

然后,在笛卡尔积的结果上,基于两个参数的关系模式中都出现的属性,即属性联接运算指定的同名属性进行属性值相等的选择运算。

条件联接

也称 θ \theta θ联接,它把一个选择运算和一个笛卡尔积运算合并为单独的一个步骤:
t 1 ∞ θ t 2 = σ θ ( t 1 × t 2 ) t_1 \infin_{\theta}t_2=\sigma_{\theta}(t_1 \times t_2) t1θt2=σθ(t1×t2)

· 区别:

笛卡尔积、自然联接、属性联接、条件联接对得到结果的限制不同。

自然联接:计算笛卡尔积后按照所有同名属性进行选择运算;

属性联接:计算是对笛卡尔积后按照指定同名属性进行选择运算;

条件联接:计算是对笛卡尔积后按照满足特定条件的元组进行选择运算。没有规定的话不去除重复列

可以看出,自然联接在一般情况下的限制最大。

除运算

t 1 / t 2 = t 3 t_1 / t_2=t_3 t1/t2=t3即满足 t 3 t_3 t3中每个元组 t 2 t_2 t2中每个元组组成的新元组即 t 3 × t 2 t_3 \times t_2 t3×t2必在关系表 t 1 t_1 t1中。

赋值运算

用 <- 表示,通过给临时关系变量赋值,可以将关系代数表达式分开一部分一部分的写

扩展关系代数运算:

  • 允许将算术运算作为投影的一部分
  • 允许聚集运算,例如:计算和或平均值
  • 外联接运算,使得关系代数表达式可以对表示缺失信息的控制NULL进行处理
广义投影运算

允许在投影列表中使用算术表达式: π e e i d , a c h i e v e − 90 ( e e e x a m ) \pi_{eeid,achieve-90}(eeexam) πeeid,achieve90(eeexam)

外联接运算

处理悬浮元组

  • 左外联接( θ L \theta^L θL

  • 右外联接( θ R \theta^{R} θR

  • 全外联接( θ F \theta^F θF

外联接是在自然联接的基础之上加上额外的元组。

左外连接

首先计算出自然联接

然后,对于自然联接的左侧关系中任何一个与右侧关系中任何元组都不匹配的元组 r r r,向联接结果中假如一个元组 r r r r r r的构造如下:

元组 r r r从左侧关系得到的属性被赋为 r r r中的值, r r r中的其他属性被赋为空值。

与此相对,内联接不保留未匹配元组(悬浮元组)

聚集运算

sum, avg, count, max, min

聚集运算的一般形式:

b i b_i bi是用于分组的属性, f i f_i fi是聚集函数, a j a_j aj是属性名

满足:

  • 同一组中所有元组在 b 1 … b m b_1\dots b_m b1bm上的值相同
  • 不同组中元组在 b 1 … b m b_1 \dots b_m b1bm上的值不同

数据库修改

删除

删除是指将元组整个从数据库中去除,而不是删除某些属性上的值

t < − t − E t \quad <- \quad t-E t<tE 其中 t t t是关系, E E E是查询的关系代数表达式

插入

t < − t ∪ E t \quad <- \quad t ∪E t<tE 将新的元组增加到关系中

更新

修改关系中已有元组的部分属性的值。

习题:

对于关系的笛卡尔积运算,结果关系的模式是参与运算的两个关系的模式的串接。(对)

属性联接是在笛卡尔积的基础上选取满足给定条件的元组。(错) 条件联接

定义附加运算没有增加关系代数的表达能力。(对)不能增加,简化一些常用查询的表达

img

关系数据库系统的术语中,列是(属性、 字段 )。

如果两个关系没有公共属性,那么其自然联接操作(转化为笛卡尔积操作)。

更新

修改关系中已有元组的部分属性的值。

习题:

对于关系的笛卡尔积运算,结果关系的模式是参与运算的两个关系的模式的串接。(对)

属性联接是在笛卡尔积的基础上选取满足给定条件的元组。(错) 条件联接

定义附加运算没有增加关系代数的表达能力。(对)不能增加,简化一些常用查询的表达

[外链图片转存中…(img-heiAcNXO-1641801384791)]

关系数据库系统的术语中,列是(属性、 字段 )。

如果两个关系没有公共属性,那么其自然联接操作(转化为笛卡尔积操作)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值