第 3章 关系数据库
? 1970年 IBM公司 E.F.Codd的多篇论文提出关系
数据库理论。
? 20世纪 80年代以来,RDBMS已成为应用主流。
? RDBMS以关系代数和集合论为基础,有严谨的
数学基础。
? RDBMS 有,Oracle,Sybase,Informix,DB2、
SQL Server,Acess,Fox系列等。
? RDBMS仍在向前发展。
? 本章主要介绍关系数据库的基本概念和原理。
第 3章 关系数据库
? 本章分七节:
? 3.1 关系数据结构
? 3.2 关系数据库的完整性
? 3.3 关系数据库操作概述
? 3.4 关系代数语言
? 3.5 关系数据库管理系统( RDBMS)
? 3.6 小结
? 3.7 习题
3.1 关系数据结构
? 关系数据结构是:二维表
? 一个关系数据库可包含多张二维表,表与表间
通过属性发生联系。
? 关系数据结构包含很多概念。
? 本节详细介绍关系数据结构的概念。理解这些
概念是学习关系数据库的基础。
3.1 关系数据结构
? 3.1.1 关系数据模型回顾
? 3.1.2 域
? 3.1.3 笛卡尔积
? 3.1.4 关系数据结构 --关系
? 3.1.5 关系的相关概念
? 3.1.6 关系的性质
? 3.1.7 关系模式
? 3.1.8 关系数据库模式例
3.1.1 关系模型回顾
? 关系数据库系统是支持关系模型的数据库系统。
? 关系数据结构为二维表。关系操作是集合操作,操作的对
象和结果都是集合,一次一集合,而非关系一次一记录。常
用操作类型有,查询(选择、投影、连接、除、并、交、
差)、增、删、改。
? 关系操作语言有,(1)关系代数语言(如 ISBL); (2)关系演
算语言(元组关系演算语言,如 APLHA,QUEL。 域关系演
算语言,如 QBE); (3)结构化查询语言 SQL( structure
query language),包括 DDL,DML,DCL。
? 关系完整性约束,实体完整性、参照完整性、用户自定义
完整性。
3.1.2 域 (domain)
? 域是一组具有相同数据类型的值的集合。
? 例如:所有整数、实数、。
? 在设置关系属性时,必须指定属性的域。
? 由域可构成域完整性。
3.1.3 笛卡尔积
? 笛卡尔积, 给定一组域 D1,D2…,Dn,这些域可以完全不
同,也可以部分或全部相同,D1,D2…,Dn的笛卡尔积
为,
? D1× D2 × …, × Dn={(d1,d2…,,dn)|di∈ Dj,j=1,2…,n}
? 其中每个元素 (d1,d2…,,dn)叫作一个 n元组( n-tuple),
元素中的每个值 di叫作一个分量( component)。
? 若 Di(i=1,2,…, n)为有限集,其基数为 mi (i=1,
2,…, n),则 D1× D2 × …, × Dn的基数为:
n
m =∏ mi
i=1
3.1.4 关系数据结构 --关系
? 故笛卡尔积可表示一个二维表,表中的每行对
应一个元组,表中的每列对应一个域,
? 笛卡尔积中许多元组无实际意义,从中取出有
实际意义的元组便构成关系。
? 定义,D1× D2 × …, × Dn 的子集叫作域 D1,
D2…,Dn上的关系,用 R( D1,D2…,Dn) 表示。
R表示关系,n是关系的目或度。关系中的每个
元素是关系中的元组,通常用 t 表示。
3.1.5 关系的相关概念
? 元组:关系是笛卡尔积的子集,是一个二维表,表
的每行对应一个元组,
? 属性:每列对应一个域(称为属性)。
? 候选码:关系中能唯一地标识一个元组的属性组。
? 主码:从关系的多个候选码中选定一个为主码,主
码的诸属性叫主属性。
? 非码属性:不包含在任何候选码中的属性称为非码
属性。
? 全码:关系模式的候选码由所有属性构成,称为全
码( all-key)。
? 关系类型:基本关系(基本表)、查询表和视图表。
3.1.6 基本关系的性质
? ①列是同质的,即每一列中的分量是同一类型的数据,
来自同一个域。
? ②不同的列可出自同一个域,称其中的每一列为一个
属性,不同的属性要给予不同的属性名
? ③列的顺序无所谓,即列的顺序可以任意交换。
? ④任意两个元组不能完全相同。
? ⑤行的顺序无所谓,即行的顺序可以任意交换。
? ⑥分量必须取原子值,即每个分量必须是不可再分的
数据项。
3.1.6 关系性质 1—— 同质的列
学号 姓名 性别 年龄 曾用名
9901 张三 男 20 张狗子
9902 李四 女 18 李朋
王五 9903 1 19 王麻子
9904 赵六 2 1981/2/28 赵薇
3.1.6 关系性质 2— 不同的属性名
学号 姓名 性别 年龄 姓名
9901 张三 男 20 张狗子
9902 李四 女 18 李朋
9903 王五 男 19 王麻子
9904 赵六 女 20 赵薇
姓名 2
曾用名
3.1.6 关系性质 3— 属性无序
学号 姓名 性别 年龄 曾用名
9901 张三 男 20 张狗子
9902 李四 女 18 李朋
9903 王五 男 19 王麻子
9904 赵六 女 20 赵薇
学号 姓名 曾用名 性别 年龄
9901 张三 张狗子 男 20
9902 李四 李朋 女 18
9903 王五 王麻子 男 19
9904 赵六 赵薇 女 20
3.1.6 关系性质 4— 元组不重复
学号 姓名 性别 年龄 姓名
9901 张三 男 20 张狗子
9902 李四 女 18 李朋
9903 王五 男 19 王麻子
9904 赵六 女 20 赵薇
9901 张三 男 20 张狗子
重复的
元组元组 !
3.1.6 关系性质 5— 元组无序
学号 姓名 性别 年龄
9901 张三 男 20
9902 李四 女 18
9903 王五 男 19
9904 赵六 女 20
学号 姓名 性别 年龄
9904 赵六 女 20
9901 张三 男 20
9903 王五 男 19
9902 李四 女 18
3.1.6 关系性质 6— 分量是原子
父 母 孩子
李男
王男
丁女
肖女
李一
李二
王一
父 母 孩子大 小
李男
王男
丁女
肖女
李一
王一
李二
父 母 孩子
李男
李男
王男
丁女
丁女
肖女
李一
李二
王一
父 母 大孩 小孩
李男
王男
丁女
肖女
李一
王一
李二
非规范化关系
规范化关系
3.1.7 关系模式
? 定义, 关系模式是对关系的描述,表示为 R( U,D,DOM,
F)。 R为关系名,U为属性的集合,D为属性的域,DOM为
属性向域的映象集合。 F为属性间数据的依赖关系集合。
? 关系模式可简记为,R( U) 或 R( A1,A2,…,,An) 。
? 在一个给定的现实世界领域中,相应的所有实体及实体
之间的联系的集合构成一个关系数据库。
? 关系数据库的型称为关系数据库模式,关系数据库的值
是关系模式在某一时刻对应的关系的集合。
? 关系是关系模式在某一时刻的状态和内容,关系模式是
型,关系是值。关系模式是静态的、稳定的。而关系是
动态的、变化的。实际中,常把关系模式和关系统称为
关系。
3.1.8 关系数据库模式例
整个数据
库
某关系的结构
某关系的实例
3.2 关系数据库的完整性
? 完整性是数据模型的一个非常重要的方面。
? 关系数据库从多个方面来保证数据的完整性。在创建
数据库时,需要通过相关的措施来保证以后对数据库
中的数据进行操纵时,数据是正确的、一致的。
? 关系数据库提供:实体完整性、参照完整性、用户定
义的完整性。
? 本节介绍三种完整性最基本的措施。
3.2 关系数据库的完整性
? 3.2.1 实体完整性
? 3.2.2 参照完整性
? 3.2.3 用户定义的完整性
3.2.1 实体完整性
? 1,实体完整性规则, 若属性 A是基本关系 R的
主属性,则属性 A不能取空值。
? 2,注意:是基本关系的所有主属性都不能取空
值,而不仅是主码整体不能取空值。
? 3,如, 选修(学号,课程号,成绩)则,( 学
号,课程号 )为主码,则学号和课程号都不能
取空值。
3.2.1 实体完整性示例:关系键
学号 课程号 成绩
9901
9901
9902
9903
C1
C2
C2
C3
90
80
70
80
学号 姓名 年龄 性别 所在系
9901
9902
9903
9904
张三
李四
王五
赵六
20
18
19
20
男
女
女
男
计算机
计算机
计算机
计算机
3.2.2 外码 --参照完整性
? 外码,设 F是基本关系 R的一个或一组属性,但不是 R的
码,如果 F与基本关系 S的主码 Ks相对应,则称 F是基本关
系 R的外码,并基本关系 R为参照关系,基本关系 S为被
参照关系。关系 R和 S不一定是不同的关系。
? 参照完整性规则:若属性(或属性组) F是基本关系 R的
外码,它与基本关系 S的主码 Ks相对应(基本关系 R和 S不
一定是不同关系),则对于 R中每一个元组在 F上的值必
须为:或者取空值( F的每个属性均为空值);或者等于
S中某个元组的主码值。
3.2.2 外码 --参照完整性示例 1
? 例 1:
学生( 学号,姓名,性别,专业号,年龄)
专业( 专业号,专)
学生关系 --专业号 -->专业关系
? 例 2:
学生( 学号,姓名,性别,专业号,年龄,班
长 )。
班长必须是存在的学生的学号。
3.2.2 参照完整性例 2:外部关系键
学号 姓名 所在系
9901
9902
9903
9904
张三
李四
王五
赵六
计算机
计算机
计算机
计算机
课程号 课程名 学时数
C01
C02
C03
C04
高等数学
数据结构
操作系统
数据库
100
70
80
60
学号 课程号 成绩
9901
9901
9902
9904
9904
C01
C02
C04
C04
C03
90
80
90
85
70
学生关系 课程关系 学习成绩关系
外部键 外部键主键 主键
3.2.2 参照完整性示例 3
职工号 部门编号 姓名 …
9801
9802
9803
9804
9805
01
01
02
03
张三
李四
王五
赵六
钱七
部门编号 部门名称 …
01
02
03
04
经理办公室
人事部
公关部
技术部
职工表 (R2) 部门表 (R1)
主关系键外部关系键
3.2.3 用户定义的完整性 1
? 是针对某一具体关系数据库的约束条件,
? 它反映某一具体应用所涉及的数据必须满足
的语义要求。
? 如规定某一属性取值范围在 0-100之间。
? 可在定义关系结构时设置,还可通过触发器、
规则等来设置。
? 在开发数据库应用系统时,设置用户定义的
完整性是一项非常重要的工作。
3.2.3 用户定义的完整性 2
3.3 关系数据库操作概述
? 关系操作采用集合操作方式, 操作的对象和
结果都是集合, 即操作方式是一次一集合
( set-at-a-time),
? 非关系数据库的操作是一次一记录 (record-
at-a-time)。
? 关系数据库操作涉及:操作内容, 使用语言
及实现方法 。
3.3 关系数据库操作
? 3.3.1 关系操作的内容
? 3.3.2 RDBS基本操作
? 3.3.3 关系数据操作语言
3.3.1 关系操作的内容
? 关系模型常用的操作包括增, 删, 改和查询 。 查询
包括选择, 投影, 连接, 除, 并, 交, 差等 。
? 关系操作包括五个基本操作:
? A.关系的属性指定
? B.关系的元组选择
? C.两个关系的合并
? D.关系中元组的插入
? E.关系中元组的删除 。
3.3.2 RDBS基本操作
? RDBS一般向用户提供四种基本操作功能 。
? 1.数据查询,即查询关系数据库内的数据, 包括单表查询
和多表查询 。 查询包括三个基本操作:一个关系内属性
的指定, 一个关系内元组的选择, 两个关系的合并 。
? 2.数据插入, 即在关系内插入一些新的元组 。
? 3.数据删除, 即在关系内删除一些元组 。
? 4.数据修改, 即在关系内修改一些元组的内容并保存 。
包括两个基本操作, 首先删除数据, 而后插入数据 。
3.3.3 关系数据操作语言
? 操作语言分为两类,一是查询语句,用于描述用户要进行
的各种查询操作;二是非查询语句,用于描述用户要进行
的插入、删除、修改等操作。
? 关系运算体系,所有以关系为运算对象的一组运算符及其
对应运算规则的合称。包括关系代数和关系演算,关系演
算又包括元组演算和域演算。
3.4 关系代数语言
? 关系代数语言是关系运算的数据基础。
? 关系代数语言使用数学公式的形式。
? 本节讲述用它来对关系进行操作。
3.4 关系代数语言
? 3.4.1 关系运算符
? 3.4.2 几个特殊符号
? 3.4.3 传统的关系运算 --并
? 3.4.4 传统的关系运算 --交
? 3.4.5 传统的关系运算 --差
? 3.4.6 传统关系运算 --广义
笛卡尔积
? 4.4.7 传统集合运算例题
? 3.4.8 成绩管理数据库
? 3.4.9 专门关系运算:选择
? 3.4.10 专门关系运算:投影
? 3.4.11 专门关系运算:连接
? 3.4.12 专门关系运算:除
? 3.4.13 练习:用关系代数完
成操作
3.4.1 关系运算符
? 1,集合运算符,∪ 并,— (差),∩ (交)
? 2,专门关系运算符:×,δ,∏,∞,÷、
? 3,比较运算符, >, ≥,<,≤,=,≠
? 4,逻辑运算符,非, ∧ 与,∨ 或
3.4.2 几个特殊符号
( 1) t[Ai],设关系模式为 R(A1,A2,…, An)。 它的一个关系设为 R。
t∈ R表示 t是 R的一个元组。则 t[Ai]表示元组 t中相应于属于性 Ai的一个
分量。
( 2) t[A],若 A={Ai1,Ai2,…, Ain},其 中 Ai1,Ai2,…,
Aik是 Ai1,Ai2,…, Ain中的一部分,则 A称为属性列或域列,-A表
示
—
{Ai1,Ai2,…, Ain}中去掉 {Ai1,Ai2,…, Aik}后剩余的属性组。
t[A]=( t[Ai1],t[Ai2], …, t[Aik] ) 表示元组 t在属性列 A上诸分
量的集合。
( 3) tr ts, R为 n目关系,S为 m目关系。 tr ∈ R,ts ∈ S。 tr ts称为
元组的连接。它是一个( n+m) 列的元组,前 n个分量为R中的一个
n元组,后 m个分量为S中的一个 m元组。
( 4)象集Z x,全定一个关系R(X,Z),X和Z为属性组。当
t[X]=x时,x在R中的象集为:Z x={t[Z]|t ∈ R,t[X]=x},它表示R
中属性组X上值为 x的诸元组在Z上分量的集合。
3.4.3 传统关系运算 — 并
传统关系运算包括:并、交、差、广义笛卡尔积。
1.并:设关系 R和关系 S具有相同的目 n( 即两个关系都有 n
个属性),且相应的属性取自同一个域,则关系 R与关
系 S的并由属于 R或属于 S的元组组成,其结果仍为 n目关
系。记为:
R ∪ S={t | t ∈ R∨ t ∈ S}
SR∪
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
A B C
a1 b1 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
R S R ∪ S
3.4.4 传统关系运算 — 交
3,交:设关系 R和关系 S具有相同的目 n( 即两个关系都有 n
个属性),且相应的属性取自同一个域,则关系 R与关系
S的交由属既于 R又属于 S的元组组成,其结果仍为 n目关
系。记为:
R ∩ S={ t | t ∈ R ∧ t ∈ S }
R ∩ S
A B C
a1 b2 c2
a2 b2 c1
R ∩ SA B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R S
3.4.5 传统关系运算 — 差
2,差:设关系 R和关系 S具有相同的目 n( 即两个关系都有
n个属性),且相应的属性取自同一个域,则关系 R与关
系 S的差由属于 R而不属于 S的元组组成,其结果仍为 n
目关系。记为:
R — S={t | t ∈ R ∧ - t ∈ S}
R-S
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R S
A B C
a1 b1 c1
R — S
3.4.6 传统关系运算 — 广义笛卡尔积
4、广义笛卡尔积:两个分别为 n目和 m目的关系 R和 S的广
义笛卡尔积是一个( n+m) 列的元组的集合。元组的前
n列是关系 R的一个元组,后 m列是关系 S的一个元组。
若 R有 k1个元组,S有 k2个元组,则关系 R和关系 S的广
义笛卡尔积有 k1× k2个元组。记为:
R × S={trts | tr ∈ R ∧ ts ∈ S}
R × S
3.4.6 广义笛卡尔积例
A B C A B C
a1 b1 c1 a1 b2 c2
a1 b1 c1 a1 b3 C2
a1 b1 c1 a2 b2 C1
a1 b2 c2 a1 b2 c2
a1 b2 c2 a1 b3 C2
a1 b2 c2 a2 b2 C1
a2 b2 c1 a1 b2 c2
a2 b2 c1 a1 b3 C2
a2 b2 c1 a2 b2 C1
R× S
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
3.4.7 传统集合运算例题
A B C
a1 b2 c2
a2 b2 c1
R× S
R — S
R ∩ S
R ∪ S
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
A B C A B C
a1 b1 c1 a1 b2 c2
a1 b1 c1 a1 b3 C2
a1 b1 c1 a2 b2 C1
a1 b2 c2 a1 b2 c2
a1 b2 c2 a1 b3 C2
a1 b2 c2 a2 b2 C1
a2 b2 c1 a1 b2 c2
a2 b2 c1 a1 b3 C2
a2 b2 c1 a2 b2 C1
A B C
a1 b1 c1
A B C
a1 b1 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
3.4.8 成绩管理数据库
? 例:在一个学生课程关系数据库中,包括学生
关系 student,课程关系 course,选修关系 SC,
数据结构如下:
? 1.学生,student
( sno,sname,ssex,sage,sdept),依次表示
学号,姓名,性别,年龄,示所在系。
? 2.课程,course(cno,cname,cpno,ccredit),
依次表示课程号,课程名,先行课程号,学分。
? 3.选修,SC(sno,cno,grade),依次表示学号,
课程号,成绩。
3.4.9 专门的关系运算 --选择
在关系 R中选择满中给定条件的诸记录,记作:
δF( R) ={t | t ∈ R ∧ F(t)=‘真 ’ }
F表示选择条件,为一逻辑表达式,基本形式为
X1 θ Y1[ф X2 θ Y2]……
( 1)查询信息管理系( IM) 的全体学生:
δsdept=‘IM’(student)
(2) 查询年龄等于 20岁的男生:
δsage= 20 ∧ ssex=‘男’ (student)
3.4.10 专门的关系运算 --投影
关系 R中的投影是从 R中选择出若干属性列组成新的关
系。记作
П A( R) ={ t [A] | t ∈ R } A为 R中的属性列。
( 3)查询学生表中的姓名及所在系:
П sname,sdept (student)
( 4)查询学生表中年龄小于 20岁的学生的姓名及所在系:
П sname,sdept (δsage= 20 ( student) )
3.4.11 专门的关系运算 --连接
? 从两个关系的笛卡尔积中选取属性间满足一定条
件的元组。记作,
R ∞ S={t rts | t r∈ R ∧ ts ∈ S ∧ tr[A] θ ts[B]}
AθB
? A和 B分别为 R和 S上度数相等且可比的属性组。 Θ
为比较运算符。连接运算从 R和 S的笛卡尔积 R ×
S中选取( R关系)在 A属性组上的值与( S关系)
在 B属性组上的值满足比较关系 θ 的元组。
3.4.11 专门关系运算 --连接分类
( 1) 等值连接:
R ∞ S={t rts | t r∈ R ∧ ts ∈ S ∧ tr[A] = ts[B]}
A=B
( 2) 自然连接,A和 B两属性组相同,并在结果中将重复的
值去掉。记作,
R ∞ S={t rts | t r∈ R ∧ ts ∈ S ∧ tr[A] = ts[B]}
3.4.11 连接运算示例 (已知 R和 S)
A B C
a1 b1 5
a1 b2 6
a2 b3 8
a2 b4 12
B E
b1 3
b2 7
b3 10
b3 2
b5 2
R S A R.B C S.B E
a1 b1 5 b2 7
a1 b1 5 b3 10
a1 b2 6 b2 7
a1 b2 6 b3 10
a2 b3 8 b3 10
R ∞ S
C<E
A R.B C S.B E
a1 b1 5 b1 3
a1 b2 6 b2 7
a2 b3 8 b3 10
a2 b3 8 b3 2
R ∞ S
R.b=S.b
A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
R ∞ S
给定关系 R( X,Y) 和 S( Y,Z),其中 X,Y,Z为属性组,
R中的 Y与 S中的 Y可以有不同的属性名,但必须出自同一域,
R与 S的除运算得到一个新关系 P( X),P是 R中满足下列条
件的元组在 X属性列上的投影:元组在 X上分量值 x的象集
Yx包含 S中 Y上投影的集合。记作:
R ÷ S={t r[X] | t r∈ R ∧ Yx > Пy(S)}
其中 Yx为 x在 R中的象集,x=tr[X]
除运算同时从行和列的角度进行运算。
3.4.12 专门的关系运算 --除
3.4.12 专门的关系运算 --除例子
例:已知R和S,则 R ÷ S的值为
在R中,只有 a1的象集{( b1,c2),( b2,c3),( b2,c1)}
包含了S
R S R ÷ SA B C
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a2 b2 c3
a1 b2 c1
B C D
b1 c2 d1
b2 c3 d1
b2 c1 d2
A
a1
3.4.13 练习:用关系代数完成操作
对三个关系模式:
student( sno,sname,ssex,sage,sdept)
course(cno,cname,cpno,ccredit),
SCG(sno,cno,grade),
1, 查询至少选修了2号课程和8号课程的学生姓名。
2, 查询张红的年龄。
3, 查询李明同学不及格的课程名称。
4, 查询选修了, 计算机网络, 的学生姓名。
5, 查询, 计算机网络, 成绩在90分以上的学生姓名。
3.5 关系数据库管理系统
? 关系数据库管理系统,即 RDBMS。
? RDBMS支持关系模型。
? 当前大部分的 DBMS都是 RDBMS。
? RDBMS仍在发展中,性能不断增强。
? 本节讲述的标准要求以及关系数据库管理系统
的分类。
3.5 关系数据库管理系统
? 4.5.1 RDBMS的标准
? 4.5.2 RDBMS的分类
? 4.5.3 表式系统和最小关系系统
? 4.5.4 关系完备系统和全关系系统
? 4.5.5 当前主要的 RDBMS
3.5.1 RDBMS的标准
? 支持关系模型的数据库管理系统,但并不是必
须完全支持。
? RDBMS要求至少支持:
? (1) 关系数据结构,即数据库是由表构成的关
系数据库,数据库中只有表结构;
? (2) 选择、投影和 (自然 )连接运算,并且这些
运算不要求用户定义任何物理存取路径。
3.5.2 RDBMS的分类
? 根据对关系模型的支持程度的不同,分四类:表
式系统、最少关系系统、关系完备系统、全关系
系统。
表式系统 最少关系系统 关系完备系统 全关系系统
3.5.3 表式系统和最小关系系统
? 表式系统:仅支持关系数据结构 (即二维表 ),
不支持集合级的操作 。 表式系统实际上不能算
关系系统 。
? 最小关系系统:必须支持关系数据结构和选择,
投影, 连接三种关系操作, 如小型微机关系系
统 FoxBASE,FoxPro等就属于这一类 。
3.5.4 完备系统和全关系系统
? 关系完备系统:是指支持关系数据结构和所有的
关系代数操作 (功能上与关系代数等价 )的系统。
如 DB2,ORACLE等中大型关系系统就属于关系完
备系统。
? 全关系系统:支持关系模型的所有特征,特别是
数据结构中域的概念,实体完整性和参照完整性。
虽然 DB2,ORACLE等系统已经接近这个目标,但
到目前为止尚无一个系统是全关系系统。
3.5.5 当前主要的 RDBMS
? Access
? VFP.net
? SQL Server 7.0,2000,2002
? Oracle 8i,9i,10g
? DB2
? MySQL
3.6 小结
? 关系运算理论是关系数据库查询语言的理论基础 。
? 关系定义为元组的集合, 关系具有六条特殊的性质 。
? 关系模型必须遵循实体完整性, 参照完整性和用户定
义的完整性规则 。
? 必须理解域, 码, 候选码, 外部码, 笛卡尔, 元组,
属性等概念 。
? 关系代数的五个基本操作 (构成一个完备集 )以及四个
组合操作, 是本章的重点 。 要能进行两方面的运用:
一是计算关系代数表达式的值;二是根据查询语句写
出关系代数表达式的表示形式 。
? 查询优化是指系统对关系代数表达式要进行优化组合,
以提高系统效率。
3.7 习题
有 S,C,SC三个关系,用关系代数表示下列查询:
? (1) 检索 Li老师所授课程的课程号, 课程名 。
? (2) 检索年龄大于 23岁的男学生的学号与姓名 。
? (3) 检索学号为 S3学生所学课程的课程名与任课教师名 。
? (4) 检索至少选修 LIU老师所授课程中一门课的女生姓名 。
? (5) 检索 WANG同学不学的课程的课程号 。
? (6) 检索至少选修两门课程的学生学号 。
? (7) 检索全部学生郡选修的课程的课程号勺课程名 。
? (8) 检索选修课程包含 Li老师所授课程的学生学号 。
? 1970年 IBM公司 E.F.Codd的多篇论文提出关系
数据库理论。
? 20世纪 80年代以来,RDBMS已成为应用主流。
? RDBMS以关系代数和集合论为基础,有严谨的
数学基础。
? RDBMS 有,Oracle,Sybase,Informix,DB2、
SQL Server,Acess,Fox系列等。
? RDBMS仍在向前发展。
? 本章主要介绍关系数据库的基本概念和原理。
第 3章 关系数据库
? 本章分七节:
? 3.1 关系数据结构
? 3.2 关系数据库的完整性
? 3.3 关系数据库操作概述
? 3.4 关系代数语言
? 3.5 关系数据库管理系统( RDBMS)
? 3.6 小结
? 3.7 习题
3.1 关系数据结构
? 关系数据结构是:二维表
? 一个关系数据库可包含多张二维表,表与表间
通过属性发生联系。
? 关系数据结构包含很多概念。
? 本节详细介绍关系数据结构的概念。理解这些
概念是学习关系数据库的基础。
3.1 关系数据结构
? 3.1.1 关系数据模型回顾
? 3.1.2 域
? 3.1.3 笛卡尔积
? 3.1.4 关系数据结构 --关系
? 3.1.5 关系的相关概念
? 3.1.6 关系的性质
? 3.1.7 关系模式
? 3.1.8 关系数据库模式例
3.1.1 关系模型回顾
? 关系数据库系统是支持关系模型的数据库系统。
? 关系数据结构为二维表。关系操作是集合操作,操作的对
象和结果都是集合,一次一集合,而非关系一次一记录。常
用操作类型有,查询(选择、投影、连接、除、并、交、
差)、增、删、改。
? 关系操作语言有,(1)关系代数语言(如 ISBL); (2)关系演
算语言(元组关系演算语言,如 APLHA,QUEL。 域关系演
算语言,如 QBE); (3)结构化查询语言 SQL( structure
query language),包括 DDL,DML,DCL。
? 关系完整性约束,实体完整性、参照完整性、用户自定义
完整性。
3.1.2 域 (domain)
? 域是一组具有相同数据类型的值的集合。
? 例如:所有整数、实数、。
? 在设置关系属性时,必须指定属性的域。
? 由域可构成域完整性。
3.1.3 笛卡尔积
? 笛卡尔积, 给定一组域 D1,D2…,Dn,这些域可以完全不
同,也可以部分或全部相同,D1,D2…,Dn的笛卡尔积
为,
? D1× D2 × …, × Dn={(d1,d2…,,dn)|di∈ Dj,j=1,2…,n}
? 其中每个元素 (d1,d2…,,dn)叫作一个 n元组( n-tuple),
元素中的每个值 di叫作一个分量( component)。
? 若 Di(i=1,2,…, n)为有限集,其基数为 mi (i=1,
2,…, n),则 D1× D2 × …, × Dn的基数为:
n
m =∏ mi
i=1
3.1.4 关系数据结构 --关系
? 故笛卡尔积可表示一个二维表,表中的每行对
应一个元组,表中的每列对应一个域,
? 笛卡尔积中许多元组无实际意义,从中取出有
实际意义的元组便构成关系。
? 定义,D1× D2 × …, × Dn 的子集叫作域 D1,
D2…,Dn上的关系,用 R( D1,D2…,Dn) 表示。
R表示关系,n是关系的目或度。关系中的每个
元素是关系中的元组,通常用 t 表示。
3.1.5 关系的相关概念
? 元组:关系是笛卡尔积的子集,是一个二维表,表
的每行对应一个元组,
? 属性:每列对应一个域(称为属性)。
? 候选码:关系中能唯一地标识一个元组的属性组。
? 主码:从关系的多个候选码中选定一个为主码,主
码的诸属性叫主属性。
? 非码属性:不包含在任何候选码中的属性称为非码
属性。
? 全码:关系模式的候选码由所有属性构成,称为全
码( all-key)。
? 关系类型:基本关系(基本表)、查询表和视图表。
3.1.6 基本关系的性质
? ①列是同质的,即每一列中的分量是同一类型的数据,
来自同一个域。
? ②不同的列可出自同一个域,称其中的每一列为一个
属性,不同的属性要给予不同的属性名
? ③列的顺序无所谓,即列的顺序可以任意交换。
? ④任意两个元组不能完全相同。
? ⑤行的顺序无所谓,即行的顺序可以任意交换。
? ⑥分量必须取原子值,即每个分量必须是不可再分的
数据项。
3.1.6 关系性质 1—— 同质的列
学号 姓名 性别 年龄 曾用名
9901 张三 男 20 张狗子
9902 李四 女 18 李朋
王五 9903 1 19 王麻子
9904 赵六 2 1981/2/28 赵薇
3.1.6 关系性质 2— 不同的属性名
学号 姓名 性别 年龄 姓名
9901 张三 男 20 张狗子
9902 李四 女 18 李朋
9903 王五 男 19 王麻子
9904 赵六 女 20 赵薇
姓名 2
曾用名
3.1.6 关系性质 3— 属性无序
学号 姓名 性别 年龄 曾用名
9901 张三 男 20 张狗子
9902 李四 女 18 李朋
9903 王五 男 19 王麻子
9904 赵六 女 20 赵薇
学号 姓名 曾用名 性别 年龄
9901 张三 张狗子 男 20
9902 李四 李朋 女 18
9903 王五 王麻子 男 19
9904 赵六 赵薇 女 20
3.1.6 关系性质 4— 元组不重复
学号 姓名 性别 年龄 姓名
9901 张三 男 20 张狗子
9902 李四 女 18 李朋
9903 王五 男 19 王麻子
9904 赵六 女 20 赵薇
9901 张三 男 20 张狗子
重复的
元组元组 !
3.1.6 关系性质 5— 元组无序
学号 姓名 性别 年龄
9901 张三 男 20
9902 李四 女 18
9903 王五 男 19
9904 赵六 女 20
学号 姓名 性别 年龄
9904 赵六 女 20
9901 张三 男 20
9903 王五 男 19
9902 李四 女 18
3.1.6 关系性质 6— 分量是原子
父 母 孩子
李男
王男
丁女
肖女
李一
李二
王一
父 母 孩子大 小
李男
王男
丁女
肖女
李一
王一
李二
父 母 孩子
李男
李男
王男
丁女
丁女
肖女
李一
李二
王一
父 母 大孩 小孩
李男
王男
丁女
肖女
李一
王一
李二
非规范化关系
规范化关系
3.1.7 关系模式
? 定义, 关系模式是对关系的描述,表示为 R( U,D,DOM,
F)。 R为关系名,U为属性的集合,D为属性的域,DOM为
属性向域的映象集合。 F为属性间数据的依赖关系集合。
? 关系模式可简记为,R( U) 或 R( A1,A2,…,,An) 。
? 在一个给定的现实世界领域中,相应的所有实体及实体
之间的联系的集合构成一个关系数据库。
? 关系数据库的型称为关系数据库模式,关系数据库的值
是关系模式在某一时刻对应的关系的集合。
? 关系是关系模式在某一时刻的状态和内容,关系模式是
型,关系是值。关系模式是静态的、稳定的。而关系是
动态的、变化的。实际中,常把关系模式和关系统称为
关系。
3.1.8 关系数据库模式例
整个数据
库
某关系的结构
某关系的实例
3.2 关系数据库的完整性
? 完整性是数据模型的一个非常重要的方面。
? 关系数据库从多个方面来保证数据的完整性。在创建
数据库时,需要通过相关的措施来保证以后对数据库
中的数据进行操纵时,数据是正确的、一致的。
? 关系数据库提供:实体完整性、参照完整性、用户定
义的完整性。
? 本节介绍三种完整性最基本的措施。
3.2 关系数据库的完整性
? 3.2.1 实体完整性
? 3.2.2 参照完整性
? 3.2.3 用户定义的完整性
3.2.1 实体完整性
? 1,实体完整性规则, 若属性 A是基本关系 R的
主属性,则属性 A不能取空值。
? 2,注意:是基本关系的所有主属性都不能取空
值,而不仅是主码整体不能取空值。
? 3,如, 选修(学号,课程号,成绩)则,( 学
号,课程号 )为主码,则学号和课程号都不能
取空值。
3.2.1 实体完整性示例:关系键
学号 课程号 成绩
9901
9901
9902
9903
C1
C2
C2
C3
90
80
70
80
学号 姓名 年龄 性别 所在系
9901
9902
9903
9904
张三
李四
王五
赵六
20
18
19
20
男
女
女
男
计算机
计算机
计算机
计算机
3.2.2 外码 --参照完整性
? 外码,设 F是基本关系 R的一个或一组属性,但不是 R的
码,如果 F与基本关系 S的主码 Ks相对应,则称 F是基本关
系 R的外码,并基本关系 R为参照关系,基本关系 S为被
参照关系。关系 R和 S不一定是不同的关系。
? 参照完整性规则:若属性(或属性组) F是基本关系 R的
外码,它与基本关系 S的主码 Ks相对应(基本关系 R和 S不
一定是不同关系),则对于 R中每一个元组在 F上的值必
须为:或者取空值( F的每个属性均为空值);或者等于
S中某个元组的主码值。
3.2.2 外码 --参照完整性示例 1
? 例 1:
学生( 学号,姓名,性别,专业号,年龄)
专业( 专业号,专)
学生关系 --专业号 -->专业关系
? 例 2:
学生( 学号,姓名,性别,专业号,年龄,班
长 )。
班长必须是存在的学生的学号。
3.2.2 参照完整性例 2:外部关系键
学号 姓名 所在系
9901
9902
9903
9904
张三
李四
王五
赵六
计算机
计算机
计算机
计算机
课程号 课程名 学时数
C01
C02
C03
C04
高等数学
数据结构
操作系统
数据库
100
70
80
60
学号 课程号 成绩
9901
9901
9902
9904
9904
C01
C02
C04
C04
C03
90
80
90
85
70
学生关系 课程关系 学习成绩关系
外部键 外部键主键 主键
3.2.2 参照完整性示例 3
职工号 部门编号 姓名 …
9801
9802
9803
9804
9805
01
01
02
03
张三
李四
王五
赵六
钱七
部门编号 部门名称 …
01
02
03
04
经理办公室
人事部
公关部
技术部
职工表 (R2) 部门表 (R1)
主关系键外部关系键
3.2.3 用户定义的完整性 1
? 是针对某一具体关系数据库的约束条件,
? 它反映某一具体应用所涉及的数据必须满足
的语义要求。
? 如规定某一属性取值范围在 0-100之间。
? 可在定义关系结构时设置,还可通过触发器、
规则等来设置。
? 在开发数据库应用系统时,设置用户定义的
完整性是一项非常重要的工作。
3.2.3 用户定义的完整性 2
3.3 关系数据库操作概述
? 关系操作采用集合操作方式, 操作的对象和
结果都是集合, 即操作方式是一次一集合
( set-at-a-time),
? 非关系数据库的操作是一次一记录 (record-
at-a-time)。
? 关系数据库操作涉及:操作内容, 使用语言
及实现方法 。
3.3 关系数据库操作
? 3.3.1 关系操作的内容
? 3.3.2 RDBS基本操作
? 3.3.3 关系数据操作语言
3.3.1 关系操作的内容
? 关系模型常用的操作包括增, 删, 改和查询 。 查询
包括选择, 投影, 连接, 除, 并, 交, 差等 。
? 关系操作包括五个基本操作:
? A.关系的属性指定
? B.关系的元组选择
? C.两个关系的合并
? D.关系中元组的插入
? E.关系中元组的删除 。
3.3.2 RDBS基本操作
? RDBS一般向用户提供四种基本操作功能 。
? 1.数据查询,即查询关系数据库内的数据, 包括单表查询
和多表查询 。 查询包括三个基本操作:一个关系内属性
的指定, 一个关系内元组的选择, 两个关系的合并 。
? 2.数据插入, 即在关系内插入一些新的元组 。
? 3.数据删除, 即在关系内删除一些元组 。
? 4.数据修改, 即在关系内修改一些元组的内容并保存 。
包括两个基本操作, 首先删除数据, 而后插入数据 。
3.3.3 关系数据操作语言
? 操作语言分为两类,一是查询语句,用于描述用户要进行
的各种查询操作;二是非查询语句,用于描述用户要进行
的插入、删除、修改等操作。
? 关系运算体系,所有以关系为运算对象的一组运算符及其
对应运算规则的合称。包括关系代数和关系演算,关系演
算又包括元组演算和域演算。
3.4 关系代数语言
? 关系代数语言是关系运算的数据基础。
? 关系代数语言使用数学公式的形式。
? 本节讲述用它来对关系进行操作。
3.4 关系代数语言
? 3.4.1 关系运算符
? 3.4.2 几个特殊符号
? 3.4.3 传统的关系运算 --并
? 3.4.4 传统的关系运算 --交
? 3.4.5 传统的关系运算 --差
? 3.4.6 传统关系运算 --广义
笛卡尔积
? 4.4.7 传统集合运算例题
? 3.4.8 成绩管理数据库
? 3.4.9 专门关系运算:选择
? 3.4.10 专门关系运算:投影
? 3.4.11 专门关系运算:连接
? 3.4.12 专门关系运算:除
? 3.4.13 练习:用关系代数完
成操作
3.4.1 关系运算符
? 1,集合运算符,∪ 并,— (差),∩ (交)
? 2,专门关系运算符:×,δ,∏,∞,÷、
? 3,比较运算符, >, ≥,<,≤,=,≠
? 4,逻辑运算符,非, ∧ 与,∨ 或
3.4.2 几个特殊符号
( 1) t[Ai],设关系模式为 R(A1,A2,…, An)。 它的一个关系设为 R。
t∈ R表示 t是 R的一个元组。则 t[Ai]表示元组 t中相应于属于性 Ai的一个
分量。
( 2) t[A],若 A={Ai1,Ai2,…, Ain},其 中 Ai1,Ai2,…,
Aik是 Ai1,Ai2,…, Ain中的一部分,则 A称为属性列或域列,-A表
示
—
{Ai1,Ai2,…, Ain}中去掉 {Ai1,Ai2,…, Aik}后剩余的属性组。
t[A]=( t[Ai1],t[Ai2], …, t[Aik] ) 表示元组 t在属性列 A上诸分
量的集合。
( 3) tr ts, R为 n目关系,S为 m目关系。 tr ∈ R,ts ∈ S。 tr ts称为
元组的连接。它是一个( n+m) 列的元组,前 n个分量为R中的一个
n元组,后 m个分量为S中的一个 m元组。
( 4)象集Z x,全定一个关系R(X,Z),X和Z为属性组。当
t[X]=x时,x在R中的象集为:Z x={t[Z]|t ∈ R,t[X]=x},它表示R
中属性组X上值为 x的诸元组在Z上分量的集合。
3.4.3 传统关系运算 — 并
传统关系运算包括:并、交、差、广义笛卡尔积。
1.并:设关系 R和关系 S具有相同的目 n( 即两个关系都有 n
个属性),且相应的属性取自同一个域,则关系 R与关
系 S的并由属于 R或属于 S的元组组成,其结果仍为 n目关
系。记为:
R ∪ S={t | t ∈ R∨ t ∈ S}
SR∪
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
A B C
a1 b1 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
R S R ∪ S
3.4.4 传统关系运算 — 交
3,交:设关系 R和关系 S具有相同的目 n( 即两个关系都有 n
个属性),且相应的属性取自同一个域,则关系 R与关系
S的交由属既于 R又属于 S的元组组成,其结果仍为 n目关
系。记为:
R ∩ S={ t | t ∈ R ∧ t ∈ S }
R ∩ S
A B C
a1 b2 c2
a2 b2 c1
R ∩ SA B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R S
3.4.5 传统关系运算 — 差
2,差:设关系 R和关系 S具有相同的目 n( 即两个关系都有
n个属性),且相应的属性取自同一个域,则关系 R与关
系 S的差由属于 R而不属于 S的元组组成,其结果仍为 n
目关系。记为:
R — S={t | t ∈ R ∧ - t ∈ S}
R-S
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R S
A B C
a1 b1 c1
R — S
3.4.6 传统关系运算 — 广义笛卡尔积
4、广义笛卡尔积:两个分别为 n目和 m目的关系 R和 S的广
义笛卡尔积是一个( n+m) 列的元组的集合。元组的前
n列是关系 R的一个元组,后 m列是关系 S的一个元组。
若 R有 k1个元组,S有 k2个元组,则关系 R和关系 S的广
义笛卡尔积有 k1× k2个元组。记为:
R × S={trts | tr ∈ R ∧ ts ∈ S}
R × S
3.4.6 广义笛卡尔积例
A B C A B C
a1 b1 c1 a1 b2 c2
a1 b1 c1 a1 b3 C2
a1 b1 c1 a2 b2 C1
a1 b2 c2 a1 b2 c2
a1 b2 c2 a1 b3 C2
a1 b2 c2 a2 b2 C1
a2 b2 c1 a1 b2 c2
a2 b2 c1 a1 b3 C2
a2 b2 c1 a2 b2 C1
R× S
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
3.4.7 传统集合运算例题
A B C
a1 b2 c2
a2 b2 c1
R× S
R — S
R ∩ S
R ∪ S
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
A B C A B C
a1 b1 c1 a1 b2 c2
a1 b1 c1 a1 b3 C2
a1 b1 c1 a2 b2 C1
a1 b2 c2 a1 b2 c2
a1 b2 c2 a1 b3 C2
a1 b2 c2 a2 b2 C1
a2 b2 c1 a1 b2 c2
a2 b2 c1 a1 b3 C2
a2 b2 c1 a2 b2 C1
A B C
a1 b1 c1
A B C
a1 b1 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
3.4.8 成绩管理数据库
? 例:在一个学生课程关系数据库中,包括学生
关系 student,课程关系 course,选修关系 SC,
数据结构如下:
? 1.学生,student
( sno,sname,ssex,sage,sdept),依次表示
学号,姓名,性别,年龄,示所在系。
? 2.课程,course(cno,cname,cpno,ccredit),
依次表示课程号,课程名,先行课程号,学分。
? 3.选修,SC(sno,cno,grade),依次表示学号,
课程号,成绩。
3.4.9 专门的关系运算 --选择
在关系 R中选择满中给定条件的诸记录,记作:
δF( R) ={t | t ∈ R ∧ F(t)=‘真 ’ }
F表示选择条件,为一逻辑表达式,基本形式为
X1 θ Y1[ф X2 θ Y2]……
( 1)查询信息管理系( IM) 的全体学生:
δsdept=‘IM’(student)
(2) 查询年龄等于 20岁的男生:
δsage= 20 ∧ ssex=‘男’ (student)
3.4.10 专门的关系运算 --投影
关系 R中的投影是从 R中选择出若干属性列组成新的关
系。记作
П A( R) ={ t [A] | t ∈ R } A为 R中的属性列。
( 3)查询学生表中的姓名及所在系:
П sname,sdept (student)
( 4)查询学生表中年龄小于 20岁的学生的姓名及所在系:
П sname,sdept (δsage= 20 ( student) )
3.4.11 专门的关系运算 --连接
? 从两个关系的笛卡尔积中选取属性间满足一定条
件的元组。记作,
R ∞ S={t rts | t r∈ R ∧ ts ∈ S ∧ tr[A] θ ts[B]}
AθB
? A和 B分别为 R和 S上度数相等且可比的属性组。 Θ
为比较运算符。连接运算从 R和 S的笛卡尔积 R ×
S中选取( R关系)在 A属性组上的值与( S关系)
在 B属性组上的值满足比较关系 θ 的元组。
3.4.11 专门关系运算 --连接分类
( 1) 等值连接:
R ∞ S={t rts | t r∈ R ∧ ts ∈ S ∧ tr[A] = ts[B]}
A=B
( 2) 自然连接,A和 B两属性组相同,并在结果中将重复的
值去掉。记作,
R ∞ S={t rts | t r∈ R ∧ ts ∈ S ∧ tr[A] = ts[B]}
3.4.11 连接运算示例 (已知 R和 S)
A B C
a1 b1 5
a1 b2 6
a2 b3 8
a2 b4 12
B E
b1 3
b2 7
b3 10
b3 2
b5 2
R S A R.B C S.B E
a1 b1 5 b2 7
a1 b1 5 b3 10
a1 b2 6 b2 7
a1 b2 6 b3 10
a2 b3 8 b3 10
R ∞ S
C<E
A R.B C S.B E
a1 b1 5 b1 3
a1 b2 6 b2 7
a2 b3 8 b3 10
a2 b3 8 b3 2
R ∞ S
R.b=S.b
A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
R ∞ S
给定关系 R( X,Y) 和 S( Y,Z),其中 X,Y,Z为属性组,
R中的 Y与 S中的 Y可以有不同的属性名,但必须出自同一域,
R与 S的除运算得到一个新关系 P( X),P是 R中满足下列条
件的元组在 X属性列上的投影:元组在 X上分量值 x的象集
Yx包含 S中 Y上投影的集合。记作:
R ÷ S={t r[X] | t r∈ R ∧ Yx > Пy(S)}
其中 Yx为 x在 R中的象集,x=tr[X]
除运算同时从行和列的角度进行运算。
3.4.12 专门的关系运算 --除
3.4.12 专门的关系运算 --除例子
例:已知R和S,则 R ÷ S的值为
在R中,只有 a1的象集{( b1,c2),( b2,c3),( b2,c1)}
包含了S
R S R ÷ SA B C
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a2 b2 c3
a1 b2 c1
B C D
b1 c2 d1
b2 c3 d1
b2 c1 d2
A
a1
3.4.13 练习:用关系代数完成操作
对三个关系模式:
student( sno,sname,ssex,sage,sdept)
course(cno,cname,cpno,ccredit),
SCG(sno,cno,grade),
1, 查询至少选修了2号课程和8号课程的学生姓名。
2, 查询张红的年龄。
3, 查询李明同学不及格的课程名称。
4, 查询选修了, 计算机网络, 的学生姓名。
5, 查询, 计算机网络, 成绩在90分以上的学生姓名。
3.5 关系数据库管理系统
? 关系数据库管理系统,即 RDBMS。
? RDBMS支持关系模型。
? 当前大部分的 DBMS都是 RDBMS。
? RDBMS仍在发展中,性能不断增强。
? 本节讲述的标准要求以及关系数据库管理系统
的分类。
3.5 关系数据库管理系统
? 4.5.1 RDBMS的标准
? 4.5.2 RDBMS的分类
? 4.5.3 表式系统和最小关系系统
? 4.5.4 关系完备系统和全关系系统
? 4.5.5 当前主要的 RDBMS
3.5.1 RDBMS的标准
? 支持关系模型的数据库管理系统,但并不是必
须完全支持。
? RDBMS要求至少支持:
? (1) 关系数据结构,即数据库是由表构成的关
系数据库,数据库中只有表结构;
? (2) 选择、投影和 (自然 )连接运算,并且这些
运算不要求用户定义任何物理存取路径。
3.5.2 RDBMS的分类
? 根据对关系模型的支持程度的不同,分四类:表
式系统、最少关系系统、关系完备系统、全关系
系统。
表式系统 最少关系系统 关系完备系统 全关系系统
3.5.3 表式系统和最小关系系统
? 表式系统:仅支持关系数据结构 (即二维表 ),
不支持集合级的操作 。 表式系统实际上不能算
关系系统 。
? 最小关系系统:必须支持关系数据结构和选择,
投影, 连接三种关系操作, 如小型微机关系系
统 FoxBASE,FoxPro等就属于这一类 。
3.5.4 完备系统和全关系系统
? 关系完备系统:是指支持关系数据结构和所有的
关系代数操作 (功能上与关系代数等价 )的系统。
如 DB2,ORACLE等中大型关系系统就属于关系完
备系统。
? 全关系系统:支持关系模型的所有特征,特别是
数据结构中域的概念,实体完整性和参照完整性。
虽然 DB2,ORACLE等系统已经接近这个目标,但
到目前为止尚无一个系统是全关系系统。
3.5.5 当前主要的 RDBMS
? Access
? VFP.net
? SQL Server 7.0,2000,2002
? Oracle 8i,9i,10g
? DB2
? MySQL
3.6 小结
? 关系运算理论是关系数据库查询语言的理论基础 。
? 关系定义为元组的集合, 关系具有六条特殊的性质 。
? 关系模型必须遵循实体完整性, 参照完整性和用户定
义的完整性规则 。
? 必须理解域, 码, 候选码, 外部码, 笛卡尔, 元组,
属性等概念 。
? 关系代数的五个基本操作 (构成一个完备集 )以及四个
组合操作, 是本章的重点 。 要能进行两方面的运用:
一是计算关系代数表达式的值;二是根据查询语句写
出关系代数表达式的表示形式 。
? 查询优化是指系统对关系代数表达式要进行优化组合,
以提高系统效率。
3.7 习题
有 S,C,SC三个关系,用关系代数表示下列查询:
? (1) 检索 Li老师所授课程的课程号, 课程名 。
? (2) 检索年龄大于 23岁的男学生的学号与姓名 。
? (3) 检索学号为 S3学生所学课程的课程名与任课教师名 。
? (4) 检索至少选修 LIU老师所授课程中一门课的女生姓名 。
? (5) 检索 WANG同学不学的课程的课程号 。
? (6) 检索至少选修两门课程的学生学号 。
? (7) 检索全部学生郡选修的课程的课程号勺课程名 。
? (8) 检索选修课程包含 Li老师所授课程的学生学号 。