第3章关系数据库基本理论.docx
- 文档编号:24370604
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:33
- 大小:258.64KB
第3章关系数据库基本理论.docx
《第3章关系数据库基本理论.docx》由会员分享,可在线阅读,更多相关《第3章关系数据库基本理论.docx(33页珍藏版)》请在冰豆网上搜索。
第3章关系数据库基本理论
第3章关系数据库基本理论
本章教学目标:
•了解关系数据库的一些基本概念;
•掌握关系模型的构成;
•理解关系演算的两类演算语言;
•掌握如何用关系代数表达式来表达实际查询。
3.1关系模型的基本概念
3.2关系代数的基本运算
3.3关系演算
3.4综合举例
3.5数据库的修改
3.1关系模型的基本概念
Ø关系模型就是用二维表格结构来表示实体及实体之间联系的模型。
即关系模型是一些表格的格式,其中包括关系名、属性名、关键字等。
Ø例如,教学数据库中教师与课程的关系模型如图3.1所示。
教师关系T
课程关系C授课关系SC
图3.1教师—课程数据库的关系模型
Ø从各个关系的框架中,我们可以很容易看出哪两个关系之间有联系。
例如:
•教师关系和授课关系有公共的属性“教师号”,则表明这两个关系有联系。
•而课程关系和授课关系有公共的属性“课程号”,则表明这两个关系也有联系。
3.1.1关系数据结构
3.1.1.1关系的数学定义
1、域(Domain)
Ø域是一组具有相同数据类型的值的集合,又称为值域(用D表示)。
Ø关系中用域表示属性的取值范围。
例如整数、实数、字符串的集合。
域中所包含的值的个数称为域的基数(用m表示)。
例如:
D1={李力,王平,刘伟}m1=3
D2={男,女}m2=2
D3={47,28,30}m3=3
Ø其中,D1,D2,D3为域名,分别表示教师关系中姓名、性别、年龄的集合。
2、笛卡尔积(CartesianProduct)
Ø给定一组域D1,D2,…,Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。
D1,D2,…,Dn的笛卡尔积为D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}。
由定义可以看出,笛卡尔积也是一个集合。
其中:
Ø元素中的每一个di叫做一个分量(Component),来自相应的域(di∈Di)
Ø每一个元素(d1,d2,d3,…,dn)叫做一个n元组(n-tuple),简称元组(Tuple)。
但元组不是di的集合,元组的每个分量(di)是按序排列的。
如:
(1,2,3)≠(2,3,1)≠(1,3,2)。
ØDi中的集合元素个数称为Di的基数,用mi(i=1,2,……n)表示,则笛卡尔积D1×D2×……×Dn的基数M(即元素(d1,d2,……dn)的个数)为所有域的基数的累乘之积,即
M=
例如:
上述表示教师关系中姓名、性别两个域的笛卡尔积为:
ØD1×D2={(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)}
其中:
•(李力,男),(李力,女)等是元组
•其基数M=m1×m2=3*2=6
•元组的个数为6
Ø笛卡尔积可用二维表的形式表示。
例如,上述的6个元组可表示成表3.2。
表3.2D1和D2的笛卡尔积
Ø由上例可以看出,笛卡尔积实际是一个二维表,表的框架由域构成,表的任意一行就是一个元组,表中的每一列来自同一域,如第一个分量来自D1,第二个分量来自D2。
3、关系(Relation)
Ø笛卡尔积D1×D2×…×Dn的任一子集称为定义在域D1,D2,…Dn上的n元关系(Relation),可用R(D1,D2……Dn)表示。
Ø如上例D1×D2笛卡尔积的子集可以构成教师关系T1,如下表:
表3.3教师关系T1
几点说明:
Ø R为关系名,n称为关系的目或度(Degree)。
v当n=1时,称为单元关系,当n=2时,称为二元关系。
…当n=n时,称为n元关系。
如上例为二元关系,关系名为T1。
Ø数学上关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积中所取的有意义的子集。
v例如在表3.2中选取一个子集构成如下关系,显然不符合实际情况
关系的六条性质:
1关系中不允许出现相同的元组。
2关系中元组的顺序(即行序)是无关紧要的。
3关系中属性的顺序是无关紧要的,即列的顺序可以任意交换。
交换时,应连同属性名一起交换,否则将得到不同的关系。
4同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。
5关系中各个属性必须有不同的名字,不同的属性可来自同一个域。
v例如,有如下表中关系,职业与兼职是两个不同的属性,但它们取自同一个域,职业={教师,工人,辅导员}。
表3.5关系
6关系中每一分量必须是不可分的数据项,或者说所有属性值都是原子的,即是一个确定的值,而不是值的集合。
满足此条件的关系称为规范化关系,否则称为非规范化关系。
v例如,在表3.6中,籍贯含有省、市/县两项,出现了“表中有表”的现象,则为非规范化关系,而把籍贯分成省、市/县两列,将其规范化,如表3.7所示。
表3.6表3.7
关系的键
1候选键与关系键
Ø能唯一标识关系中元组的属性或属性集,则称该属性或属性集为候选键(CandidateKey),也称候选关键字或候选码。
候选码具有:
唯一性和最小性。
Ø如果一个关系中有多个候选键,可以从中选择一个作为查询、插入或删除元组的操作变量,被选用的候选键称为主关系键(PrimaryKey),或简称为主键、主码、关系键、关键字。
2主属性与非码属性
Ø主属性(PrimeAttribute):
包含在主码中的的各属性称为主属性。
Ø非码属性(Non-PrimeAttribute):
不包含在任何候选码中的属性称为非码属性。
Ø在最简单的情况下,一个候选码只包含一个属性,如学生关系中的“学号”,教师关系中的“教师号”。
Ø在最极终端的情况下,所有属性的组合是关系的候选码,这时称为全码(all-key)。
3外部关系键
Ø如果关系R2的一个或一组属性X不是R2的主码,而是另一关系R1的主码,则该属性或属性组X称为关系R2的外部关系键或外码(Foreignkey)。
并称关系R2为参照关系,关系R1为被参照关系。
v例如学生(学号,姓名,系名),系(系名,地址,系主任),则属性“系名”为学生关系模式的外码,称学生为参照关系,系为被参照关系。
3.1.1.2、关系模式
Ø一个命名关系的属性或关系的描述称为关系模式,可形式化地表示为:
R(U,D,DOM,F)
其中:
•R为关系名;
•U为属性集合;
•D为属性组U中属性的域;
•DOM为属性向域的映像集合(属性的类型、长度);
•F为属性间的数据依赖关系集合。
Ø关系模式通常可以简记为:
R(A1,A2,…,An),A1,A2,…,An为属性名列。
v例如:
课程(课程号,课程名,课时)。
3.1.1.3、关系数据库
Ø关系在某一时刻对应的关系的集合,称为关系数据库。
v例:
见下图3-2所示“教学关系数据库”。
T(教师表)
S(学生表)
C(课程表)
SC(选课表)TC(授课表)
图3-2教学关系数据库
课堂练习一
有如上图3-2所示的教学数据库,请回答下列问题:
1请画出相应的ER图;
2请写出每个关系模式并确定每个关系的主码;
3请确定“选课”关系的外部关系码;
4请写出此教学关系数据库的模式。
3.1.2关系操作
Ø关系操作的对象是关系,结果也是关系。
关系模型中常用的操作包括:
1查询操作:
选择、投影、联接、除、并、差、交等操作。
2更新操作:
增加、删除、修改操作。
Ø关系操作的表达方式:
1关系代数表达式;
2关系演算表达式;
3SQL表达式。
3.1.3关系模型的三类完整性约束
1实体完整性
2参照完整性
3用户定义的完整性
1实体完整性(EntityIntegrity)
Ø实体完整性是指主码的值不能为空或部分为空。
v例如,图3-2中”学生”关系中的主码”学号”不能为空;选课关系中的主码”学号+课程号”不能部分为空,即”学号”和”课程号”两个属性都不能为空。
2参照完整性(Referentialintegrity)
Ø如果关系R2的外部关系码X与关系R1的主码相符,则X的每个值或者等于R1中主码的某一个值,或者取空值。
v如图3-2所示,”选课”关系中”课程号”的取值(如C1或C2),必须在参照的”课程”关系中主码”课程号”的值中能够找到,否则表示把学生选取修了一门不存在的课程。
3用户定义完整性(User-definedIntegrity)
Ø用户定义完整性是针对某一具体关系数据库的约束条件。
它反映某一具体应用所涉及的数据必须满足的语义要求。
v例如,属性值根据实际需要,要具备一些约束条件,如选课关系中成绩不能为负数;某些数据的输入格式要有一些限制,关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。
总结:
在定义一个关系模式时,需要进行以下三个部分的定义:
1数据结构的定义;
2数据操作的定义;
3关系模式的三类完整性规则的定义。
3.2关系代数的基本运算
Ø关系代数的运算对象是关系,运算结果也是关系,关系代数用到的运算符主要包括四类:
1集合运算符:
∪(并),∩(交),-(差),X(广义笛卡尔积);
2专门的关系运算符:
σ(选择),∏(投影),∞(联接),*(自然联接),÷(除);
3算术比较运算符:
>(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于);
4逻辑运算符:
∧(与),∨(或),┐(非)
关系代数的运算按运算对象的不同主要分为两类:
1传统的集合运算:
把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从关系的“水平”方向即行的角度进行的。
包括并、差、交和笛卡尔积等运算。
2专门的关系运算:
不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。
包括选取、投影、联接和除法等运算。
3.2.1传统的集合运算
1.并(Union)
Ø关系R和关系S的并由属于R或属于S的元组组成,即R和S的所有元组合并,删去重复元组,组成一个新关系,其结果仍为n目关系。
记作:
R∪S={t|t∈R∨t∈S}
v对于关系数据库,记录的插入和添加可通过并运算实现。
2.差(Difference)
Ø关系R与关系S的差由属于R而不属于S的所有元组组成,即R中删去与S中相同的元组,组成一个新关系,其结果仍为n目关系。
记作:
R-S={t|t∈R∧┐t∈S}
v通过差运算,可实现关系数据库记录的删除。
3.交(Intersection)
Ø关系R与关系S的交由既属于R又属于S的元组组成,即R与S中相同的元组,组成一个新关系,其结果仍为n目关系。
记作:
R∩S={t|t∈R∧t∈S}
v如果两个关系没有相同的元组,那么它们的交为空。
v两个关系的并和差运算为基本运算(即不能用其他运算表达的运算),而交运算为非基本运算,交运算可以用差运算来表示:
R∩S=R-(R-S)
4.广义笛卡尔积(ExtendedCartesianProduct)
Ø两个分别为n目和m目关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。
若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组,记作
R×S={tr⌒ts|tr∈R,∧ts∈S}
v关系的广义笛卡尔积可用于两关系的联接操作(联接操作将在一节中介绍)来实现。
Ø【例3.1】如图3.3(a)、(b)所示的两个关系R与S为相容关系,(c)为R与S的并,(d)为R与S的交,(e)为R与S的差,(f)为R与S的广义笛卡尔积。
RS
(a)(b)
R∪SR-S
(c)(d)
(e)R∩S
(f)R×S
3.2.2专门的关系运算
Ø由于传统的集合运算,只是从行的角度进行,但是要灵活地实现关系数据库多样的查询操作,就必须引入专门的关系运算。
Ø引入几个概念:
(1)设关系模式为R(A1,A2,……An),它的一个关系为R,t∈R表示t是R的一个元组,t[Ai]则表示元组t中相应于属性Ai的一个分量。
(2)R为n目关系,S为m目关系,tr∈R,ts∈S,trts称为元组的联接,它是一个n+m列的元组,前n个分量为R的一个n元组,后m个分量为S中的一个m元组。
(3)给定一个关系R(X,Z),X和Z为属性组,定义当t[X]=x时,x在R中的象集为Zx={t[Z]|t∈R,t[X]=x},它表示R中的属性组X上值为x的诸元组在Z上分量的集合。
1.选择(Selection)
Ø选择运算是单目运算,是根据一定的条件在给定的关系R中选取若干个元组,组成一个新关系,记作:
σF(R)={t|t∈R∧F(t)为真}
v其中,σ为选取运算符,F为选取的条件,它由运算对象(属性名、常数、简单函数)、算术比较运算符(>,≥,<,≤,=,≠)和逻辑运算符(∨∧┐)联接起来的逻辑表达式,结果为逻辑值“真”或“假”。
v选取运算实际上是从关系R中选取使逻辑表达式为真的元组,是从行的角度进行的运算。
例3.2查询入学成绩大于600分的学生。
σ入学成绩。
600(student)或
Σ5。
600(student)(其中5为department_name的属性序号)
v结果教材P42图3-14所示。
例3.3查询入学成绩大于500分的女学生。
σ入学成绩。
500∧性别=”女”(student)
v结果教材P42图3-15所示。
2.投影(Projection)
Ø投影运算也是单目运算,关系R上的投影是从R中选择出若干属性列,组成新的关系,即对关系在垂直方向进行的运算,从左到右按照指定的若干属性及顺序取出相应列,删去重复元组。
记作:
ΠA(R)={t[A]|t∈R}
v其中A为R中的属性列,Π为投影运算符。
v从其定义可看出,投影运算是从列的角度进行的运算,这正是选取运算和投影运算的区别所在。
选取运算是从关系的水平方向上进行运算的,而投影运算则是从关系的垂直方向上进行的。
例3.4查询学生的姓名及性别。
Π姓名,性别(student)或
Π2,3(student)
v结果如教材P43图3-17图所示。
例3.5查询出计算机系的学生姓名。
Πstudent_name(σdepartment_name=“计算机系”(student))
Ø由例3.5可以看出,投影后取消了某些属性列后,就可能出现重复行,应该取消这些完全相同的行。
所以投影之后,不但减少了属性,元组也可能减少。
课堂练习二:
Ø有如图3-2给出了教学数据库的关系模型及其实例,包含五个关系:
教师关系T、学生关系S、课程关系C、选课关系SC和授课关系TC,分别对应五张表,请完成以下操作:
1查询计算机系的全体学生;
2查询工资高于1000元的男教师;
3查询教师的姓名及其职称;
4查询教师关系中有哪些系;
5查询讲授C5课程的教师号。
课堂练习二答案:
1查询计算机系的全体学生。
σDEPT=’计算机’(S)或
σ5=’计算机’(S)(其中5为DEPT的属性序号)
Ø结果如图所示。
2查询工资高于1000元的男教师。
σ(SAL>1000)∧(SEX=’男’)(T)
Ø结果如图所示。
Ø注意:
字符型数据的值应该使用单引号括起来,例如,‘计算机’,‘男’。
3查询教师的姓名及其职称。
ΠTN,TNO,PROF(T)或
Π2,1,5(T)
(其中2,1,5分别为TN、TNO和PROF的属性序号)
Ø结果下图所示
Ø上例表明,投影运算可以改变关系的属性次序
4
查询教师关系中有哪些系。
ΠDEPT(T)
Ø结果如下图所示
Ø由上例可以看出,投影后取消了某些属性列后,就可能出现重复行,应该取消这些完全相同的行。
所以投影之后,不但减少了属性,元组也可能减少,新关系与原关系不相容。
5查询讲授C5课程的教师号。
ΠTNO(σCNO=’C5’(TC))
Ø结果如下图所示。
Ø本例中选取运算和投影运算相结合,先在授课表中选取满足条件的元组,再于TNO属性上进行投影。
3.联接(Join)
Ø联接运算是二目运算,是从两个关系的笛卡尔积中选取满足联接条件的元组,组成新的关系。
记作:
R∞S={tr⌒ts|tr∈R∧ts∈S∧tr[A]θts[B]为真}
AθB
v其中,∞是联接运算符,θ为算术比较运算符,也称θ联接;
Ø两种重要的联接运算:
♦称为等值联接;
♦自然联接
(1)等值联接:
θ为“=”时联接运算称为等值联接,即:
R∞S={tr⌒ts|tr∈R∧ts∈S∧tr[A]=ts[B]}
AθB
(2)自然联接:
是一种特殊的等值联接,它要求运算的两个关系在同名属性上有相同的值,并要求把联接结果中重复的属性列去掉。
即如果R与S具有相同的属性组B,则自然联接可记作:
R∞S={tr⌒ts|tr∈R∧ts∈S∧tr[B]=ts[B]}
v自然联接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。
Ø联接运算为非基本运算,可以用选取运算和广义笛卡尔积运算来表示:
R∞S=σAθB(R×S)
v见教材P44例3-15。
例3.6如下图3-3(a)、(b)所示的两个关系R与S,(c)为R和S的大于联接(C>D),(d)为R和S的等值联接(C=D),(e)为R和S的等值联接(R.B=S.B),(f)为R和S的自然联接。
RS
(a)(b)
大于联接(C>D)等值联接(C=D)
(c)(d)
(e)等值联接(R.B=S.B)(f)自然联接
图3-3联接运算举例
结合上例,我们可以看出等值联接与自然联接的区别:
Ø等值联接中不要求相等属性值的属性名相同,而自然联接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然联接。
如上例R中的C列和S中的D列可进行等值联接,但因为属性名不同,不能进行自然联接。
Ø等值联接不将重复属性去掉,而自然联接去掉重复属性,也可以说,自然联接是去掉重复列的等值联接。
如上例R中的B列和S中的B列进行等值联接时,结果有两个重复的属性列B,而进行自然联接时,结果只有一个属性列B。
4.除(Division)
Ø定义:
象集(imageset)给定一个关系R(X,Z),X和Z为属性组,定义当t[X]=x时,x在R中的象集为Zx,其中Zx={t[Z]|t∈R,t[X]=x}。
象集Zx表示R中的属性组X上值为x的诸元组在Z上分量的集合。
例如下图3-4所示的关系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
图3-4关系
属性A的值域为{a1,a2,a3,a4}其中:
a1的象集为{(b1,c1),(b2,c3),b2,c1}
a2象集为{(b3,c7),(b2,c3)}
a3象集为{(b4,c6)}
Ø除法运算是二目运算,设有关系R(X,Y)与关系S(Y,Z),其中X,Y,Z为属性集合,关系R除以关系S所得的商是一个新关系P(X),P是R中满足下列条件的元组在X上的投影:
元组在X上分量值x的象集Yx包含S在Y上投影的集合。
记作:
R÷S={tr[X]|tr∈R∧Πy(S)Yx}
Ø其中,Yx为x在R中的象集,x=tr[X]。
Ø除法运算为非基本运算,可以表示为:
R÷S=Πx(R)-Πx(Πx(R)×S-R)
例3.8已知关系R和S,如图3-5(a),(b)所示,则R÷S如图(c)所示。
Ø与除法的定义相对应,本题中
X={A}={a1,a2,a3,a4,},Y={B,C}={(b1,c2),(b3,c7),(b4,c6),(b2,c3),(b6,c6),(b2,c1)}
Z={D}={d1,d2}。
其中,关系R中的元组在X上各个分量值的象集分别为:
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)}
Ø显然只有a1的象集包含S在(B,C)上的投影,所以R÷S={a1}
图3-5RSR÷S
Ø除法运算同时从行和列的角度进行运算,适合于包含“部”之类的短语的查询。
例3.9查询例表3-6所示关系中选修了全部课程的学生学号。
ØC(课程表)SC(选课表)
ΠSNO,CNO(SC)÷ΠCNO(C)={s4}
3.3关系演算
Ø关系演算是以数理逻辑中的谓词演算为基础的,通过谓词形式来表示查询表达式。
Ø根据谓词变元的不同,可将关系演算分为元组关系演算和域关系演算。
3.3.1元组关系演算
Ø元组关系演算是以元组变量作为谓词变元的基本对象。
其查询表达式为:
{t∣P(t)}
3.3.2域关系演算
Ø域关系演算是以域变量作为谓词变元的基本对象。
其查询表达式为:
{
3.4综合举例
见教材P49:
Ø例[3-21]
Ø例[3-22]
Ø例[3-23]
Ø例[3-24]
Ø例[3-25]
Ø例[3-26]
3.5数据库的修改
3.5.1删除元组
r←r-E
3.5.2插入元组
r←r∪E
3.4.3更新已有元组的属性
r←∏F1,F2,…,Fn(r)
课堂练习三
1、一数据库的关系模式如下:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
用关系代数表达式表达下列查询语句:
1检索LIU老师所授课程的课程号;
2检索年龄大于23岁的男同学的学号、姓名;
3检索WANG同学所学课程的课程号;
4检索选修了LIU老师所授的全部课程的学生姓名。
2、一数据库的关系模式如下:
Ø供应商关系S(S#,Sname,,City)(关系S中的S#,Sname,City分别表示供应商号、供应商名及供应商所在城市)
Ø零件关系P(P#,Pname,Color)(关系P中的P#,Pname,Color分别表示零件号、零件名及零件颜色)
Ø供应关系SP(S#,P#,qty)(关系SP中的S#,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 关系数据库基本理论 关系 数据库 基本理论
![提示](https://static.bdocx.com/images/bang_tan.gif)