03第三讲 关系模型.docx
- 文档编号:9267516
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:18
- 大小:138.61KB
03第三讲 关系模型.docx
《03第三讲 关系模型.docx》由会员分享,可在线阅读,更多相关《03第三讲 关系模型.docx(18页珍藏版)》请在冰豆网上搜索。
03第三讲关系模型
第三讲关系模型(逻辑结构设计)
关系理论是建立在集合代数理论基础上的,有着坚实的数学基础。
E.F.Codd于70年代初提出关系数据理论,他因此获得1981年的ACM图灵奖。
早期代表系统:
SystemR:
由IBM研制。
INGRES由加州Berkeley分校研制。
目前主流的商业数据库系统:
Oracle,Informix,Sybase,SQLServer,DB2,
Access,Foxpro,Foxbase。
3.1关系基本概念
关系理论是以集合代数为基础的。
3.1.1域(Domain):
一组值的集合,这组值具有相同的数据类型。
如整数的集合、字符串的集合、全体学生的集合。
用D表示。
3.1.2笛卡尔积(Car’tesianProduct)
一组域D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}。
笛卡尔积的每个元素(d1,d2,…,dn)称作一个n元组(n-tuple)。
元组的每一个值di叫做一个分量(component)。
若Di为有限集,其基数为mi(i=1,2,3…n),则笛卡尔积的基数为
笛卡尔积可表示为一个二维表,表中的每行对应一个元组,表中每列对应一个域。
例:
D1为教师集合(T)={t1,t2}
D2为学生集合(S)={s1,s2,s3}
D3为课程集合(C)={c1,c2}
则D1×D2×D3是个三元组集合,元组个数为2×3×2,是所有可能的(教师,学生,课程)元组集合。
笛卡尔积可表为二维表的形式:
T(D1)
S(D2)
C(D3)
t1
s1
c1
t1
s1
c2
t1
s2
c1
…
…
…
t2
s3
c2
表中的行表示一个元组,列表示一个域。
3.1.3关系
(1)笛卡尔积D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,用R(D1,D2,…,Dn)表示。
(2)R是关系的名字,n是关系的度或目。
(3)关系是笛卡尔积中有意义的子集。
关系也可以表示为二维表。
T
S
C(属性)
t1
s1
c1
(元组)t1
s2
c2
t2
s3
c1
(4)关系的性质:
列是同质的,即每一列中的分量来自同一域,是同一类型的数据。
如TEACH(T,S,C)={(t1,s2,c1),(t1,s1,c1)}是错误的。
(5)不同的列可来自同一域,每列必须有不同的属性名。
如P={t1,t2,s1,s2,s3},C={c1,c2},则TEACH不能写成TEACH(P,P,C),还应写成TEACH(T,S,C)。
(6)行列的顺序无关紧要。
任意两个元组不能完全相同(集合内不能有相同的两个元素)。
每一分量必须是不可再分的数据。
满足这一条件的关系称作满足第一范式(1NF)的。
3.1.4关系的6条性质
(1)列是同性质的,来自同一个域。
(2)不同的列可以来自于同一个域。
(3)列的顺序无所谓
(4)行的顺序无所谓
(5)任意两个元组不能完全相同
(6)分量必须取原子值,每个分量都是不可分的数据项。
3.2关系模式
数据结构:
单一的数据结构——关系。
实体集、联系都表示成关系。
DEPT(D#,DN,DEAN)
S(S#,SN,SEX,AGE,D#)(外表)
C(C#,CN,CREDIT)
PROF(P#,PN,D#,SEX,SAL)
SC(S#,C#,SCORE)
TEACH(P#,C#)
3.2.1候选码(CandidateKey)
关系中的某一属性或属性组的值能唯一地标识一个元组,称该属性或属性组为候选码
如DEPT中的D#,DN都可作为候选码。
任何一个候选码中的属性称作主属性。
如SC中的S#,C#。
3.2.2主码(PrimaryKey)
进行数据库设计时,从一个关系的多个候选码中选定一个作为主码。
如可选定D#作为DEPT的主码。
3.3.3外部码(ForeignKey)
关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码。
如S关系中的D#属性。
3.3.4关系模式
关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,记为:
R(U,D,dom,F),简单记作R(A1,A2,…,An)。
R:
为关系名。
U:
组成改关系的属性名的集合。
D:
U属性所来自的域。
dom:
属性向域的映象一般直接说明为属性的类型、长度等。
F:
属性间的函数依赖关系。
某一时刻对应某个关系模式的内容(元组的集合)称作关系。
关系模式是型,是稳定的。
关系是某一时刻的值,是随时间不断变化的。
3.3.5关系数据库
其型是关系模式的集合,即数据库描述,称作数据库的内涵(Intension)。
其值是某一时刻关系的集合,称作数据库的外延(Extension)。
3.3.6关系操作
关系操作是集合操作,操作的对象及结果都是集合,是一次一集合(Set-at-a-time)的方式,而非关系型的数据操作方式是一次一记录(Record-at-a-time)。
关系操作可以用关系代数和关系演算两种方式来表示,它们是相互等价的。
如用关系代数来表示关系的操作,可以有选择、投影、连接、除、交、差、并等。
3.3.7关系模式的完整性
(1)实体完整性:
关系的主码中的属性值不能为空值。
意义:
关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的。
(2)参照完整性:
A、如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值。
B、意义:
如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在。
(3)用户定义的完整性:
用户针对具体的应用环境定义的完整性约束条件。
如S#要求是8位整数,SEX要求取值为“男”或“女”。
(4)系统支持
A、实体完整性和参照完整性由系统自动支持。
B、系统应提供定义和检验用户定义的完整性的机制。
3.3关系数据语言概述
3.3.1抽象的查询语言
(1)关系代数:
用对关系的运算来表达查询,需要指明所用操作。
(2)关系演算:
用谓词来表达查询,只需描述所需信息的特性。
元组关系演算:
谓词变元的基本对象是元组变量。
域关系演算:
谓词变元的基本对象是域变量。
3.3.2具体系统中的实际语言
SQL:
介于关系代数和关系演算之间,由IBM公司在研制SystemR时提出的。
QUEL:
基于Codd提出的元组关系演算语言ALPHA,在INGRES上实现。
QBE:
基于域关系演算,由IBM公司研制。
3.3.3关系数据语言的特点
(1)一体化:
一般关系系统的数据语言都同时具有数据定义、数据操纵和数据控制语言,而不是分为几个语言。
对象单一,都是关系,因此操作符也单一。
而非关系型系统,如DBTG,有对记录的操作,有对系的操作。
(2)非过程化:
用户只需提出“做什么”,无须说明“怎么做”,存取路径的选择和操作过程由系统自动完成。
(3)面向集合的存取方式:
操作对象是一个或多个关系,结果是一个新的关系(一次一关系)。
非关系系统是一次一记录的方式。
3.4关系代数
关系代数是一种抽象的查询语言,它是对关系的运算来表达查询的。
3.4.1关系代数
分类法1:
(1)基本运算
A、一元运算:
选择、投影、更名。
B、多元运算:
广义笛卡儿积、并、交、集合差。
(2)其它运算:
自然连接、除、赋值。
(3)扩展运算:
广义投影、外连接、聚集。
(4)修改操作:
插入、删除、更新。
分类法2:
(1)传统的集合运算:
并,差,交,广义笛卡尔积。
(2)专门的关系运算:
选择,投影,连接,除。
3.4.2一些标记
给定关系模式R(A1,A2,…,An),设R是它的一个具体的关系,tR是关系的一个元组。
分量:
设tR,则t[Ai]表示元组t中相应于属性Ai的一个分量。
属性列:
A={Ai1,Ai2,…,Aik}{A1,A2,…,An},称A为属性列或域列。
t[Ai]=(t[Ai1],t[Ai2],…,t[Aik])。
给定一个关系R(X,Z),X和Z为属性组。
定义,当t[X]=x时,x在R中的象集为:
Zx={t[Z]|tR,t[X]=x}
3.4.3选择
(1)基本定义:
在关系R中选择满足给定条件的元组(从行的角度)。
F(R)={t|tR,F(t)=‘真’}
F是选择的条件,tR,F(t)要么为真,要么为假。
(2)F的形式:
由逻辑运算符连接算术表达式而成。
逻辑表达式:
(与),(或),(非)
算术表达式:
XY
X,Y是属性名、常量、或简单函数。
是比较算符,{,,,,,≠}
例:
找年龄不小于20的男学生。
AGE≥20∧SEX=‘male’(S)
3.4.4投影
(1)定义:
从关系R中取若干列组成新的关系(从列的角度)。
A1(R)={t[A]|tR},AR
投影的结果中要去掉相同的行。
例:
A
B
C
D
a
B
g
d
e
F
c
H
i
B
g
L
B,C(R)
结果是:
例:
找001号学生所选修的课程号:
C#(S#=001(SC))
3.4.5并运算
(1)定义:
所有至少出现在两个关系中之一的元组集合。
RUS={r|rRvrS}
(2)两个关系R和S若进行并运算,则它们必须是相容的:
A、关系R和S必须是同元的,即它们的属性数目必须相同。
B、对i,R的第i个属性的域必须和S的第i个属性的域相同。
例:
求选修了001号或002号课程的学生号。
方案1:
∏S#(C#=001vC#=002(SC))
方案2:
∏S#(C#=001(SC))∪∏S#(C#=002(SC))
3.4.6差运算
(1)定义:
所有出现在一个关系而不在另一关系中的元组集合。
RS={r|rRrS}
R和S必须是相容的。
例:
求选修了001号而没有选002号课程的学生号。
∏S#(C#=001(SC))-∏S#(C#=002(SC))
3.4.8更名运算
(1)定义:
给一个关系表达式赋予名字x(E)
返回表达式E的结果,并把名字x赋给E。
x(A1,A2,,An)(E)
返回表达式E的结果,并把名字x赋给E,同时将各属性更名为A1,A2,..An。
关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。
这在同一关系多次参与同一运算时很有帮助。
3.4.7广义笛卡尔积运算
(1)元组的连串(Concatenation):
若r=(r1,…,rn),s=(s1,…,sm),则定义r与s的连串为:
rs=(r1,…,rn,s1,…,sm)
(2)定义:
两个关系R,S,其度分别为n,m,则它们的笛卡尔积是所有这样的元组集合:
元组的前n个分量是R中的一个元组,后m个分量是S中的一个元组。
RS={rs|rRsS}
RS的度为R与S的度之和,RS的元组个数为R和S的元组个数的乘积。
例:
求成绩比王红数学成绩高的学生姓名。
∏S.姓名(R.成绩S.成绩R.课程=数学S.课程=数学R.姓名=王红(RS(R))
姓名
课程
成绩
张三
物理
93
王红
数学
86
张三
数学
89
R.姓名
R.课程
R.成绩
S.姓名
S.课程
S.成绩
王红
数学
86
张三
物理
93
王红
数学
86
王红
数学
86
王红
数学
86
张三
数学
89
3.4.8交运算
(1)定义:
所有同时出现在两个关系中的元组集合。
RS={r|rRrS}
交运算可以通过差运算来重写:
RS=R(RS)
例:
求选修了001号并且选修002号课程的学生号。
∏S#(C#=001(SC))∩∏S#(C#=002(SC))
3.4.9连接
(1)定义:
从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组。
AB
RS={rs|rRsSr[A]S[B]}
为算术比较符,为等号时称为等值连接,为>时,为大于连接,为<时,为小于连接。
例:
R
A
B
C
1
2
3
4
5
6
7
8
9
S
D
E
3
1
6
2
RS
B A B C D E 1 2 3 3 1 1 2 3 6 2 4 5 6 6 2 例: 求数学成绩比王红同学高的学生。 ∏S.姓名((课程=数学姓名=王红(R))(课程=数学S(R))) R.成绩 (2)等值连接: 当为“=”的连接为等值连接。 (3)自然连接: 从两个关系的广义笛卡尔积中选取在相同属性列B上取值相等的元组,并去掉重复的列。 RS={rs[B]|rRsSr[B]=S[B]} 自然连接与等值连接的不同: 自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。 例: 求001号学生所在系的名称。 ∏DN(S#=001(S)DEPT) (4)当R与S无相同属性时,RS=R×S。 3.4.10除运算 (1)除运算 给定关系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={tr[Z]|trR∏y(S) YX} 其中YX为x在R中的象集,x=tr[Z]。 例: R A B C a1 b1 c2 a2 b3 c7 a3 b4 c6 a1 b2 c3 a4 b6 c6 a2 b2 c3 a1 b2 c1 S B C D b1 c2 d1 b2 c1 d1 b2 c3 d2 (2)象集(ImageSet) 给定一个关系R(X,Y),X和Y为属性组。 定义,当t[X]=x时,x在R中的象集为: Yx={t[Y]|tR,t[X]=x} 从R中选出在X上取值为x的元组,去掉X上的分量,只留Y上的分量。 XZ 姓名 课程 张三 物理 王红 数学 张三 数学 S 课程 数学 物理 (3)除运算 例: 3.4.11赋值运算 为使查询表达简单、清晰,可以将一个复杂的关系代数表达式分成几个部分,每一部分都赋予一个临时关系变量,该变量可被看作关系而在后面的表达式中使用。 临时关系变量关系代数表达式。 赋值给临时关系变量只是一种结果的传递,而赋值给永久关系则意味着对数据库的修改。 例: RS=X(R)X(X(R)Y(S)R)用赋值重写为: temp1X(R), temp2X(temp1Y(S)R) resulttemp1temp2 例: 求选修了其选修课为001号课程的学生名。 (哪个效率高? ) 方案1: ∏SN(PC#=001(SCCS)) 方案2: ∏SN(PC#=001(C)SCS) 例: 求未选修001号课程的学生号。 (哪些正确? ) 方案1: ∏S#(C#≠001(SC)) 方案2: ∏S#(S)-∏S#(C#=001(SC)) 例: 求仅选修了001号课程的学生号。 选修001号课程的学生-仅选001号课程之外的学生 =∏S#(C#=001(SC))-∏S#(SC-C#=001(SC)) =∏S#(C#=001(SC))-∏S#(C#≠001(SC)) 3.4.12广义投影 (1)定义: 在投影列表中使用算术表达式来对投影进行扩展。 F1,F2,…,Fn(E)F1,F2,…,Fn是算术表达式。 例: 求教工应缴纳的所得税。 P#,SAL*5/100(PROF) p#,INCOME-TAX(P#,SAL*5/100(PROF)) 3.4.13外连接 (1)定义: 为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接。 外连接=自然连接+失配的元组 (2)外连接的形式: 左外连接、右外连接、全外连接。 左外连接=自然连接+左侧表中失配的元组。 右外连接=自然连接+右侧表中失配的元组。 全外连接=自然连接+两侧表中失配的元组。 例: 列出所有老师的有关信息,包括姓名、工资、所教授的课程名称。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03第三讲 关系模型 03 第三 关系 模型
![提示](https://static.bdocx.com/images/bang_tan.gif)