第2章 关系模型与关系数据库
第2章关系数据库习题参考答案
第2章关系数据库习题参考答案1、试述关系模型的三个组成部分。
(46页)答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2、试述关系数据语言的特点和分类。
(47页)答:关系数据语言可以分为三类:A、关系代数语言。
B、关系演算语言:元组关系演算语言和域关系演算语言。
C、SQL:具有关系代数和关系演算双重特点的语言。
这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
2、定义并理解下列术语,说明它们联系与区别:(P46---50页)(1)域,笛卡尔积,关系,元组,属性(2)主码,候选码,外部码(3)关系模式,关系,关系数据库3、试述关系模型的完整性规则(53页),在参照完整性中,为什么外部码属性也可以为空?什么情况下才可以为空?(55页)答:实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。
(P55页)若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:●或者取空值(F的每个属性值均为空值);●或者等于S中某个元组的主码值。
即属性F本身不是主属性,则可以取空值,否则不能取空值。
5.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:1)求供应工程J1零件的供应商号码SNO:πSno(σSno=‘J1’(SPJ))2)求供应工程J1零件P1的供应商号码SNO:πSno(σSno=‘J1’∧Pno=‘P1‘(SPJ))3)求供应工程J1零件为红色的供应商号码SNO:πSno(σPno=‘P1‘(σCOLOR=’红‘(P)∞SPJ))4)求没有使用天津供应商生产的红色零件的工程号JNO:πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘(S∞SPJ∞P)5)求至少用了供应商S1所供应的全部零件的工程号JNO:πJno,Pno(SPJ)÷πPno(σSno=‘S1‘(SPJ))(见P62页例6)6.试述等值连接与自然连接的区别和联系。
第2章 数据库-关系模型1
• 在关系数据模型中一般将数据完整性分为三类
– 实体完整性
– 参照完整性 – 用户定义完整性
需要说明两点
• 关系是元组的集合,集合(关系)中的元素(元组) 是无序的;而元组不是分量di的集合,元组中的分量
是有序的。
例如,在关系中(a,b)≠(b,a),但在集合中{a,b}={b,a}。
• 若一个关系的元组个数是无限的,则该关系称为无限
实体完整性规则
• 实体完整性是要保证关系中的每个元组都是可识别和唯一的。 • 实体完整性规则要求关系中元组的主键值不可以为空值。
• 实体完整性是关系模型必须满足的完整性约束条件,也称作是
关系的不变性。 • 关系数据库管理系统用主键实现实体完整性,这是由关系系统 自动支持的。
对实体完整性规则的几点说明
关系数据语言
• 关系代数语言:如ISBL
• 关系演算语言:
– 元组关系演算语言(如Aplha,Quel)
– 域关系演算语言(如QBE)
• 具有关系代数和关系演算双重特点的语言:如SQL
返回
关系完整性约束
• 在数据库中数据完整性是指保证数据正确的特性。
它包括两方面的内容:
– 与现实世界中应用需求的数据的相容性和正确性; – 数据库内数据之间的相容性和正确性。
部门表(R1)
部门编号 01 02 03 04 部门名称 经理办公室 人事部 公关部 技术部 …
02 03
外部关系键
主关系键
注意事项:
• 外部关键字和相应的主关键字可以不同名,只要 定义在相同值域即可。 • 两个关系(R和S)也可以是同一个关系模式,表 示了属性之间的联系。 • 外部关键字的值是否为空,应视具体问题而定。
第2章 关系数据库数学模型
关系——二维表(行列),实体及其联系 都用关系表示。在用户看来关系数据的逻辑模 型就是一张二维表。
关系数据模型概述(续I)
关系操作 查询: 1)选择Select; 4)除Divide; Intersection; 编辑: 1)增加Insert; Update;
2)投影Project; 3)连接Join; 5)并Union; 6)交 7)差Difference;
三元关系的转换 一般要引入分离关系 如公司、产品和国家之间的m:n:p的三元关系及销 售联系。
关系代数
关系代数概述 关系代数的运算符 集合运算符
并U 交∩ 差 专门的关系运算符
笛卡尔积 × 选择σ 投影π 连接 除 算术比较符
> ≥ < ≤ = ≠ 逻辑运算符
EER模型到关系模式的转换(续IV)
为此,本例中引入一个分离关系On_Load(借 出的书),可以避免空值的出现。 这样,存在以下三个关系模式: Borrower(B#,Name,Address,……) Book(ISBN,Title,……) On_Load(ISBN,B#,Date1,Date2) 只有借出的书才会出现在关系On_Load中, 避免空值 的出现,并把属性Date1和Date2加到 关系On_Load中。
D1 x D2 x…x Dn={(d1,d2,…,dn) | di∈Di, i=1,2,…,n} (d1,d2,…,dn) --------n元组(n-tuple) di--------元组的每一分量(Component) Di为有限集时,其基数为mi,则卡积的基 数为M=m1*m2*…*mn
关系数据库
第二章 关系数据库
事物
实体
元组
行
记录
性质 现实世界
属性 信息世界
属性/域 关系
列 表
数据项 计算机世界
图2-2 不同领域不同属于对应关系
16
§2.1.2 关系的性质
可以通过二维表理解关系的性质。
1.不允许“表中套表”,即表中元组分量必须是原子的。 2.表中各列取自同一个域,即一列中的各个分量具有相同性质。 3.列的次序可以任意交换,不改变关系的实际意义。 4.表中不允许出现相同的两行,即同一实体不能重复出现(表 中的行叫元组,代表一个实体)。 5.行的次序无关紧要,可任意交换。
1、候选键
能唯一标识关系中元组的属性或属性集,则称该属性 或属性集为候选码(Candidate Key),也称候选键。 如 “学生关系”
“选课关系”
20
2、主键
如果一个关系中有多个候选键,可以从中选择一个作为 主键(Primary Key),或称为关键字。 例如:假设在学生关系中没有重名的学生,则“学号” 和“姓名”都可作为学生关系的候选键;
25
在每个关系中,又有其相应的数据库的实例
例如:与学生关系模式对应的数据库中的实例有 如下6个元组
S1 赵亦 女 17 计算机
S2
S3 S4
钱尔
孙珊 李思
男
女 男
18
20 21
信息
信息 自动化
S5
S6
周武
吴丽
男
女
19
20
计算机
自动化
26
§ 2.1.5 关系完整性约束
完整性约束保证授权用户对数据库的修改不 会导致数据一致性的破坏,关系模型的三类完 整性: 实体完整性 参照完整性 用户定义的完整性
第2章关系数据库(重点)数据库知识点整理
第2章关系数据库(重点)数据库知识点整理第2章关系数据库(重点)了解:关系数据结构及形式化定义、关系操作、关系的完整性、关系代数掌握关系模型的三个组成部分及各部分所包括的主要内容关系数据结构及其形式化定义关系的三类完整性约束关系代数及其运算,包括并、交、差、选择、投影、连接、除、⼴义笛卡⼉积知识点关系模型三个组成部分关系数据结构关系操作集合关系完整性约束实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值参照完整性规则:若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不⼀定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值⽤户定义的完整性:针对某⼀具体关系数据库的约束条件,反映某⼀具体应⽤所涉及的数据必须满⾜的语义要求关系数据语⾔的特点和分类关系代数语⾔关系演算语⾔具有关系代数和关系演算双重特点的语⾔域、笛卡⼉积、关系、元组、属性域:域是⼀组具有相同数据类型的值的集合笛卡⼉积:D1*D2*…*Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}关系:在域D1,D2,…,Dn上笛卡⼉积D1*D2*…*Dn的⼦集,表⽰为R(D1,D2,…,Dn)元组:关系中的每个元素是关系中的元组属性:关系也是⼀个⼆维表,表的每⾏对应⼀个元组,表的每列对应⼀个域。
由于域可以相同,为了加以区分,对每列起⼀个名字,称为属性候选码、主码、外码候选码:若关系中的某⼀属性组的值能唯⼀地标识⼀个元组,⽽其⼦集不能,则称该属性组为候选码(candidate key)主码:若⼀个关系有多个候选码,选定其中⼀个为主码(primary key)外码:设F是基本关系R的⼀个或⼀组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外部码(foreign key),简称外码关系模式、关系、关系数据库关系模式:关系的描述称为关系模式(relation schema),关系模式形式化表⽰为R(U,D,DOM,F)。
《数据库整理》第2章 关系数据库
关系体
随数据更新不断变化
15
.
• 例如,在第1章的图1-22所示的教学数据库中,共有五个关 系,其关系模式可分别表示为:
– 学生(学号,姓名,性别,年龄,系别) – 教师(教师号,姓名,性别,年龄,职称,工资,岗位津贴,系
别)
– 课程(课程号,课程名,课时) – 选课(学号,课程号,成绩) – 授课(教师号,课程号)
• 给定一组域D1,D2,…,Dn(它们可以包含相同的元素, 即可以完全不同,也可以部分或全部相同)。D1,D2,… ,Dn的笛卡尔积为
D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}
每一个元素(d1,d2,…,dn)中的每一个值di叫做一个 分量(Component) ,di∈Di 每一个元素(d1,d2,…,dn)叫做一个n元组(n-Tuple ),简称元组(Tuple) (注意:元组是按序排列的)
5
.
笛卡尔积D1×D2×…×Dn的基数M(即元素(d1,d2, …,dn)的个数)为所有域的基数的累乘之
n
积,即M= m i 。 i1
例如,上述表示教师关系中姓名、性别两个域的笛卡尔 积为:
D1×D2={(李力,男),(李力,女),(王平,男),(王平 ,女),(刘伟,男),(刘伟,女)}
分量:李力、王平、刘伟、男、女 元组 :(李力,男),(李力,女) ,M=m1×m2=3×2=6
第2章 关系数据库
.
• 本章主要按数据模型的三个要素讲述关系数据库的一
些基本理论(关系模型的数据结构、关系的定义和性 质、关系的完整性、关系代数、关系数据库等 )
• 掌握关系的定义及性质、关系键、外部键等基本概念
以及关系演算语言的使用方法
02《数据库》第二章关系数据模型 #
• 结果关系的所有属性都是原关系的属性。 • 结果关系的所有元组都是原关系的元组。
• 例如:在学生表中将98管理班同学全部
学号 找出姓来名 。 出生年月 性别 班级
0001 • 李伟 <班19级80=.1‵2.0938管男理′>(学9生8管表理)
性、参照完整性和用户定义的完整性。 • 实体完整性:主码的任何属性值都不能为空。 • 参照完整性:若A是基本关系R1的外码。它与
基本关系R2的主码K相对应,则R1中每个元组 在A上的值必须为以下情况之一。 • 等于R2中某个元组的主码值。 • 取空值(A的每个属性值均为空值)。
• 例如:职工关系(职工号,姓名,…部门编号) 和部门关系(部门编号,部门名称,…)。
班级 98管理 98管理 98管理 98管理
学号 课程号 成绩
0001 01
85
0001 02
70
0003 01
80
0003 02
90
• 自然连接 • (学生表)(成绩表)
学号 姓名 0001 李伟 0001 李伟 0003 赵兰 0003 赵兰
出生年月 性别 1980.12.03 男 1980.12.03 男 1979.05.26 女 1979.05.26 女
《数据库技术原理与应用》
章、关系数据模型基础理论
TEL: Email:
本章教学内容
一、关系模型的基本概念 二、关系代数 三、关系演算 四、查询优化 五、关系系统
一、关系模型的基本概念
1、关系模型的数学定义: 关系模型是建立在数学理论基础上的。 定义(1)域:域(Domain)是值的集合
《数据库原理及应用》教学课件 第二章关系数据库基础
01
列是同质的,即每一列中的分量必须来自同一个域且必须是同 一类型的数据。
02
不同的属性可来自同一个域,但不同的属性有不同的名字。
03
列的顺序可以任意交换,但交换时应连同属性名一起交换,否则 将得到不同的关系。
13
2.1 关系模型
04 05 06
2.1.3 关系的性质
元组的顺序可任意交换。在关系数据库中,可以按照各种排序 要求对元组的次序重新排列。
关系中不允许出现相同的元组。关系中的一个元组表示现实世界 中的一个实体或一个实体间的联系,如果元组重复则表示实体或 实体间的联系重复,这样不仅会造成数据库中数据的冗余,也可 能造成数据查询与统计的结果出现错误。
关系中的每一个分量必须是不可再分的数据项,即所有属性值都 是一个单独的值,而不是值的集合。
例如,在没有重名学生的情况下,学生关系中的属性“学号”与“姓名” 都是学生关系的候选码。如果选定属性“学号”作为数据操作的依据,则属 性“学号”为主码;如果选定属性“姓名”作为数据操作的依据,则属性 “姓名”为主码。
22
2.2 关系模型的完整性约束
2.2.1 关系的码
03 主属性与非主属性
包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性。 例如,在没有重名学生的情况下,学生关系的属性“学号”与“姓名”都是学生关系的候选码, 则它们都是学生关系的主属性。而属性“性别”与“系别”不包含在任一候选码中,则它们都是学 生关系的非主属性。 在最简单的情况下,关系的候选码只包含一个属性;在最极端的情况下,关系的候选码是所有 属性的组合,这时称为全码。 例如,设有关系演出(演奏者编号,乐器编号,演播室编号),其中的3个属性分别为演奏者 关系、乐器关系及演播室关系的主码,它们共同唯一标识了一个演出,则演出关系的主码为它们的 组合,即为全码。
关系数据库与应用(第02章关系模型与关系代数)
接条件。 连接操作可以基于一个或多个条件,用于将两个
03
关系的元组组合在一起。 连接操作可以产生新的关系,包含两个关系的所
04
有元组。
除法操作
除法操作是用来处理具有除 法语义的关系运算。
除法操作可以用于处理具有除法 语义的问题,例如找出在某些条 件下的共同元素。
ABCD
除法操作的表示方法是在两 个关系的名称之间放置一个 斜线(/)。
优化前
优化后
PA R T. 0 5
单击此处添加标题
关系代数与SQL的关系
SQL与关系代数的联系
数据操作语言
关系代数和SQL都用于对关系数据库中的数据进 行操作。
查询语言
关系代数和SQL都提供了查询数据的方法。
集合操作
关系代数和SQL都使用集合操作,如并、交、差 等。
SQL与关系代数的差异
语法
01
低系统的负载和成本。
提高用户体验
快速、高效的查询响应可 以提升用户的使用体验,
提高系统的满意度。
关系代数优化的方法
选择运算的优化
通过减少选择条件的数量、使用索引等方法, 减少选择运算的开销。
投影运算的优化
合理安排投影列的顺序,减少数据传输量,提 高投影运算的效率。
Байду номын сангаас
连接运算的优化
采用合适的连接策略,如嵌套循环连接、哈希 连接等,以降低连接运算的复杂度。
SQL的语法更直观,更接近自然语言,而关系代数的语法
更抽象。
功能
02
SQL除了数据操作外,还支持数据定义和数据控制等功能,
而关系代数主要关注数据操作。
应用领域
03
SQL广泛应用于实际的关系数据库管理系统,而关系代数
数据库基础-第二章 关系数据模型与关系运算
2.2 关系代数
数据查询基本运算
❖1.关系属性的指定——投影运算 这个操作是对一个关系进行垂直分割,消去某些列,并 重新安排列的顺序。
i1,i2,,in(R) {t | t ti1,ti2,,tin t1,t2,,tk R}
例子2-3
❖2.关系元组选定——选择运算 选择操作是根据某些条件对关系做水平分割,即选取符合 条件的元组。
R S {t | t R t S}
式中“-”为差运算符,t为元组变量,结果R-S为一个新的与R、S兼
容的关系,该关系是由属于R而且不属于S的元组构成的集合,即 在R中减去与S中相同的那些元组。
关系 R
A
B
C
a1
b1
c1
a1
b2
c2
a2
b2
c1
关系 R∪S
A
B
C
a1
b1
c1
a1
b2
c2
a2
b2 c2
a1
b2
c2
a2
b2
c1
图 2.9 关系 R 和关系 S 及其交运算
2.2 关系代数
2.除法运算
设关系R和S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的 元组的集合。(R÷S)是满足下列条件的最大关系:其中每个元组t与S中 每个元组u组成的新元组<t,u>必在关系R中。
S# (S) S# (SC)
例2-7 在关系C中增加一门新课程(C13, ML, C3, null): 如果令这门新课程元组所构成的关系为R,则有: R=(C13,ML,C3,null),这时结果为:C∪R。
学生关系:S (S# ,Sn, Sex,Sa ,Sd) ; 课程关系:C (C# ,Cn ,P#,Tn) ; 选课关系:SC (S#, C# ,G),
第2章 关系数据库
关系数据库
本章要求:
1、掌握关系、关系模式、关系数据库等基本概念 2、掌握关系的三类完整性的含义 3、掌握关系代数运算 本章内容: §1 关系模型的基本概念 §2 RDBS的数据操纵语言:关系代数 §3 RDBS的数据操纵语言:关系演算语言 返回
2016/9/29 数据库系统 1
请选择内容
第二章
2016/9/29
数据库系统
12
第二章
关系数据库
§2 RDBS的数据操纵语言:关系代数 关系代数的运算对象是关系,运算结果也为关系。 其运算按运算符的不同可分为两类。 一、传统的集合运算 1、并(Union): R S = { t | t∈R∨t∈S} 2、交(Intersection):R S = { t | t∈R∧t∈S} 3、差(Difference): R S = { t | t∈R∧t∈S} 4、笛卡尔积(广义): R S = { trts | tr ∈ R ∧ ts ∈ S}
2016/9/29
数据库系统
14
第二章 3、连接(Join) R
R中属性
关系数据库
S :从两个关系的笛卡尔积中选取属性间 A B 满足条件A B的元组。 连接是同时处理 多个关系的 重要运算
S中属性 比较运算符
说明: R
2016/9/29
S = (RS) A B A B
S
当为等号且A、B两属性相同时,称为自然连接,
2016/9/29 数据库系统
SC:S# C# G
S1 S1 S1 S1 S2 S2 S2 S3 S3 S3 S4 S4 C1 C2 C3 C5 C1 C2 C4 C2 C3 C4 C1 C3 A A A B B C C B C B B A
关系数据库模型与关系数据库设计
–
属性( 属性(Attribute) ) 主码( 主码(Key) )
表中的某个属性组,它可以唯一确定一个元组。 表中的某个属性组,它可以唯一确定一个元组。
表中的一列即为一个属性,给每一个属性起一个名称即属性名。 表中的一列即为一个属性,给每一个属性起一个名称即属性名。
–
关系模型的基本概念2 关系模型的基本概念
用户定义的完整性(续 用户定义的完整性 续)
例:
学生学生(学号,姓名,性别,班级代号,年龄) 学生学生(学号,姓名,性别,班级代号,年龄)
– –
例如用户定义 “性别”只能取“男”或“女” 年龄在18到25岁之间
2.1.4. 典型的关系数据库系统
– – – – – – – – –
ORACLE SYBASE INFORMIX DB/2 COBASE PBASE EasyBase DM/2 OpenBase
关系数据模型的数据结构(续 关系数据模型的数据结构 续)
例2
学生实体、专业实体以及专业与学生间 的一对多联系 学生(学号,姓名,性别,班级代号,年龄) 学生(学号,姓名,性别,班级代号,年龄) 班级(班级代号,班级名称) 班级(班级代号,班级名称)
学生学生(学号,姓名,性别,班级代号,年龄)
学号 801 802 803 804 805 姓名 张三 李四 王五 赵六 钱七 性别 女 男 男 女 男 班级代号 年龄 1001 1001 1001 1002 1002 19 20 20 20 19
关系数据模型的数据结构
实体及实体间的联系的表示方法
– – – – –
实体型:直接用关系(二维表)表示。 实体型:直接用关系(二维表)表示。 属性:用属性名(列名)表示。 属性:用属性名(列名)表示。 一对一联系:隐含在实体对应的关系中。 一对一联系:隐含在实体对应的关系中。 一对多联系:隐含在实体对应的关系中。 一对多联系:隐含在实体对应的关系中。 多对多联系:直接用关系表示 多对多联系:直接用关系表示。
数据库 第二章 关系数据库
关系的描述称为关系模式,在上图中二维表的表头那行
称为关系模式,又称表的框架。
(2)形式化定义 :
R(U,D,Dom,F)
其中:R表示关系名;
U表示组成该关系的属性集合;
D表示U中属性所来自的域;
Dom表示属性向域的映像的集合
F表示属性间数据的依赖关系集合
上一页 下一页 第一页 最末页
退出
第一节 关系数据结构及形式化定义
一、和”关系”相关的概念定义 二、“关系”相关的概念 三、关系数据库中关系的类型 四、数据库中基本关系的性质
上一页 下一页 第一页 最末页
退出
一、和”关系”相关的概念定义
1、域:P47 2、笛卡儿积:P48 3、关系:P48
上一页 下一页 第一页 最末页
退出
域的定义
专业号 001 002
专业名 计算机应用 信息管理
二、DBMS在维护完整性方面具备的功能
1、提供定义完整性约束条件的机制 2、提供完整性检查的方法 3、违约处理
1、实体完整性
(1)定义:Primary key ->主键 (2)检查:
①对基本表插入一条记录 ②对基本表的主码进行更新 (3)违约处理 ① 若主码不唯一则拒绝插入或修改 ②若主码的各个属性有一个为空则拒绝插入或修改
3、参照完整性(Referential Integrity)
(1)外码 (2)参照完整性规则
外码(Foreign Key)
• 外码的定义:设F是基本关系R的一个或一组属性,但 不是R的码,如果F与基本关系S的主码相对应,则 称F为基本关系R的外码。并称R为参照关系,S为被 参照关系。
• 外码举例: 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)
第2章 关系数据库
函数依赖
数据依赖是关系中各属性间互相依存,互相制约的 各种不同形式。它是数据内在的性质。 假如有一个描述学生的关系模式 : R(S#,SN,SD ),其中, S#(学号); SN(学生 姓名); SD(学生所属系名)。 学号S#确定后,学生姓名SN,所在系 SD就确定了。 这时我们说: S#函数决定SN,SD 。 或说SN,SD 函数依赖于S#。 记为S# → SN, S# → SD。
2.1 关系模型的概述
关系数据库系统是支持关系模型的数 据库系统。 关系模型由关系数据结构、关系操作集 合和关系的完整性约束三部分组成。 1. 关系数据结构 单一的数据结构----关系
现实世界的实体以及实体间的各种联系 均用关系来表示
数据的逻辑结构----二维表
从用户角度,关系模型中数据的逻辑结构 是一张二维表。
范式(Normal Form)
4. BC范式(BCNF) 通常认为是对3NF的修正,有时也称为第三范式。 定义: 关系R ∈1NF,若X→Y且YX时,X必含有码,则R ∈BCNF。 换句话说,在关系模式R中,若每一个决定因素包含码,则R ∈BCNF。 由BCNF的定义可得以下几个结论: (1)所有的非主属性对每一个码都是完全函数依赖。 (2)所有的主属性对每一个不包含它的码也是完全函数依赖。 (3)不存在任何属性能够完全函数依赖于不是码的任何一组属性。 例:关系模式C(C#,CNAME,PC#) 其中,C#(课程编号) CNAME(课程名称) PC#(先行课编号)
范式(Normal Form)
学生信息也删了)、冗余(例学生选了K门课,系地址就存储了k次)。 用投影方法,将R分解成两个关系模式: RSD(S#,SD,SDADDR) RSC(S#,C#,CG) 这样课与系地址无关了。 这样以来:(S#,C#) f CG S# f SD S# f SDADDR 所以:RSC ∈2NF;RSD ∈2NF
第2章 关系模型
1. 实体完整性规则
实体完整性规则是表中任意一行的主键值不能
为空值。
空值,用“null”表示,大小写一样。空值是尚
未确定的值或不确定的值。如 Enrollment 表中 的Grade值。
空值和数值型列的 0 值以及字符型列的空字符
串的不同,数值型列的 0 值与字符型列的空字 符串都是确定的值。
差运算举例
差运算含义:一年级但没有获奖的学生信息
交运算举例
交运算含义:一年级并获奖的学生信息。
笛卡儿积:简称积运算,也是二元运算,即要求
有两个表参加运算,但这两个表可以不兼容。
笛卡儿积运算定义:给定两个表R和S,R和S的积
运算的结果是一个新表,新表中的行由R中的每 一行和S中的每一行组合而成。记作R×S。新表 可能包含重复的列,因此不一定是一个关系 。
满足上述条件的表才能称作关系。 当我们把关系和表看作是等价的时候,即默认 此表是满足上述关系的性质的。
理解关系的性质:横向上看,一个关系可以看 作是若干个元组的集合;纵向上看,一个关系 可以看作是若干个属性的集合。集合的理论表 明,集合中不允许包含重复元素的,因而可以 解释关系的6条性质。
一个关系用一个关系模式表示,所有关系模式集
合构成数据库的模式,它是数据库整体逻辑结构 的描述。
2.2 关系模型的数据完整性
关系模型的数据完整性指的是完整性
规则。
完整性规则包括实体完整性规则、参
照完整性规则和用户自定义完整性规 则三大类。
实体完整性和参照完整性是关系模型
必须满足的两个完整性规则。
的学生姓名,则 Sname 是 Students 表的一个候 选键。
如果一个表有多个候选键,数据库设计者通
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1部分
数据库系统基础
第2章 关系模型与关系数据库
LOGO
第2章 关系模型与关系数据库
2.1 2.2
关系数据模型
关系操作与关系查询语言
2.3
2.4
SQL语言
应用关系数据库
2018/9/5
2
2.1 关系数据模型 2.1.1 关系模型基础
2.1.2 关系模型的约束及其表达
2.1.3 关系数据库
• 能唯一标识关系R中每个元组的一个属性子集 • 超键中可能会有冗余属性
候选键(Candidate Key)
• 没有冗余属性的超键
2018/9/5
8
引用完整性约束 引用完整性约束(referential integrity constraint) 指要在两不同关系之间指定,用来维护两关系 元组间一致性的一种关系模型约束。 该约束指定:当某关系元组引用另一个关系中 元组时,只能引用已经存在的元组。 外键(Foreign Key,FK)定义 外键条件指定了两个关系模式R1和R2之间的一 个引用完整性约束,或简称为外键约束。
2018/9/5
24
DRC查询示例
(Q3) 查询被指派到103号船值勤的水手名 { <N> | ∃I,T,A(<I,N,T,A>∊Sailors ∧ ∃Ir ,Br ,D (<Ir ,Br ,D> ∊Reserves∧ Ir = I ∧ Br=103))} 若引入简记法,也可改写为: { <N> | ∃I,T,A(<I,N,T,A>∊Sailors ∧ ∃<Ir ,Br ,D> ∊Reserves(Ir = I ∧Br=103))} 该式还可用如下更简洁的写法: • { <N> | ∃I,T,A(<I,N,T,A>∊Sailors ∧ ∃D(<I,103,D> ∊Reserves) )} (Q4) 查询曾在一个红船上值勤过的所有水手名字 { <N> | ∃I,T,A(<I,N,T,A>∊Sailors ∧ ∃<I ,Br ,D> ∊Reserves∧ ∃< Br ,Bn ,’red’> ∊Boats }
2018/9/5
14
2. 叉积操作
叉积,也称为笛卡儿积(cartesian product),操作符 用表示,属于二元关系操作符,代数表达式为RS。
2018/9/5
15
3. 选择操作与投影操作
选择操作符表示为σc(R) ,其中,c为条件表达式。 投影操作符表示为 πL(R) ,其中,L为投影输出的属性 子集列表A1’,…,Am’。
2018/9/5
17
5. 连接操作 连接操作(⋈c),用来合并两个关系中的信息 ――将两关系中相关的“元组对”合并成一个元 组输出。 虽然在概念上,R⋈cS = L(σc(RS));但按 这种方法实现连接操作的效率很低。在RDBMS 中,连接操作通常以独立于叉积结果的方法实现。
2018/9/5
2018/9/5
21
元组关系演算(Tuple Relational Calculus,TRC)
元组变量 是取值范围限为特定关系元组的变量。 TRC查询的基本表达形式 {t | p(t)},
• t 代表一个元组变量,而p(t)则是t应当满足的逻辑公式。
查询结果是能使逻辑公式p(t)为真值的所有元组t集合。 构造TRC查询表达的核心任务是给出逻辑公式p(t), 本 质上TRC逻辑公式是FOL公式的一个子集。 应用举例 要检索职级超过7的水手,
2018/9/5
13
1. 并、交、差运算
并、交、差这三个运算操作都可对应到集合论操作,它 们都属于二元操作符,要求有两个被操作对象,且要求 这两个关系是相容的。 并(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 }
2018/9/5
23
域关系演算(Domain Relational Calculus, DRC)
DRC公式可按类似TRC公式的方式进行形式定义。这两 类公式定义的主要差别是变量的取值范围。令X和Y是域 变量。 DRC原子公式是下面形式之一: <x1,x2,…,xn> ∊Rel Rel是含有n个属性的关系名,每个 xi , 1≤i≤n,或是一个变量,或是一个常数。 X op Y 或 X op constant 或 constant op X 任何DRC公式可由如下任一方法递归地构造产生。 任何一个DRC原子公式; ┐p(取反), p∧ q (与连接构造), p∨ q (或连接构造), p⇒q(蕴涵: 若p为真,q必为真) ∃X(p(X)),X是<x1,x2,…,xn> 。 ∀X(p(X)),X是<x1,x2,…,xn> 。
关系查询语言的两种属性引用方法: (1) 属性名 (2)属性在关系模式中的位置或顺序号
11
2018/9/5
“水手值勤服务”的一个简单模式实例
2018/9/5
12
2.2.1 关系代数
关系代数由一组操作符构成。每个操作符接受1或2个关 系实例作为参数,返回一个关系实例作为结果。以下三个 方面因素,可突显关系代数在RDBMS中的重要性和地位: 它为关系模型操作提供了一个形式化的基础; 是RDBMS查询实现和优化的基础; SQL结合并保留了很多关系代数的基本概念 关系代数操作符的两种主要类型: 基于集合论的操作,包括并、交、差和叉积等,这些 操作的适用性源于“关系”本质上是元组集合; 另一类操作则是专门为RDBMS开发的操作,包括选择、 投影、连接,以及为聚合运算引入的相关操作。
2018/9/5
7
2.1.2 关系模型的约束及其表达 完整性约束(Integrity Constraints, ICs) DBMS必须能强制实施与DB模式有关的所有约 束,以限制允许存储到DB的数据,确保DB中 只有满足约束的合法数据。 ICs的主要类型包括域约束、主键约束和外键约 束,它们常被统称为基于模式的约束。 键约束 超键(superkey,SK)的概念
2018/9/5
3
2.1.1 关系模型基础 关系(表) 关系模型将数据库表示为一组“关系(relation)” 的集合。每个关系好比一个具有多个行(row)和 多个列(column)的二维值表(table)。 每个关系含两部分信息:关系模式(relation schema)和关系实例(relation instance)。 在正式的关系模型术语中
• R(A1[:dom(A1)],…,An[:dom(An)])
关系实例(关系状态) 关系的每个数据行称为一个元组,可形式表示为 • t =<v1,v2,…,vn>, 关系的实例(状态)是一个元组集或记录集,可形式 表示为:
• r(R)={t1, t2, …, tn}
2018/9/5
6
其它几个重要的关系模型概念(2) 关系数据库模式 (Schema, S) 指由一个关系模式集{R1,R2,…,Rn}和一个关系 约束集ICs构成的定义集; S={R1,R2,…,Rn}+ICs。 关系数据库状态 指特定时刻DB中所有关系状态的集合,即 DB={r1,r2,…,rn},其中,ri是关系Ri的状态。 关系数据库 关系数据库(RDB),是采用关系模型来表示数 据的数据库。RDB的一个状态也称为一个RDB 实例。
2018/9/5
16
4. 重命名操作 在许多场合,输出列名可以直接使用输入关系的 属性名。但当输出列为表达式,或二元操作两个 输入关系中含同名属性,或希望改善原属性名的 可读性等,都需要重命名机制。 关系代数中引入了一个重命名操作符(ρ),其代 数表达形式为: ρ ( R’(A1A1’, …, AiAi’,…), E ) 例2.6 基于图2.4(d) 的S1×R1,写出表达 式ρ ( R’(1sid1, 5sid2), S1×R1) 返回 的R’模式。
2018/9/5
20
2.2.2 关系演算(relational calculus)
关系演算为关系DB查询提供了一种高级描述性表示法。 它是一种形式化语言,其基础是被称为谓词(predicate)演 算的数理逻辑分支――一阶谓词逻辑(First Order Logic, FOL)。 在演算表达式中,不需给出如何应获取结果的操作次序指 示信息,只描述了结果中应当包括的信息。 关系演算表达式描述了一个新的关系,这个新关系以变量形 式来指定,变量取值范围可是是新关系中的元组(元组演 算),或是新关系中的属性域(域演算)。 元组演算对商业化关系查询语言SQL发展有重要影响; 域演算则是QBE (Query-By-Example语言)的基础。
18
6. 消除重复与排序运算 消除重复运算的表达式为 (RB),其操 作对象可以是包型关系或集合型关系。 消除重复是一个代价较大的操作,故在 很多实际系统中,默认情况下的投影输 出都不自动消除重复。 排序操作的代数符号表达式为T L(R)。该 操作用来将关系R的所有元组,按L所指定 方式排序输出。
L是一个属性表达列表,具有形如A1 [asc|desc], A2 [asc|desc], … 的形式
2018/9/5
19
7. 分组与聚合操作 分组(grouping)与聚合(aggregating)操作 的代数表达式为γL(R),该操作将关系R的所有 元组按L指定方式进行分组。 L是一个列表表达式。 聚合关系与原关系R一般具有不同的模式结构。 聚合关系中的属性,必须或者是出现L中的属 性,或是一个聚合函数表达式。 很多DB书籍或文献中,都将aggregating运算 译为聚集。本书中,考虑到已将clustering译 为聚簇、聚集。为避免混淆,同时也考虑到合计 汇总运算这个语义,故采用‘聚合’这个译法。