数据库基础:关系模型

关系模型

1.关系结构

1.1关系的定义

笼统来说关系就是一个表,如何严格定义一个关系呢?

:一组值的集合,这组值具有相同的数据类型。

​ 如整数集合,字符串集合,8位数字组成的数字串集合,学生集合…


笛卡尔积:一组域 D 1 , D 2 , ⋯   , D n D_1, D_2, \cdots,D_n D1,D2,,Dn的笛卡尔积为: D 1 × D 2 × ⋯ × D n = { ( d 1 , d 2 , ⋯   , d n ) ∣ d i ∈ D i } D_1 \times D_2\times \cdots\times D_n=\{(d_1, d_2, \cdots,d_n)|d_i \in D_i \} D1×D2××Dn={(d1,d2,,dn)diDi}

​ 笛卡尔积的每个元素 ( d 1 , d 2 , . . . , d n ) (d_1,d_2,...,d_n) (d1,d2,...,dn)称为一个n元组

∣ D 1 × D 2 × ⋯ × D n ∣ = ∣ D 1 ∣ × ∣ D 2 ∣ × ⋯ × ∣ D n ∣ |D_1\times D_2\times \cdots\times D_n|=|D_1|\times |D_2|\times \cdots\times |D_n| D1×D2××Dn=D1×D2××Dn


关系:一组域 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn笛卡尔积的子集

​ 笛卡尔积中具有某一方面意义的那些元祖被称为一个关系

​ 关系的不同列可能来自同一个域,为了区分,要为每一个列取一个名字,该名字称为属性名

​ 关系可以用 R ( A 1 : D 1 , A 2 : D 2 , . . . , A n : D n ) R(A_1:D_1,A_2:D_2,...,A_n:D_n) R(A1:D1,A2:D2,...,An:Dn)来描述,简记为 R ( A 1 , A 2 , . . . , A n ) R(A_1,A_2,...,A_n) R(A1,A2,...,An)这种描述称为关系模式(schema) R R R是关系名, A i A_i Ai是属性名, D i D_i Di是属性对应的域


关系模式与关系:同一关系模式下,可有很多的关系

​ 关系模式是关系的结构,关系是关系模式在某一时刻的数据

​ 关系模式是稳定的,而关系是某一时刻的值是随时间变化的


关系的特性:属性不可再分(第一范式)

​ 列是同质的(数据类型相同)


候选码:关系中的一个属性组,其值能唯一标识一个元组,并且从该属性组中去掉任何一个属性就不再具有此性质。包含在候选码中的任何一个属性成为主属性,其他属性称为非主属性。


主码:当有多个候选码时,可以选定一个作为主码


外码:关系R中的一个属性组,他不是R中的候选码,但它与另一个关系S的主码相对应,则这个属性组称为外码。



1.2表

关系是数学概念上严格定义的概念,表是实际的数据库管理系统对关系概念的具体实现。理论上,关系的任意两个元祖不能完全相同(集合的要求);显示应用中,表可能并不完全遵守此特性


关系与表对应的概念

关系:关系模式;属性与属性值;元组

表 :表、标题;列名与列值 ;行/记录



2.关系运算

关系代数运算的特点:关系代数的运算是基于集合的,提供了一系列的关系代数操作,包括,笛卡尔积(广义积)选择投影更名等基本操作;另外还有连接关系除等扩展操作。


并相容性

定义:关系R和关系S存在相容性,当且仅当:关系R和关系S的属性数目必须相同,并且对于任意i,关系R的第i个属性的域和关系S的第i个属性的域相同


并操作

定义:假设关系R和关系S是并相容的,关系R与关系S的并运算的结果也是一个关系,记作: R ∪ S R \cup S RS,它由或者出现在R中或者出现在S中的元组构成的。数学描述: R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R \cup S = \{t|t \in R \vee t\in S \} RS={ttRtS},其中t是元组。

注意:如果两个关系存在值相同的元组,并操只会保留一个相同值的元组


差操作:假设关系R和关系S是并相容的,关系R与关系S的差运算的结果也是一个关系,记作: R − S R-S RS,它是由出现在R中,但是不出现在S中的元组构成的。数学描述: R − S = { t ∣ t ∈ R ∧ t ∉ S } R-S=\{t|t \in R \wedge t \notin S\} RS={ttRt/S},其中t是元组。

