以下图片来自西安交通大学侯迪老师的ppt,仅供学习和复习使用,请勿转载或他用
2.1 关系
2.1.1 域
列的取值范围——域
域:一组值的集合,这组值具有相同的数据类型
集合中元素的个数称为域的基数(Cardinality)
2.1.2 笛卡尔积
所有可能组成的元组:笛卡尔积
-
一组域D_{1} , D_{2} ,…, D_{n}的笛卡尔积为D_{1}×D_{2}×…×D_{n} = { (d_{1} , d_{2} , … , d_{n}) | d_{i}∈D_{i} , i=1,…,n }
-
笛卡尔积的每个元素(d_{1} , d_{2} , … , d_{n})称作一个n-元组(n-tuple)
-
每一个d_{i}叫做一个分量
-
笛卡尔积是n个域形成的所有可能的n-元组集合
-
若D_{i}的基础为m_{i},则笛卡尔积的基数为m_{1} \times m_{2} \times ... \times m_{n}
2.1.3 关系
一组域D_{1} , D_{2} ,…, D_{n}的笛卡尔积的子集
笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)。
关系可用R(A_{1}:D_{1}, A_{2}:D_{2}, … , A_{n}:D_{n})表示,可简记为R(A_{1} , A_{2} , … , A_{n} ),这种描述又被称为关系模式(Schema)或表标题(head),其中R是关系的名字, A_{i} 是属性, D_{i} 是属性所对应的域, n是关系的度或目(degree), 关系中元组的数目称为关系的基数(Cardinality)
例如:
关系模式与关系:
-
同一关系模式下,可有很多的关系。
-
关系模式是关系的结构, 关系是关系模式在某一时刻的数据。
-
关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的。
理论上,关系的任意两个元组不能完全相同。(集合的要求:集合内不能有相同的两个元素);现实应用中,表(Table)可能并不完全遵守此特性。
关系的特性:
属性不可再分特性:又被称为关系第一范式
2.1.4 候选键与主键
关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。
主键:
-
当有多个候选码时,可以选定一个作为主码。
-
DBMS以主码为主要线索管理关系中的各个元组。
2.1.5 主属性与非主属性
包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性 如 “选课”中的S# , C#为主属性,而Sname, Cname, Grade则为非主属性
2.1.6 外键
关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。
两个关系通常是靠外码连接起来的。
2.1.7 小结
2.2 关系模型中的完整性
-
实体完整性:即关系的主码中的属性值不能为空值。
-
参照完整性:如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2 中某个元组的Pk 值,或者为空值。
如下图中,D#是外码,而Dept表中D#没有值为05的元组
注意,下图中D#为空值是可以的
-
用户自定义完整性:
用户针对具体的应用环境定义的完整性约束条件
在三个完整性约束中,实体完整性和参照完整性由DBMS系统自动支持
2.3 关系代数
基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积(广义积)、选择、投影和更名等基本操作
2.3.1 并相容性
某些关系代数操作,如并、差、交等,需满足“并相容性”——参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性
定义:关系R与关系S存在相容性,当且仅当:
$$
(1) 关系R和关系S的属性数目必须相同;\\ (2) 对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同
$$
2.3.2 并操作
假设关系R和关系S是并相容的,则关系R与关系S的并运算结果也是一个关系,记作:R ∪S, 它由或者出现在关系R中,或者出现在S中的元组构成。
2.3.3 差操作
假设关系R 和关系S是并相容的,则关系R 与关系S 的差运算结果也是一个关系,记作:R S, 它由出现在关系R中但不出现在关系S中的元组构成。
2.3.4 广义笛卡尔积(中间产物,为了实现连接)
下图中,关系R的元组数目是3,度数是3; 关系S的元组数目是4, 度数是3; 则R x S的元组数目是12, 度数是6
2.3.5 选择操作
2.3.6 投影
注意投影后要去掉重复元组!
小结
先from(需要的表),再连接join,再选择where,最后投影select
2.3.7 交
2.3.8 \theta-连接
2.3.9 等值连接
2.3.10 自然连接
注意最后会去掉重复的属性列。
2.3.11 除操作
2.3.12 外连接
2.4 关系演算之元组演算
2.4.1 例子
2.4.2 存在量词和全称量词
可以使用全称量词与存在量词的等价关系改写
2.5 关系演算之域演算
2.5.1 例子
2.5.2 元组演算和域演算的比较
2.5.3 关系运算的安全性
即不产生无限关系和无穷验证的运算
需要对关系演算加约束:DOM