文章目录
- 前言
- 1.有关概念
- 关系代数
- 集合运算
- 关系运算
- θ连接
前言
关系模型的数据结构非常简单,只包含单一的数据结构——关系
1.有关概念
-
笛卡尔积,即两个集合A与B,他们每行都两两组合,成为一个新行,由此形成一个新的集合。特别地, 此两两组合只是简单拼接。也可以扩展为多个集合的笛卡尔积
- 以图说明, 假设有A和B,以笛卡尔积的形式合为一个新的集合T
集合S
A B C 0 1 2 10 11 12 集合R
D E F 30 31 32 40 41 42 50 51 52 可得集合T
A B C D E F 0 1 2 30 31 32 0 1 2 40 41 42 0 1 2 50 51 52 10 11 12 30 31 32 10 11 12 40 41 42 10 11 12 50 51 52 - 特点:明显的。由笛卡尔积,得来的T,其行数为R,S行数之乘积
其列数为列数之和
-
关系,关系表的简称。明显的,关系为笛卡尔积的子集,即从多个属性集合中,都抽取一个属性,组成一行,不断的进行此过程,获得多行,再进行筛序,从而获得一个关系表。
-
关系,由关系头与关系体构成。关系头为属性的集合,关系体为具体的内容
- 关系表中行或列可以交换,为同一个关系表
- 关系的每一个分量(属性值)必须不可继续分割,即一个确定的值,而不是值的集合,又称为原子的。
-
关系模型,关系表的一个非具体框架,即未填表的表格。
- 可以形象化的表示为R(U,D,DOM,F)
- R为关系名
- U为属性名的集合
- D为所有属性的域的集合
- DOM为D中对应元素的具体取值,即属性向域的映像集合
- F为属性间数据的依赖关系的集合,即通过一行中的某属性值,即可知道其他属性的值。
-
候选码,其为一个属性集,可以为任意个元素 ,但其必须满足,唯一性、最小性的性质
- 唯一性,不同元组,其候选码不同,起唯一表示的作用。
- 最小性,组成候选码的属性数量不可减少,即达到最小的数量,不可删除
-
主码,选一个候选码即可。
- 主码的各个属性为主属性
- 非主属性,不为任何 候选码属性的属性,明显的,存在既不为主码,又不为非主属性的属性。
- 特别地,若候选码为所有属性,称为全码。
-
外码,若R的一个属性集X不为R的主码,而为S的主码,则称X为R的外码
-
故,在此R被称为参照关系,S为被参照关系
-
外码建立了两个表之间的关联,方便地联系了两个关系表
-
以图说明
Classes 表:|班级ID |班级名称|
|—|---|
|101| 一班|
|102 |二班|Students 表:
|学生ID| 学生姓名| 班级ID|
|—|---|—|
|1 |小明| 101|
|2| 小红| 102|
|3 |小华| 101|明显的,Students表的班级ID可作为Classes表的外码,从而构筑班级和学生之间的联系
-
-
关系的完整性,分为实体完整性,参照完整性,用户自定义完整性
- 实体完整性,主码的值不能为空,或部分为空,因为元组以主码来唯一标识
- 参照完整性,外码的每一个值应与主码相等,或为空,避免破坏两关系表之间的联系
- 用户自定义完整性,为针对具体应用程序的约束条件。
关系代数
- 关系代数,用来描述关系操作(查询操作及更新操作)的一种语言,一种简单的数学表达式。
- 关系操作采用集合操作方式,即操作的对象和结果都为集合
- 运算符,分为集合运算符,关系运算符,算术运算符,逻辑运算符
-
集合运算符,即常见的几个数学运算符
|集合运算符|含义|
|—|---|
|∪|并|
|-|差|
|∩|交|
|×|笛卡尔积| -
算术比较运算符,比较大小
|算术比较运算符|含义|
|—|---|
|>|大于|
|≥|大于等于|
|<|小于|
|≤|小于等于|
|=|等于|
|≠|不等于| -
逻辑运算符
|逻辑运算符|含义|
|—|---|
|∧|与|
|∨|或|
|¬|非| -
关系运算符
|关系运算符|含义|
|—|---|
|σ|选取|
|∏|投影|
|⨝|自然连接|
|⨝xθy|θ连接|
|÷|除|
-
集合运算
传统的集合运算操作一般以行为单位
以以下定义说明
给定两个关系R,S,满足:
具有相同列数n
t代表元组
对应的属性,其属性性质一致
- 并,即R和S的所有元组合并,删去重复元组,组成一个新关系
- 记作,R∪S = {t | t ∈ R ∨ t ∈ S}
- 差,即删去R中与S相同的元组,组成一个新关系
- 记作,R-S = {t | t ∈ R ∧ ¬ t ∈ S}
- 交,即既属于R,又属于S的元组,组成一个新关系
- 记作,R∩S = {t | t ∈ R ∧ t ∈ S}
- 特别地,也可记作,R∩S = R - (R - S)
- 广义笛卡尔积,tr为R中元组,ts为S中元组
- 记作,R×S = {tr ⌒ ts | tr ∈ R ∩ ts ∈ S}
关系运算
关系运算,行和列都会进行操作
给定以下定义
- 设一个关系为R(A1,A2,……,An),括号内为R的各个属性名
t ∈ R ,表示t为R的一个分组
t[Ai] 表示 元组t中第i个属性的分量(值) - A{Ai1, Ai2, …, Aik}, 其中Ai1, Ai2, … Aik, 是A1到An的一部分, 则A被称为属性列,t[A] = {t[Ai1], t[Ai2], … , t[Aik]}表示元组t在属性列A上各分量的集合
- R为n元关系, S为m元关系, tr ∈ R, ts ∈ S, tr ⌒ ts 称为元组的连接, 变为一个n + m列的元组,
- 给定一个关系R(X,Y),X和Z为属性组(分别代表R中一组属性),定义t[X] = x时,x在R中的像集为Zx = {t[Z] | t ∈ R, t[X] = x}
- 其中,所谓t[X] = x, X为一个属性组,x也为一个属性组,即X属性组在R上的特定取值
- Zx的下标指小x
- 总的来说,Zx即X属性组在R上的特定取值为x时,对应的Z属性组在R上的值。
实际含义是,在一个关系上,一个属性组取一个特定值时,另一个属性组的对应集合
运算
- 选取,σF(R)= {t | t ∈ R ∧ F(t)= ‘真’}, σ为选取运算符, F为选取的条件,F(t)= ‘真’, 即选取符合F条件的元组
- 投影,从左到右按照指定的若干属性及顺序取出相应列,删去重复元组,即∏A(R)= {t[A] | t ∈ R},A为条件需要的属性列
- θ连接,定义关系R,Y,关系R和关系S分别有一个子属性集X,Y(属性列数目相同,有共同的域),设R和S的笛卡尔积为Q,选取在X,Y属性集上满足θ比较条件的Q的部分元组,组成一个新的关系,称为θ连接
- θ为算术比较运算符,用于比较属性大小时使用(数字直接比较大小,字符则以字典顺序比较)
- 分为“ = ”,等值连接,注意,存在特殊的等值连接——自然连接
- “ < ”, 小于连接
- “ > ”,大于连接
- 记作,R⨝xθy S = {tr ⌒ ts | tr ∈ R ∧ ts ∈ S ∧ tr[X] θ ts[Y]为真}
- 也可记作为R⨝xθy S = σxθy(R×S)
- xθy为连接条件,即在X,Y属性集上满足θ比较条件
- θ为算术比较运算符,用于比较属性大小时使用(数字直接比较大小,字符则以字典顺序比较)
- 除法,以类似除法的逻辑进行运算,通过除以相同属性集的相同属性值,得到的属性集。
-
设有关系R(X,Y)与S(Y,Z),其中括号表示将其中完整的属性集分为两部分,其中Y表示有相同域的属性集(名字可以不同),通过除法,我们可以获得一个全新的关系P(X),其中X为R中除了相同属性集以外的部分。
-
P(X)是R中满足条件的元组的投影(符合关系的元组中符合关系的列的组合):元组在X上分量值x的像集Yx包含S在Y上投影的集合,
记作:R÷S = {tr[X] | tr ∈ R ∧ ∏y(S) ⊆ Yx}- tr[X]表示R上X属性集上的部分集合
- ∏y(S)表示关系S上Y的投影
- Yx表示组在X上分量值x的像集Yx
- 如图,做一个演示
关系R
B C D 1 b2 c3 1 b2 c4 2 b2 c1 3 b5 c2 关系S
F d5 d6 关系P(R÷S)
b2 明显的,X={A,B} = { (a1,b2), (a2,b4), (a3, b5)}
Y = {C, D} = { (c3,d5), (c4,d6) }
Z = { F } = { f3,f4 }
其中元组在X上各个分量值的像集分别为:
(a1,b2)的像集为{ (c3,d5),(c4,d6) }
(a2,b4) 的像集为{(c1,d3)}
(a3,b5)的像集为{(c2,d8)}
S在Y上的投影为{(c3,d5),(c4,d6)}
明显的,
-
θ连接
用两个关系R,S进行说明
R
A | B | C |
---|---|---|
a1 | b1 | 2 |
a1 | b2 | 4 |
a2 | b3 | 6 |
a2 | b4 | 8 |
S
B | D |
---|---|
b1 | 5 |
b2 | 6 |
b3 | 7 |
b3 | 8 |
- 等值连接(若C=D)
A | R.B | C | S.B | D |
---|---|---|---|---|
a2 | b3 | 6 | b2 | 6 |
a2 | b4 | 8 | b3 | 8 |
若R.B = S.B(两个关系中比较属性一样,则加关系名以标识)
A | R.B | C | S.B | D |
---|---|---|---|---|
a1 | b1 | 2 | b1 | 5 |
a1 | b2 | 4 | b2 | 6 |
a2 | b3 | 6 | b3 | 7 |
a2 | b3 | 6 | b3 | 8 |
自然连接
A | B | C | D |
---|---|---|---|
a1 | b1 | 2 | 5 |
a1 | b2 | 4 | 6 |
a2 | b3 | 6 | 7 |
a2 | b3 | 6 | 8 |
等值连接,即获得R和S的笛卡尔积后,选取对应属性相同的元组组成一个新关系,比如图一的C=D或者图二的R.B =
S.B,明显的,比较的属性名可以不同。
存在特殊的等值连接——自然连接,它要求比较的属性名一致,同时不会并列两个比较的属性,会删除一个,图二和图三基本一致,但图三只有一个属性B
大于连接,也为获得R和S的笛卡尔积后,选取对应属性大于另一个关系的元组组成一个新关系;小于连接类似,不过为小于另一个关系的。
-
除法,类似于数学中除法的选取方式,即除以相同属性值,得到剩余的属性组
- 设有关系R(X,Y),与关系S(Y,Z),其中Y为相同属性组,名称可以不一致,但必须来自相同的域。R÷S得到商P(X),X为R的剩余部分的属性组
- 结果P为R中满足条件的元组在X上的投影:元组在X上分量值x的像集Yx包含S在Y上投影的集合,记作:R÷S = {tr[X] | tr ∈ R ∧ ∏y(S) ⊆ Yx}
- 其中,tr[X]为R在X属性组上的值所组成的元组
- ∏y(S)为S在Y上投影,Yx为Y在X上的投影,即S在Y上的投影要包含于Y在X上的投影。明显的,这便是除法
- 如图,做一个演示
关系R
A B C D a1 b2 c3 d5 a1 b2 c4 d6 a2 b4 c1 d3 a3 b5 c2 d8 关系S
C D F c3 d5 f3 c4 d6 f4 关系P(R÷S)
A B a1 b2 明显的,X = {A,B} = {(a1,b2),(a2,b4),(a3,b5)}
Y = {C,D} = {(c3,d5),(c4,d6)}
Z = {F} = {f3,f4}
元组在X上各个分量值的像集分别为
(a1,b2)的像集为{(c3,d5),(c4,d6)}
(a2,b4)的像集为{(c1,d3)}
(a3,b5)的像集为{(c2,d8)}
S在Y上的投影为{(c3,d5),(c4,d6)}
明显的,S在Y上的投影只包含于(a1,b2)的像集,故R÷S = {(a1,b2)}