注意:R-S与S-R是不同的


笛卡尔积:关系 R < a 1 , a 2 , . . . , a n > R<a_1,a_2,...,a_n> R<a1,a2,...,an>与关系 S < b 1 , b 2 , . . . , b m > S<b_1,b_2,...,b_m> S<b1,b2,...,bm>的广义笛卡尔积运算结果也是一个关系,记作: R × S R \times S R×S,它由关系R中的元组与关系S中的元组进行所有可能的拼接构成

数学描述 R × S = { < a 1 , a 2 , . . . , a n , b 1 , b 2 , . . . , b m > ∣ < a 1 , a 2 , . . . , a n > ∈ R ∧ < b 1 , b 2 , . . . , b m > ∈ S } R \times S = \{<a_1,a_2,...,a_n,b_1,b_2,...,b_m>|<a_1,a_2,...,a_n> \in R \wedge <b_1,b_2,...,b_m> \in S \} R×S={<a1,a2,...,an,b1,b2,...,bm><a1,a2,...,an>R<b1,b2,...,bm>S}

注意: R × S = S × R R \times S = S \times R R×S=S×R,若R中有n个属性,S中有m个属性,则 R × S R \times S R×Sn+m个属性,若R有x个元组,S有y个元组,则 R × S R\times S R×S有x*y个元组


选择:给定一个关系R,同时给定一个选择条件condition(简记为:con),选择运算结果也是一个关系。记作: σ c o n ( R ) \sigma_{con}(R) σcon(R),它从关系R中选择满足给定条件的元组构成。数学描述: σ c o n ( R ) = { t ∣ t ∈ R ∧ c o n ( t ) = t r u e } \sigma_{con}(R)=\{t|t\in R \wedge con(t) = true\} σcon(R)={ttRcon(t)=true}


投影:给定一个关系R,投影运算结果也是一个关系,记作 ∏ A ( R ) \prod_A(R) A(R),它从R中选出属性包含在A中的列构成。

数学描述: ∏ A i 1 , A i 2 , . . . , A i k ( R ) = { < t [ A i 1 ] , t [ A i 2 ] , . . . , t [ A i k ] > ∣ t ∈ R } \prod_{A_{i1},A_{i2},...,A_{ik}(R)}=\{<t[A_{i1}],t[A_{i2}],...,t[A_{ik}]>|t\in R\} Ai1,Ai2,...,Aik(R)={<t[Ai1],t[Ai2],...,t[Aik]>tR},其中 t [ A i ] t[A_{i}] t[Ai]表示元组t中相应于属性Ai的分量,投影后,列按照列选择顺序重新排列


交(intersection):假设关系R和关系S是并相容的,关系R与关系S的交运算的结果也是一个关系,记作: R ∩ S R\cap S RS,它由同时出现在关系R和关系S中的元组组成。

数学描述: R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R \cap S=\{t|t\in R \wedge t\in S\} RS={ttRtS},其中t是元组

交也可以通过差运算实现: R ∩ S = R − ( R − S ) = S − ( S − R ) R\cap S=R-(R-S)=S-(S-R) RS=R(RS)=S(SR)


θ \theta θ连接:给定关系R和关系S,R和S的 θ \theta θ连接结果也是一个关系,记作: R ⋈ A θ B S R \Join_{A \theta B} S RAθBS

它由R和S的笛卡尔积中选取R中属性A与S中属性B之间满足 θ \theta θ条件的元组构成

数学描述: R ⋈ A θ B S = σ t [ A ] = t [ B ] ( R × S ) R \Join_{A \theta B} S=\sigma_{t[A]=t[B]}(R \times S) RAθBS=σt[A]=t[B](R×S),其中 θ \theta θ是比较运算符, θ ∈ { > , ≥ , < , ≤ , = , ≠ } \theta \in \{>, \geq,<,\leq,=,\neq\} θ{>,,<,,=,=},当 θ \theta θ中的符号为"="号时,就是等值连接,等值连接是 θ \theta θ连接的一个特例


自然连接,自然连接是一种特殊的等值连接,所以 θ \theta θ“=”号,并且,属性A和属性B是相同的属性(属性名相同),所以自然连接就是关系R和关系S的笛卡尔积中选取相同属性组上值相等的元组构成

