
本文共 6264 字,大约阅读时间需要 20 分钟。
文章目录
2.1 关系数据结构
2.2 关系操作
2.3 完整性约束
2.4 关系代数
2.1 关系数据结构及形式化定义
2.1.1 关系——关系模型的数据结构——值
域
域(domain):一组具有相同数据类型的值的集合。
例如:自然数(N)、整数(Z)、实数(R)、{男,女}等一系列值的集合。
笛卡尔积
笛卡尔积(cartesian product):域上的一种集合运算。
给定一组域D1,D2,…,Dn,允许其中某些域是相同的,D1,D2,…,Dn的笛卡尔积为:
D 1 × D 2 × . . . × D n = { ( d 1 , d 2 , . . . , d n ) ∣ d i ∈ D i , i = 1 , 2 , . . . , n } D~1~\times D~2~ \times ...\times D~n~=\left \{(d~1~,d~2~,...,d~n~)|d~i~\in D~i~,i=1,2,...,n \right \} D 1 ×D 2 ×...×D n ={ (d 1 ,d 2 ,...,d n )∣d i ∈D i ,i=1,2,...,n}
- 每一个元素(d1,d2,…,dn)——n元组(元组)
- 元组的每一个值di——分量
- 一个域允许的不同取值个数——域的基数
- 若Di(i=1,2,…,n)为有限集,对应的基数mii=1,2,…,n),则 D 1 × D 2 × . . . × D n D~1~\times D~2~ \times ...\times D~n~ D 1 ×D 2 ×...×D n 的基数为:
M = ∏ i = 1 n m i M=\prod_{i=1}^{n}m~i~ M=i=1∏nm i ——笛卡尔积的基数
关系——关系模型的数据结构——型
关系(relation): D 1 × D 2 × . . . × D n D~1~\times D~2~ \times ...\times D~n~ D 1 ×D 2 ×...×D n 的子集叫做域D1,D2,…,Dn的关系。
- 一般来说,D1,D2,…,Dn的笛卡尔积是没有实际语义的,但是它的某个真子集(某组关系)才有实际意义。
- 表示为R(D1,D2,…,Dn)。
- n=1,单元关系;n=2;二元关系。
- 关系是笛卡尔积的有限子集,关系也是一张二维表。
- 表的每一行对应一个元组,每一列对应一个域。
“码”的概念
候选码(candidate key):某一属性组的值能唯一标识一个元组,而其子集不能,则称该属性组为候选码
。
主码(primary key):一个关系有多个候选码,其中任意一个。
主属性(prime attribute):候选码的诸属性。
非主属性/码属性(non-prime attribute/non-key attribute):不包含在任何候选码中的属性。
全码(all-key):候选码的属性个数 ≥ \ge ≥元组属性个数。
候选码属性个数=1 最简单情况
候选码属性个数=n=元组属性个数 此时候选码–>全码
关系的三种类型
关系类型 | 解释 |
---|---|
基本关系(基本表或基表) | 实际存在的表,实际存储数据的逻辑表示 |
查询表 | 查询结果对应的表 |
视图表 | 基本表或其他视图表导出的表,是虚表,不对应实际存储的数据 |
基本关系的6条性质
- 列是同质的。
意味着每一列的数据来源于同一个域。
- 不同的列可出自同一个域.
为了区别属性,不同的属性(来自同一个域)要给予不同的属性名。
- 列的顺序无所谓,即列的次序可以任意交换。
- 任意两个元组的候选码不能取相同的组。
候选码的功能:唯一地标识一个元组。
- 行的顺序无所谓,即行的次序可以任意交换。
- 每一个分量必须是不可分割的数据项。
2.1.2 关系模式
关系模式——型——对一个关系的描述——数据的描述
关系——值——元组的集合——数据本身
关系模式(relation schema):R(U,D,DOM,F)。
- 关系名——R
- 属性名集合——U
- 属性来自的域——D
- 属性向域的映像关系——DOM
- 属性间数据的依赖关系的集合——F
关系模式一般简记为R(U)=R(A1,A2,…,,An)
关系模式和关系的联系
对象 | 本身性质 | 状态 | 二者联系 |
---|---|---|---|
关系 | 笛卡尔积的子集-元组的集合 | 动态的,随时间不断变化的 | 关系是关系模式在某一时刻的状态和内容 |
关系模式 | 对关系数据的提炼和描述 | 静态的,稳定的 | 在关系模式下的关系被有机地组织在一起 |
2.1.3 关系数据库
关系数据库的型——关系数据库模式(对关系数据库的描述)
关系数据库的值——关系数据库(关系模式在某一时刻的关系的集合)
2.1.4 关系模型的存储结构
2.2 关系操作
关系模式给出了关系操作的能力的说明,没有对关系数据库管理系统语言给出具体的语法要求。而关系操作是不同关系数据库管理系统应该定义和开发来实现的。
2.2.1 基本的关系操作
查询(query):关系操作中最主要的部分。
查询包括:
选择(select)
、投影(project)
、连接(join)、除(divide)、并(union)
、差(except)
、交(intersection)、笛卡尔积
。红色为基本的5中操作,其他的可以有这五种操作导出。
插入(insert)
删除(delete)
修改(update)
2.2.2 关系数据语言的分类
2.3 关系的完整性
关系模型的完整性规则:对关系的某种约束太偶见。
关系的值随着时间变化时应该满足一些约束条件,是对现实世界的要求
2.3.1 实体完整性
实体完整性规则:若属性A 是基本关系R 的主属性,则属性A不能取空值。
R(Ai)(i=1,2,…,n)!= ⊘ \oslash ⊘
(1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
(2) 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3) 关系模型中以主码作为唯一性标识。
(4) 主码中的属性即主属性不能取空值。
2.3.2 参照完整性
关系间的引用
三个例子:
例1:学生实体、专业实体:
学生(学号,姓名,性别,专业号
,年龄)
专业(专业号
,专业名)
学生关系引用了专业关系的主码“专业号”。
例2:学生、课程、学生与课程之间的多对多联系
学生(学号
,姓名,性别,专业号,年龄)
课程(课程号
,课程名,学分)
选修(学号
,课程号
,成绩)
选修关系引用了学生关系的主码“学号”和课程关系的主码“课程号”。
例3:学生实体及其内部的一对多联系
学生(学号
,姓名,性别,专业号,年龄,班长
)
学生关系引用了自身的主码“学号”作为“班长”属性
外码
外码(foreign key):设F是基本关系R 的一个或一组属性,但不是关系R 的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R 的外码。
- R——参照关系(Referencing Relation)。
- S——被参照关系(Referenced Relation)或目标关系(Target Relation)。
- R和S可能相同(例3),也可能不同(例4)。
- 目标关系S的主码Ks 和参照关系R的外码F必须定义在同一个(或一组)域上。
- 外码并不一定要与相应的主码同名。
参照完整性规则
参照完整性规则:若属性(或属性组)F是基本关系R 的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
- 取空值(F 的每个属性值均为空值)
- 等于S 中某个元组的主码值
R(F)==S(Ks),F取值限定为空或S(Ksi)
2.3.3 用户定义的完整性
用户定义的完整性:用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
2.4 关系代数
关系代数:抽象的查询,用对关系的运算表示查询。
2.4.1 传统的集合运算
含义 | 传统集合运算符 |
---|---|
并 | ∪ \cup ∪ |
差 | − - − |
交 | ∩ \cap ∩ |
笛卡尔积 | × \times × |
并
并(union): R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R\cup S=\left \{ t\mid t\in R\vee t\in S\right \} R∪S={ t∣t∈R∨t∈S}
差
差(except): R − S = { t ∣ t ∈ R ∧ t ∉ S } R-S =\left \{ t\mid t\in R\wedge t\notin S\right \} R−S={ t∣t∈R∧t∈/S}
交
交(intersection): R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R\cap S=\left \{ t\mid t\in R\wedge t\in S\right \} R∩S={ t∣t∈R∧t∈S}
笛卡尔积
笛卡尔积(cartesian product): R × S = { t r ⌢ t s ∣ t r ∈ R ∧ t s ∈ S } R\times S=\left \{ t~r~\stackrel\frown{} t~s~\mid t~r~\in R\wedge t~s~\in S\right \} R×S={ t r ⌢t s ∣t r ∈R∧t s ∈S}
2.4.2 专门的关系运算
运算符介绍
- t[Ai]
设关系模式为R(A1,A2,…,An)。设某一个关系为R, t ∈ R t\in R t∈R表示t是R的一个元组。
t[Ai] 则表示元组t 中相应于属性Ai 的一个分量
。
- A={Ai1,Ai2,…,Aik}和t[A] =(t[Ai 1],t[Ai 2],…,t[Ai k]) 和 A ˉ \bar{A} Aˉ
A={Ai1,Ai2,…,Aik},Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A={Ai1,Ai2,…,Aik}称为
属性列或域列
。
t[A] =(t[Ai 1],t[Ai 2],…,t[Ai k]) 表示元组t在属性列A上诸分量合
。
A ˉ \bar{A} Aˉ则表示元组t在属性A{ A1,A2,…,An}中去掉 {Ai1,Ai2,…,Aik}后剩余的属性组
。
- t r ⌢ t s t_{r} \stackrel\frown{} t_{s} tr⌢ts
R 为n目关系,S为m目关系。
t r ∈ R t~r~\in R t r ∈R, t s ∈ S t ~s~\in S t s ∈S, t r ⌢ t s t_{r} \stackrel\frown{} t_{s} tr⌢ts称为元组的连接。
它是一个n+m列的元组前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
- 象集Zx
给定一个关系R(X,Z),X 和Z 为属性组。
当t [X ]=x 时,x 在R 中的象集(Images Set)为: Z X = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z _{X} ~=\left \{ t\left [ Z \right ] \mid t\in R ,t\left [ X \right ]= x \right \} ZX ={ t[Z]∣t∈R,t[X]=x}。
它表示R中属性组X上值为x 的诸元组在Z上分量的集合。
选择
选择(select): σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ′ 真 ′ } \sigma _{F} \left ( R \right ) =\left \{ t\mid t\in R\wedge F\left ( t \right )='真' \right \} σF(R)={ t∣t∈R∧F(t)=′真′}
F——选择条件—— X 1 Θ X 2 X~1~\Theta X~2~ X 1 ΘX 2
Θ \Theta Θ={ > > > ≥ \ge ≥ < < < ≤ \le ≤ = = = < > <> <> ¬ \neg ¬ ∧ \wedge ∧ ∨ \vee ∨ }
选择是基于行进行操作的,选出的也是行的部分。
投影
投影(projection): ∏ A ( R ) = { t [ A ] ∣ t ∈ R } {\textstyle \prod_{A}^{}} (R)=\left \{ t[A]|t\in R \right \} ∏A(R)={ t[A]∣t∈R}
A——属性列
投影可能会取消重复的元组。
选择是基于列进行操作的,选出的也是列的部分。
连接
连接(join): R ⋈ S = { t r t s ⌢ ∣ t r ∈ R ∧ t s ∈ S ∧ t r [ A ] θ t s [ B ] } R\Join S=\left \{ \stackrel\frown{t_{r} t_{s} } |t_{r}\in R\wedge t_{s}\in S\wedge t_{r}\left [ A\right ] \theta t_{s}\left [ B\right ]\right \} R⋈S={ trts⌢∣tr∈R∧ts∈S∧tr[A]θts[B]}
A,B——R,S列数相等的且可比的属性组
θ \theta θ——比较运算符
连接是从R × \times ×S中选出满足R.A θ \theta θR.B元组
连接是基于行列进行操作的,选出的是一组二维表。
- 等值连接
- 自然连接(一种特殊的等值连接)
悬浮元组:参与连接操作时被舍弃的元组。
左外连接:保存左边关系R的悬浮元组,其他属性填上NULL值
右外连接:保留右边关系S的悬浮元组,其他属性填上NULL值。
除运算
象集(images set):给定一个关系R(X,Z),X 和Z 为属性组。当t [X ]=x 时,x 在R 中的象集为: Z x = { t Z , t ∈ R , t [ X ] = x } Z_{x} =\left \{ t_{Z} ,t\in R ,t[X]=x\right \} Zx={ tZ,t∈R,t[X]=x}
除(division): R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ ∏ Y ( S ) ⊆ Y x } R{\div}S=\left \{ t_{r} \left [ X \right ] | t_{r}\in R\wedge {\textstyle \prod_{Y}^{}} \left ( S \right ) \subseteq Y_{x} \right \} R÷S={ tr[X]∣tr∈R∧∏Y(S)⊆Yx}
给定关系R(X,Y)和S(Y,Z),R(Y)和S(Y)属性名可以不同,但出自同一个域集。
R与S的除运算得到新的关系P(x)
大的部分:Y在R象集;小的部分:S在Y的投影。
总结
并、差、笛卡尔积、选择、投影——基本运算。
交、连接、除——基于基本运算得出。
关系代数表达式:有限次运算复合后形成的表达式。
2.5 关系演算
2.5.1 元组关系语言ALPHA
检索操作
更改操作
2.5.2 元组关系演算
2.5.3 域关系演算语言
检索操作
更新操作
2.6 小结
发表评论
最新留言
关于作者
