第二章 关系数据库
2.1 系模型概述
关系数据库系统是支持关系模型的数据库系统,
关系模型由关系数据结构、关系操作集合和关系完整性约束三
部分组成。
一、单一的数据结构 —— 关系
二、关系操作
关系模型中常用的关系操作有,
选择 (Selsct)、投影 (Project)、连接 (Join)、除 (Divide)、并
(Union)、交 (Intersection)、差 (Difference)、等查询 (Query)操作
和增加 (Insert)、删除 (Delete)、修改 (Update)两大部分。
三、关系的三类完整性约束
关系模型允许定义三类完整性约束:实体完整性、参照完整性
和用户定义的完整性。
2.2 关系数据结构及形式化定义
2.2.1 关 系
1,域 (Domain)
定义 2.1 域 是一组具有相同数据类型的值的集合,
2,笛卡尔积 (Cartesian Produce)
定义 2.2 给定一组域 D1,D2,…,Dn,这些域中可以有相同的。
D1,D2,…,Dn 的 笛卡尔积 为,
D1× D2× … × Dn= {(d1,d2,…,dn) | di ∈ Di,i=1,2,3,…,n)
若 Di(i=1,2,…,n) 为有限集,其基数为 mi(i=1,2,…,n),
则 D1× D2× … × Dn的基数为 m=∏mi
例如给出三个域:
D1=导师集合 SUPERVISOR=张清玫,刘逸
D2=专业集合 SPECIALITY=计算机专业,通信专业
D3=研究生集合 POSTGRADUATE=李勇,刘晨,王敏
则 D1,D2,D3的 笛卡尔积 为:
D1× D2× D3={(张清玫,计算机专业,李勇 ),(张清玫,计算机专业,刘晨 ),
(张清玫,计算机专业,王敏 ),(张清玫,通信专业,李勇 ),
(张清玫,通信专业,刘晨 ),(张清玫,通信专业,王敏 ),
(刘逸,计算机专业,李勇 ),(刘逸,计算机专业,刘晨 ),
(刘逸,计算机专业,王敏 ),(刘逸,通信专业,李勇 ),
(刘逸,通信专业,刘晨 ),(刘逸,通信专业,王敏 ),}
i=1
n
3,关 系
定义 2.3 D1× D2× … × Dn 的子集叫做在域 D1,D2,…,Dn上的关系,
用 R(D1,D2,…,Dn)表示
这里 R表示关系的名字,n是关系的目或度,
当 n=1时,称为单元关系,
当 n=2时,称为二元关系,
关系是一张二维表,表的每一行对应一个元组,表的每一列对应
一个域,由于域可以相同,为了加以区分,对每列取一个名字,称为属
性,n目关系必有 n个属性,
SUPERVISOR SPECIALITY POSTGRADUATE
张清玫 计算机专业 李勇
张清玫 计算机专业 刘晨
刘 逸 通 信 专 业 王敏
表 2.2 SAP关系
☆ 数据库中的基本关系有以下性质,
1、列是同性质的,即每一列中的分量是同一类型的数据,来自
同一个域。
2、不同的列可出自同一个域,每一列称为属性,要给予不同
的属性名。
3、列的顺序无所谓,即列的次序可以任意交换。
4、任意两个元组不能全同。
5、行的顺序无所谓,即行的次序可以任意交换。
6、每一分量必须是不可分的数据项。
☆ 关系的三种类型,
基本关系,查询表,视图表
.☆ 关系模型要求关系必须是规范化的,即要求关系模式
必须满足一定的规范条件,
2.2.2 关系模式
定义 2.4 关系的描述称为关系模式 (Relation Schema)。
可形式化表示为, R(U,D,dom,F)
关系模式通常可以简记为:
R(U) OR R(A1,A2,…,A n)。
R为关系名,A1,A2…,A n为属性名,属性向域的映象常常直接说
明为属性的类型、长度。
2.2.3 关系数据库
(1).关系数据库的型
(2).关系数据库的值
2.3 关系的完整性
一、实体完整性 (Entity Integrity)
规则 2.1 实体完整性规则 若属性 A是基本关系 R的主属性,则属
性 A不能取空值,
★ 对实体完整性规则的说明,
(1) 实体完整性规则是针对基本关系而言的,
(2) 现实世界中的实体是可区分的,即它们具有某种唯一性标识,
(3) 相应地,关系模型中的以主码作为唯一性标识,
(4) 主码中的属性即主属性不能取空值,
二、参照完整性 (Referential Integrity)
例 1 学生实体和专业实体可以用下面的关系表示,其中主码用
下划线标识,
学生 (学号,姓名,性别,专业号,年龄 )
专业 (专业号,专业名 )
例 2 学生、课程、学生与课程之间的多对多的联系可用如下
三个关系表示:
学生 (学号,姓名,性别,专业号,年龄 )
课程 ( 课程号,课程名,学分 )
选修 ( 学号, 课程号,成绩 )
例 3 在关系 学生 2(学号,姓名,性别,专业号,年龄,班长 )中,
?学号?属性是主码,?班长?属性表示该学生所在班级的班长的
学号。
定义 2.5 设 F是基本关系 R的一个或一组属性,但不是关系
R的码,如果 F与基本关系 S的主码 Ks相对应,则称 F是基本关系的
外码 (Foreing Key),并称基本关系 R为参照关系 (Referencing
Relation).基本关系 S为被参照关系 (Referenced Relation)或目标关
系 (Target Relation)..
规则 2.2 参照完整性规则 若属性 (或属性组 )F是基本关系
R的外码,它与基本关系 S的主码 Ks相对应,则对于 R中每个元组在
F上的值必须为,
● 或者取空 (F的每个属性值均为空 );
● 或者等于 S中某个元组的主码值,
三、用户定义的完整性 (User-defind Integrity)
用户定义的完整性就是针对某一具体关系数据库的约束条
件, 它反映某一具体应用所涉及的数据必须满足的语义要求,
2.4 关 系 代 数
一、关系代数的运算的分类
1,传统的集合运算
2,专门的关系运算
关系代数的运算对象是关系,运算结果亦为关系。
二、关系代数用到的运算符
(1)集合运算符, ∪ (并 ),- (差 ),∩(交 )
(2)算术比较符 θ={>,≥,<,≤,=,≠}
(3)专门的关系运算符, σ(选择 ),π(投影 ),(连接 ),÷ (除 )
× (广义笛卡尔积 )
(4)逻辑运算符, ┐,∧,∨
2.4.1 传统的集合运算
设关系 R和关系 S具有相同的目 n,且相应的属性取自同一个域,
则可以定义四种运算如下,
1,并 (Union)
关系 R和关系 S的并记为, R∪ S {t | t ∈ R ∨ t ∈ S},
结果仍为 n目关系,由属于 R或属于 S的元组组成,
2,差 (Difference)
关系 R和关系 S的差记为,R-S={t|t ∈ R ∧ t ∈ S}.
结果仍为 n目关系,由属于 R而不属于 S的元组组成,
3,交 (Intersection)
关系 R和关系 S的交记为, R ∩ S ={t | t ∈ R ∧ t ∈ S}
结果仍为 n目关系,由既属于 R有属于 S的元组组成, 关系的交可
由关系的差表示,即 R∩S=R-(R-S).
4,广义笛卡尔积 (Extended cartesian product)
两个分别为 n,m目阿关系 R和 S的广义笛卡尔积 R× S是一个
(n+m)元组的集合,元组的前 n个分量是 R的一个元组,后 m个分量是 S
的一个元组,若 R有 k1个元组,S有 k2个元组,则 R× S有 k1× k2个元组,
A B C
a1
a1
a2
b1
b2
b2
c1
c2
c1
A B C
a1
a1
a2
b2
b3
b2
c2
c2
c1
R S
A B C
a1
a1
a2
a1
b1
b2
b2
b3
c1
c2
c1
c3
A B C
a1 b1 c1
A B C
a1
a2
b2
b2
c2
c1
图 4-1 ( c )R∪ S 图 4-1 ( e )R∩S图 4-1 ( d ) R-S
( a ) ( b )
2.4.2 专门的关系运算
一, 几个记号
1,设关系模式为 R(A1,A2,…,An),它的一个关系设为 R,T∈ R
表示 t是 R的一个元组。 T[Ai]则表示元组 t中相应属于 Ai的一个分量。
2.若 A={Ai1,Ai2,Ai3,…,Aik},其中 Ai1,Ai2,Ai3,…,Aik 是
A1,A2,A3,…,An 中的一部分,则 A称为属性列或域列,A则表示
{A1,A2,A3,…,An} 中去掉 {Ai1,Ai2,Ai3,…,Aik} 后剩余的属性
组,t[A]=(t[Ai1],t[Ai2],…,t[Aik]) 表示元组 t在属性列 A上诸分量的集合,
3,R为 n目关系,S为 m目关系
tr ∈ R,ts ∈ S
tr ts 称为元组的连接 (Concatenation).这是一个 (n+m)列的元组,
前 n个分量是 R的一个 n元组,后 m个分量是 S中的一个 m元组,
4,给定一个关系 R(X,Z),X,Z为属性组, 我们定义当 X=x时,x在
R中的象集 (Image Set)为,
Zx={t[z]| t∈ R,t[X]=x}
表示 R中属性组 X上值为 x的诸元组在 Z上分量的集合,
⌒
二, 各种关系运算的定义
1,选择 (Selection)
亦称为限制 (Restriction).在关系 R中选择满足给定条件的诸元组,
记为,
σF( R)={t|t∈ R∧ F(t)=‘真’ }
F是一个公式,它的取值为‘真’或‘假’,
F由逻辑运算符 (∧,∨,┐)连接各算术表达式组成。算术表达式
的基本形式为:
X1θY1
选择运算是从关系 R中选取使公式 F为真的元组,这是从行的角度
进行的运算,
举例说明选择运算,
设有学生 —— 课程关系数据库,学生关系 Student、课程关系
Course和学生选课关系 SC,分别如图 2.3 (a ),( b ),( c )所示
学号
Sno
姓 名
Sname
性别
Ssex
年龄
Sage
所在系
Sdept
95001
95002
95003
95004
李勇
刘晨
王敏
张立
男
女
女
男
20
19
18
19
CS
IS
MA
IS
Student
课程号
Cno
课程名
Nname
先行课
Cpno
学分
Ccredit
1
2
3
4
5
6
7
数据库
数 学
信息系统
操作系统
数据结构
数据处理
PASCAL语言
5
1
6
7
6
4
2
4
3
4
2
4
Course
学号
Sno
课程号
Cno
成绩
Grade
95001
95001
95001
95002
95002
1
2
3
2
3
92
85
88
90
80
SC
( a )
( b )
( c )
图 2.3 学生 -课程数据库
例 1,查询信息系 (IS系 )的全体学生,
解, 在学生关系中找出 Sdept为‘ IS’的学生,
σSdept=‘IS’(Student)或 σ5=‘IS’(Student)
学号
Sno
姓 名
Sname
性别
Ssex
年龄
Sage
所在系
Sdept
95002
95004
刘晨
张立
女
男
19
19
IS
IS
例 2,查询年龄小于 20岁的学生,
解, 在学生关系中找出 Sage小于 20的学生,
即, σSage<‘19’(Student)或 σ4<‘19’(Student)
学号
Sno
姓 名
Sname
性别
Ssex
年龄
Sage
所在系
Sdept
95002
95003
95004
刘晨
王敏
张立
女
女
男
19
18
19
IS
MA
IS
2,投影 (Projection)
关系 R上的投影是从 R中选择若干属性列组成新的关系,记作,
πA( R )={t[A] | t ∈ R}
A为 R中的属性列,
例 3,求学生 (Student)关系在学生姓名和所在系这两个属性上的
投影,
解, πSname,Sdept( Student ) 或 π2,5( Student )
结果如图 2.5(a)所示,
例 4,查询关系 Student 在所在系属性上的投影,
解, πSdept( Student ) 或 π5 ( Student )
结果如图 2.5 (b)
3,连接 (Join)亦称为 θ连接
连接运算是从两个关系的笛卡尔积中选取属性间满足一定条件
的元组,记作,
R∞S = { tr ts | tr∈ R∧ ts∈ S ∧ tr[A] θts[B]}AθB ⌒
自然连接 (Natural join)是一种特殊而常用的连接,若 R和 S具有
相同的属性组 B,则自然连接定义如下,
R∞S = { tr ts[B] | tr∈ R∧ ts∈ S ∧ tr[B] =ts[B]}⌒
例 5,设关系 R,S分别为 图 2.6中的 ( a),(b ).
R∞S 的结果如图 2.6( c ).
R∞S 等值连接的结果如图 2.6( d ),
C<E
R.B=S.B
R∞S 自然连接的结果如图 2.6( e ),
4,除 (Division)
给定关系 R(X,Y)与 S(Y,Z),其中 X,Y,Z为属性列,R中的 Y与 S中的
Y可以有不同的属性名,但必须出自相同的域集,定义除法,
R÷ S={ tr[X] | tr∈ R∧ πr(S) Yx)}
Yx为 x在 R中象集,x= tr[X],
除法结果是 R中满足下列条件的元组在 X属性列上的投影,
元组在 X上分量值 x的象集 Yx包含 S在 Y上投影的集合,
例 6 设关系 R,S分别为图 2.7中 (a) 和 (b),R÷ S的结果如图 (c)
在关系 R中,A可以取四个值 {a1,a2,a3,a4}
a1的象集为,{(b1,c2),(b2,c3),(b2,c1)}
a2的象集为,{(b3,c7),(b2,c3)}
a3的象集为,{(b4,c6)}
a4的象集为,{(b6,c6)}
S在 (B,C)上的投影为 {(b1,c2),(b2,c1),(b2,c3)}
例 7,求至少选修 1号课程和 3号课程的学生的学号,
解, 设一个临时关系 K:
π Sno,Cno(SC)÷ K={95001}
Cno
1
3
例 8,查询选修了 2号课程的学生的学号
πSno(σCno=‘2’ (SC))={95001,95002}
例 9,查询至少选修了一门其先行课为 5号课程的学生姓名,
πSname(σCpno=‘5’ (Course) ∞SC ∞ π Sno,Sname(Student) )
例 10,查询选修了全部课程的学生的学号和姓名,
πSno,Cno(SC) ÷ πCno (Course) ∞ π Sno,Sname(Student)
2.5.1 元组关系演算语言 ALPHA
★ ALPHA语言的基本格式
操作语句 工作空间名 (表达式 ),操作条件
各部分的具体说明,
<操作语句 >::=GET | PUT | HOLD | UPDATA | DELETE |DROP
<表达式 >::=(<简单项 1>,<简单项 2>,…,< 简单项 n>),
2.5 关系演算
关系演算按谓词变元的不同可分为元组关系演算和域
关系演算,我们首先介绍元组关系演算然后介绍域关系演
算,都是先讨论抽象语言然后介绍一种实际语言。
一, 检索操作
1,简单检索
例 1,求所有被选修的课程的课程号码,
GET W (SC.Cno)
例 2,求所有学生的数据,
GET W (Student)
2,限定的检索
例 3,求信息系 (IS)中年龄小于 20岁的学生的学号和年龄,
GET W (Student.Sno,Student.Sage),Student.Sdept=‘IS’∧ Student.Sage<’20’
3,带排序的检索
例 4,求计算机科学系 (CS)的学生的学号和年龄,结果按年龄降
序排列,
GET W (S.Student,S.Sage),Student.Sdept=‘CS’ DOWN Student.Sage
4,带定额的检索
例 5,取出一个信息系学生的学号,
GET W (1) (Student.Sno),Student.Sdept=‘IS’
5,用元组变量的检索
例 7,查询信息系学生的名字,
RANGE Student X
GET W (X.Sname),X.Sdept=‘IS’
6,用存在量词的检索
例 8.求选修 2号课程的学生的名字,
RANGE SC X
GET W (Student.Sname),X (X.Sno=Student.Sno∧ X.Cno =‘2’)E
例 9.求选修某课程的学生的学号,课程的条件是其直接先行课程是 1号课
程。
RANGE C XC
GET W (SC.Sno),CX (CX.Cno =SC.Cno∧ CX.Pcno =‘1’)
E
(7) 带有多个关系的表达式的检索,
例 11.求成绩为 90分以上的学生的名字与课程名字,
查询的结果 Sname和 Cname分别在 Student和 Course两个关系中,
RANGE SC SCX
GET W (Student.Sname,C.Cname),SCX (SCX.Grade≥=90∧
SCX.Sno =Student.Sno) ∧ Course.Cno=SCX.Cno)
E
(8) 用全称量词的检索
例 12.求不选修 1号课程的学生的名字,
RANGE SC SCX
GET W (Student.Sname),SCX (SCX.Sno≠Student.Sno∨ SCX.Cno ≠‘1’)A
(9) 用两种量词的检索
例 13.查询选修了全部课程的学生姓名,
RANGE Course CX
SC SCX
GET W (Student.Sname),CX SCX (SCX.Sno=Sstudent.Sno
∧ SCX.Cno =CX.Cno)
EA
(10) 用蕴函 (Implication)的检索
例 14.求最少选修了 95002所选的课程的学生的学号,
RANGE C CX
SC SCX
SC SCY
GET W (Student.Sno),CX( SCX (SCX.Sno=‘95002’∧ SCX.Cno
=CX.Cno) SCY (SCY.Sno=Student.Sno∧ SCY.Cno =CX.Cno)E
A E
(11) 库函数 (build-in function)
库函数也称集函数 (Aggregation-function).常用的主要有,
对元组计数, COUNT 求和, TOTAL
最大值, MAX 最小值, MIN
平均值, AVG
例 15,求学生所在系的数目
GET W (COUNT(Student.Sdept))
例 16,求计算机科学系学生的平均年龄,
GET W (AVG(Student.Sage):Student.Sdept=‘CS’)
二、更新操作
(1),修改操作, 操作语句为,UPDATE
例 17,把 95004从信息系转到计科系,
解, 应先将欲修改的数据读出来,然后修改,最后送回,
HOLD W (Student.Sno,Student.Sdetp),Student.Sno =‘95004’
MOVE ‘CS’ TO W.Sdetp
UPDATE W
(2),插入操作, 操作语句为,PUT
例 18,学校新开设了一门 2学分的课程?计算机系统结构?,其
课程号为 8,直接先行课为 6号课程。插入该课程元组。
解, MOVE ‘8’ TO W.Cno
MOVE ‘计算机系统结构’ TO W.Cname
MOVE ‘6’ TO W.Cpno
MOVE ‘2’ TO W.Credit
PUT W (Course)
(3),删除操作,
操作语句为,DELETE
例 19,95035学生因故退学,删除该学生元组,
解, HOLD W (Student):Student.Sno=‘95035’
DELETE W
例 21,删除全部学生,
解, HOLD W (Student)
DELETE W
HOLD W (SC) 相应地也应删除 SC关系中的全部元组,
DELETE W
* 2.5.2 元组关系演算
元组关系演算用表达式
{t | φ(t)} 来表示,
其中 t为元组变量, φ(t)为元组关系演算公式,它由原子公式和运
算符组成,
一, 原子公式,
1,R(t).
R是关系名,t是元组变量,R(t)表示 t是 R中的一个元组,即 t∈ R.
2,t[i]θu[j],
t 和 u是元组变量,θ是算术比较符,
3,t[i]θC 或 Cθ t[i],
表示? t的第 i个分量与常量 C之间满足比较关系 θ”.
二, 公式可以递归定义
1,每个原子公式是一个公式,
2,设 φ1和 φ2是公式,则 ┐φ1,φ1∧ φ2,φ1∨ φ2也是公式,
3,若 φ是公式,t是元组变量,则 t (φ) 也是公式,
4,若 φ是公式,则 t (φ)也是公式,
5,公式中运算符的优先次序为,
( ) 算术比较符 量词 ( ) (┐ ∧ ∨ )
6,有限次地使用上述五条规则得到的公式是元组关系演算公式,
E
A
A E
元组关系表达式 {t | φ(t)},表示使 φ为真的元组集合,
三, 用关系演算表达式表示 5种关系代数的基本运算
1,并
R∪ S={ t |R( t)∨ S(t )}
2,差
R-S={t | R(t)∧ ┐S(t)}
3,笛卡尔积
4,投影
πi1,i2,…,ik (R)={t | ( u)(R(u)∧ t[1]=u(i1)∧ …t[k]=u[i k])}(k) E
5,选择
σF(R)={ t| R(t)∧ F’}
例 2,查询年龄大于或等于 20的学生,
S20={ t| Student( t) ∧ t[4]≥‘20’}
例 3,求学生姓名及所在的系
S1={t | ( u)(R(u)∧ t[1]=u[2])∧ t[2]=u[5])}(2) E
四, 举例
例 1 查询计科系 (CS系 )的全体学生
SCS={ t| Student( t) ∧ t[5]=‘CS’}
五, 元组演算表达式的安全性
当满足下列条件时,元组演算表达式 {t | φ( t)}是安全的,
1,如果 t使 φ( t)为真,则 t的每个分量是 DOM(φ)中的元素,
2,对于 φ中每一个形如 ( u) (w(u))的子表达式,若 u使 w(u)为真,
则 u的每个分量是 dom(φ)中的元素,
3,对于 φ中每一个形如 ( u) (w(u))的子表达式,若 u使 w(u)为假,
则 u的每个分量必属于 dom(φ).换言之,若 u的某一分量不属于 dom(φ),
则 w(u)为真,
E
A
例, 设有关系 R如图 2.8( a),S={t | ┐R( t)},若不进行安全限制,则可
能是一个无限关系,所以令
dom(φ)=πA(R)∪ πB( R)∪ πC(R)
={{a1,a2},{b1,b2},{c1,c2}}
则 S是 DOM(φ)中各元素的笛卡尔积与 R的差集,结果如图 2.8(b).
2.5.3 域关系演算语言 QBE
QBE是 Quey By Example的简称。它是一种高度非
过程化的基于屏幕表格的查询语言。
QBE中用示例元素来表示查询结果可能的情况,示
例元素实质上就是域变量。其操作框架如下所示。
元组属性值或查询条件
关系名
属性名关系名
操作命令
一,检索操作
例 1,求信息系全体学生姓名,
解, 这要在关系 S上查找,具体步骤是,
(1).用户提出要求,
(2).机器显示空白表格,
,(4) 系统显示该关系的
属性名,本题显示为:
(3).用户输入
关系名 Student Student
Student Sno Sname Ssex Sage Sdept
(5),用户构造查询要求, Student Sno Sname Ssex Sage Sdept
P.T IS
(6),屏幕显示查询结果 Student Sno Sname Ssex Sage Sdept李勇
张立
IS
例 2,查询全体学生的全部数据
也可以用下面的简单表示
Student Sno Sname Ssex Sage Sdept
P.95001 P.李勇 P.男 P.20 P,IS
Student Sno Sname Ssex Sage Sdept
P.
2,条件查询,
例 3,求年龄大于 19岁的学生的学号,
Student Sno Sname Ssex Sage Sdept
P.95001 >19
例 4,求计科系年龄大于 19岁的学生的学号,
查询的条件是, Sdept=‘CS’和 Sage>19两个条件的与,
(1),把两个条件写在同一行上 ;
Student Sno Sname Ssex Sage Sdept
P.95001 >19 CS
Student Sno Sname Ssex Sage Sdept
P.95001
P.95001 >19
CS
(2),把两个条件写在不同行上,但使用相同的示例元素值
例 5.查询计科系或者年龄大于 19岁的学生的学号,
Student Sno Sname Ssex Sage Sdept
P.95001
P.95002 >19
CS
例 6,查询既选修了 1号课程又选修了 2号课程的学生的学号,
例 7,查询选修 1号课程的学生姓名,
该查询涉及两个关系, SC和 Student.
SC Sno Cno Grade
P.95001
P.95001
1
2
Student Sno Sname Ssex Sage Sdept
P.95001 P.李勇
SC Sno Cno Grade
P.95001 1
例 8,查询未选修 1课程的学生姓名,
用逻辑非的查询,
例 9,求有两个人以上选修的课程号码,
在一个表内连接的查询
Student Sno Sname Ssex Sage Sdept
P.95001 P.李勇
SC Sno Cno Grade
┐ P.95001 1
SC Sno Cno Grade
95001
┐95001
P.1
1
3,集函数
CNT 对元组计数 SUM 求总和
AVG 求平均值 MAX 求最大值
MIN 求最小值
例 10,查询信息系学生的平均年龄,
Student Sno Sname Ssex Sage Sdept
P.AVG.ALL,IS
4,对查询结果排序
例 11,查询全体男生的姓名,要求查询结果按所在系升序排列,
对相同系的学生按年龄降序排列,
Student Sno Sname Ssex Sage Sdept
P,李勇 男 DO (2),AO (1),
二, 更新操作
1,修改操作 (U)
例 12,把 95001学生的年龄改为 18.
例 14,将计算机科学系所
有学生的年龄都增加 1岁,
Student Sno Sname Ssex Sage Sdept
95001 U.18 (1).将操作符? U.”放在值上,
(2).将操作符? U.”
放在关系上,
Student Sno Sname Ssex Sage Sdept
95001 U.18
例 13,把 95001学生的
年龄增加 1岁,
Student Sno Sname Ssex Sage Sdept
U.
95001
95001
17
17+1
Student Sno Sname Ssex Sage Sdept
U.
95008
95008
18
18+1
CS
3.删除操作 (D)
例 16,删除学生 95089.
2,插入操作 ( I )
例 15,把信息系女生 95701,姓名张三,年龄 20存入数据库中,
Student Sno Sname Ssex Sage Sdept
I,95701 张三 女 20 IS
Student Sno Sname Ssex Sage Sdept
D,95089
SC Sno Cno Grade
D,95089
* 2.5.4 域关系演算
域演算利用与元组关系演算相同的运算符建立,主要区别是公
式中的变量不是元组变量而是元组分量的变量,简称域变量,
一, 域演算表达的形式为,
{x1,x2,…,x k|φ(x1,x2,…,x k ) }
其中 x1,x2,…,x k是域变量,φ是由原子公式和运算符组成的公式,
二, 三类原子公式
1,R(t1,t2,…,t k ).R是 K元关系,ti是域变量或常量,R(t1,t2,…,t k )表
示由分量 t1,t2,…,t k组成的元组属于 R.
2,tiθuj ti,uj是域变量,θ是算术比较符,表示 ti,uj 之间满足比
较关系 θ.
3,ti θC 或 Cθ ti 表示域变量 ti与常量 C之间满足比较关系 θ.
三, 公式可以递归定义
1,每个原子公式是一个公式,
2,设 φ1和 φ2是域关系演算公式,则 ┐φ1,φ1∧ φ2,φ1∨ φ2也是域关
系演算公式,
3,若 φ是域关系演算公式,则 t i(φ) 也是域关系演算公式,
4,若 φ是域关系演算公式,则 t i(φ)也是域关系演算公式,
5,公式中运算符的优先次序为,
( ) 算术比较符 量词 ( ) (┐ ∧ ∨ )
6,有限次地使用上述五条规则得到的公式是域关系演算公式,
E
A
A E
域演算表达式 {x1,x2,…,x k|φ(x1,x2,…,x k ) }表示所有使得 φ为真的
那些 x1,x2,…,x k 组成的元组的集合,
四, 关系代数表达式、元组演算表达式和域关系演算
表达式的关系
1,每一个关系代数表达式有一个等价的安全的元组演算表达式,
2,每一个安全的元组演算表达式有一个等价的安全的域演算表达式,
3,每一个安全的域演算表达式有一个等价的关系代数表达式,
第二章结束