注意自然连接会去掉重复的属性列


关系代数扩展操作

除(division):除法运算使用的场景大多数为,“查询...全部的/所有的...”,问题。

除法运算的前提:给定关系 R ( A 1 , A 2 , . . . , A n ) R(A_1,A_2,...,A_n) R(A1A2,...,An)为n度关系,关系 S ( B 1 , B 2 , . . . , B m ) S(B_1,B_2,...,B_m) S(B1,B2,...,Bm)为m度关系。如果可以进行关系R与关系S的除运算,当且仅当:属性集 S ( B 1 , B 2 , . . . , B m ) S(B_1,B_2,...,B_m) S(B1,B2,...,Bm)为关系 R ( A 1 , A 2 , . . . , A n ) R(A_1,A_2,...,A_n) R(A1,A2,...,An)真子集,即m<n

定义:关系R与关系S的除运算也是一个关系,记作: R ÷ S R \div S R÷S,分两部分定义。

  • R ÷ S R \div S R÷S属性集 { C 1 , C 2 , . . . , C k } = { A 1 , A 2 , . . . , A n } − { B 1 , B 2 , . . . , B m } \{C_1,C_2,...,C_k\}=\{A_1,A_2,...,A_n\}-\{B_1,B_2,...,B_m\} {C1,C2,...,Ck}={A1,A2,...,An}{B1,B2,...,Bm}
  • 假设 R ÷ S R \div S R÷S的结果为元组 < c 1 , . . , c k > <c_1,..,c_k> <c1,..,ck>的集合,元组 < c 1 , . . , c k > <c_1,..,c_k> <c1,..,ck>满足以下条件,它与S中的每一个元组 < b 1 , . . . , b m > <b_1,...,b_m> <b1,...,bm>组合形成的一个新元组都是R中的某一个元组 < a 1 , . . . , a n > <a_1,...,a_n> <a1,...,an>,其中 a n , b m , c k a_n,b_m,c_k an,bm,ck分别是属性 A n , B m , C k A_n,B_m,C_k An,Bm,Ck的值。数学描述: R ÷ S = { t ∣ t ∈ ∏ R − S ( R ) ∧ ∀ u ∈ S ( t u ∈ R ) } R \div S = \{t|t\in \prod_{R-S}(R)\wedge \forall u\in S(tu\in R)\} R÷S={ttRS(R)uS(tuR)},其中 t u tu tu是元组的组合

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


外连接:定义:两个关系R与S进行连接时,如果关系R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(或R)中假定存在的全为空值的元组形成连接,放置在结果关系中,这种连接称之为外连接(Outer Join)。

左外连接 = 自然连接(或 θ \theta θ连接)+左侧表中失配的元组

右外连接 = 自然连接(或 θ \theta θ连接)+ 右侧表中失配的元组

全外连接 = 自然连接(或 θ \theta θ连接)+ 两侧表中失配的元组


左外连接

在这里插入图片描述


右外连接

在这里插入图片描述


全外连接

在这里插入图片描述

3.完整性约束


3.1实体完整性

关系的主码的属性值不能为空值;空值,不知道或者无意义的值

含义:关系中的元组对应显示世界中的一个个具体的个体,如果主码为空,则无法表示一个元组,也就无法表示现实世界中的个体,这是不允许的。


3.2参照完整性

如果关系R的外码Fk与关系S的主码Pk对应,则外码Fk或者为空,或者其值在关系S的主码中存在

含义:如果外码为空,可以表示该元祖在关系S中的含义还没确定,所以是允许的;而如果外码Fk的值是关系S中主码Pk中不存在的,则说明该元组参照了一个不存在的元组,是不允许的


3.3用户自定义完整性

用户针对具体的应用环境定义的完整性约束条件。

例如:属性学号S#要求是10位整数,前4位代表年份。

DBMS自动支持实体完整性和参照完整性。同样DBMS运行用户自行定义有关的完整性约束条件,当有更新操作发生时,DBMS自行检查更新操作是否合法(符合用户自定义完整性)。

参考:数据库系统(上):模型与语言 战德臣 、张丽杰 、史建焘 、周丽娜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值