《数据库系统概论》 第二章 关系数据库 讲义
3. 参照完整性规则 规则2.2 参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值
[例1]:
学生关系中每个元组的“专业号”属性只取两类值: (1)空值,表示尚未给该学生分配专业
(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业
〔例2〕 :
选修(学号,课程号,成绩) “学号”和“课程号”可能的取值 : (1)选修关系中的主属性,不能取空值 (2)只能取相应被参照关系中已经存在的主码值 例3〕:
学生(学号,姓名,性别,专业号,年龄,班长) “班长”属性值可以取两类值:
(1)空值,表示该学生所在班级尚未选出班长 (2)非空值,该值必须是本关系中某个元组的学号值
2.3.4 用户定义的完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
- 11 -
《数据库系统概论》 第二章 关系数据库 讲义
例:
课程(课程号 ,课程名,学分) “ 课程号” 属性必须取唯一值 非主属性“ 课程名” 也不能取空值 “ 学分” 属性只能取值{1 ,2 ,3 ,4}
2.4 关系代数 概述
传统的集合运算 专门的关系运算
2.4 关系代数 概述
传统的集合运算 专门的关系运算
1. 并(Union)
R和S 具有相同的目n(即两个关系都有n个属性) 相应的属性取自同一个域
R∪S
仍为n 目关系,由属于R 或属于S 的元组组成
R∪S = { t|t ? R∨t ?S }
2. 差(Difference)
R和S 具有相同的目n 相应的属性取自同一个域
- 12 -
《数据库系统概论》 第二章 关系数据库 讲义
R - S
仍为n 目关系,由属于R 而不属于S 的所有元组组成 R -S = { t|t?R∧t?S }
3. 交(Intersection)
R和S 具有相同的目n 相应的属性取自同一个域
R∩S 仍为n 目关系,由既属于R 又属于S 的元组组成
R∩S = { t|t ? R∧t ?S } R∩S = R –(R-S ) 交 (续)
4. 笛卡尔积(Cartesian Product)
严格地讲应该是广义的笛卡尔积(Extended Cartesian Product) R: n目关系,k1个元组 S: m目关系,k2个元组
R×S
列:(n+m ) 列元组的集合 元组的前n列是关系R的一个元组 后m列是关系S的一个元组 行:k1×k2 个元组
R×S = {tr ts |tr ?R ∧ ts?S }
2.4.2 专门的关系运算 先引入几个记号 (1) R,t?R,t[Ai]
设关系模式为R(A1,A2,?,An) 它的一个关系设为R
- 13 -
《数据库系统概论》 第二章 关系数据库 讲义
t?R表示t是R的一个元组
t[Ai]则表示元组t中相应于属性Ai的一个分量
(2) A,t[A], A
若A={Ai1,Ai2,?,Aik},其中Ai1,Ai2,?,Aik是A1,A2,?,An中的一部分,则A称为属性列或属性组。
t[A]=(t[Ai1],t[Ai2],?,t[Aik])表示元组t在属性列A上诸分量的集合。
A则表示{A1,A2,?,An}中去掉{Ai1,Ai2,?,Aik}后剩余的属性组。
(3) tr ts
R为n目关系,S为m目关系。
tr ?R,ts?S, tr ts称为元组的连接。
tr ts是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
(4)象集Zx
给定一个关系R(X,Z),X和Z为属性组。 当t[X]=x时,x在R中的象集(Images Set)为: Zx={t[Z]|t ?R,t[X]=x}
它表示R中属性组X上值为x的诸元组在Z上分量的集合
x1在R中的象集
Zx1 ={Z1,Z2,Z3}, x2在R中的象集 Zx2 ={Z2,Z3}, x3 在R 中的象集 Zx3={Z1 ,Z3}
- 14 -
《数据库系统概论》 第二章 关系数据库 讲义
专门的关系运算(选择、投影、连接、除)
1. 选择(Selection)
1) 选择又称为限制(Restriction) 2) 选择运算符的含义
在关系R中选择满足给定条件的诸元组 σF(R) = {t|t?R∧F(t)= '真'} F:选择条件,是一个逻辑表达式,基本形式为: X1θY1
3) 选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算
[例1] 查询信息系(IS系)全体学生 结果:
[例2] 查询年龄小于20 岁的学生
σ
Sage < 20
σ
5 ='IS'
Sdept
= 'IS' (Student)
或 σ(Student)
(Student)
或 σ 结果:
4 < 20
(Student)
2. 投影(Projection) 1)投影运算符的含义
从R 中选择出若干属性列组成新的关系 πA(R) = { t[A] | t ?R }
A:R 中的属性列
- 15 -