【文档说明】数据库原理与应用教程(第3版)第3章-关系数据库课件.ppt,共(77)页,3.017 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92521.html
以下为本文档部分文字说明:
第3章关系数据库•3.1关系模型概述•3.2关系数据模型的基本术语与形式化定义•3.3关系模型的完整性约束•3.4关系代数3.1关系数据模型概述•关系数据结构•关系操作•数据完整性约束3.1关系数据结构•关系数据模型源于数学。•用二维表来组织数据,这个二维表在关系数
据库中就称为关系。•关系数据库就是表或者说是关系的集合。•关系系统要求让用户所感觉的数据库就是一张张表。•在关系系统中,表是逻辑结构而不是物理结构。关系操作•传统的关系运算:并(Union)交(Intersection)差(Difference)广义笛卡尔乘积(Exte
ndedCartesianProduct)•专门的关系运算:•选择(Select)•投影(Project)•连接(Join)•除(Divide)关系模型的数据操作•主要包括:查询、插入、删除和修改数据。•是基于集合的操作,操作对象和操作结果
都是集合(或关系)。•是非过程化的。数据完整性约束•数据完整性是指数据库中存储的数据是有意义的或正确的。•主要包括三大类:•实体完整性•参照完整性•用户定义的完整性关系数据模型的基本术语•关系:关系就是二维表。并满足如下性质:关系表中的每一
列都是不可再分的基本属性;表中的行、列次序并不重要。•属性:表中的每一列是一个属性值集,列可以命名,称为属性名。•值域:属性的取值范围。如,性别只能是‘男’和‘女’两个值。关系数据模型的基本术语(续)•元组:表中的每一行称作是一个元组,它相当于一个记录值。•分量:元组中
的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量。•关系模式:关系模式是关系的“型”或元组的结构共性的描述。关系模式实际上对应关系表的表头。设关系名为R,属性分别为A1,A2,„,An,则关系模式可以表示为:R(A1,A2,…,An)关系
数据模型的基本术语(续)•关系数据库:对应于一个关系模型的所有关系的集合称为关系数据库。•候选码:能够惟一标识关系中的一个元组的一个属性或最小属性组。•主码:指定候选码中的一个作为主码。关系数据模型的基本术语(续)•主属性:包含在任一候选码中的属性称为是主属性。•
非主属性:不包含在任一候选码中的属性称为是非主属性。•外码:如果某个属性不一定是所在关系的码,但是其他关系的码,则称该属性为外码。关系数据结构及其形式化定义•1.关系的形式化定义笛卡尔积:设D1,D2,
…,Dn为任意集合,定义笛卡尔积D1,D2,…,Dn为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}其中每一个元素(d1,d2,…,dn)称为一个n元组,简称元组。
元组中每一个di称为是一个分量。笛卡儿乘积示例设:D1={计算机专业,信息科学专业}D2={张珊,李海,王宏}D3={男,女}则D1×D2×D3笛卡尔积为:D1×D2×D3={(计算机软件专业,张珊,男),(计算机软件专业,张珊,女),(计算机软件专业,李海
,男),(计算机软件专业,李海,女),(计算机软件专业,王宏,男),(计算机软件专业,王宏,女),(信息科学专业,张珊,男),(信息科学专业,张珊,女),(信息科学专业,李海,男),(信息科学专业,李海,女),(信息科学专业,王宏,男),(信息科学专业,王宏,女)}笛卡尔积实际上就是一个二维表
计算机专业信息科学专业D1张珊李海王宏D2×男女D3×计算机软件专业计算机软件专业计算机软件专业计算机软件专业计算机软件专业计算机软件专业信息科学专业信息科学专业信息科学专业信息科学专业信息科学专业信息科学
专业=张珊张珊李海李海王宏王宏张珊张珊李海李海王宏王宏男女男女男女男女男女男女D1D2D3•笛卡尔积D1,D2,…,Dn的任意一个子集称为D1,D2,…,Dn上的一个n元关系。•形式化的关系定义同样可以把关系看成二
维表,给表的每个列取一个名字,称为属性。•n元关系有n个属性,一个关系中的属性的名字必须是唯一的。•属性Di的取值范围(i=1,2,…,n)称为该属性的值域(domain)。•从集合论的观点也可以将关系定义为:关系是一个有K个属性的元组的集合。2.对关系的限定•关系中
的每个分量都必须是不可再分的最小数据项。•表中列的数据类型是固定的,即每个列中的分量是同类项的数据,来自相同的值域。•不同的列的数据可以取自相同的值域,每个列称为一个属性,每个属性有不同的属性名。•关系表中行、列的顺
序不重要。•同一个关系中元组不能重复。3.3关系模型的完整性约束•3.3.1实体完整性•3.3.2参照完整性•3.3.3用户定义的完整性实体完整性•实体完整性是保证关系中的每个元组都是可识别的和惟一的。•而且表中不允许存在如下的记录:•无主码值的记录•主码值相同的记录参照完整性•
参照完整性一般是指多个实体(表)之间的关联关系。用于描述实体之间的联系。•一般用外码实现。外码:取作本表(子表)属性之一的外表(父表,主表)主码。•主码值先在主表中生成,后在子表中引用外码引用例1学生班
属于(学号,姓名,班号,…)(班号,专业,人数,…)外码引用例2学生课程修课(学号,姓名,…)(课程号,课程名,…)(学号,课程号,成绩,…)外码引用例3职工(职工号,姓名,性别,直接领导)参照完整性规则•参照完整性规则就是定义外码与主码之间的引用规则。•对于外码,一般应符合如下要求:
•或者值为空;•或者等于其所应用的关系中的某个元组的主码值。用户定义的完整性按应用语义,属性数据有:•类型与长度限制:方便计算机操作•取值范围限制:防止属性值与应用语义矛盾语义许可取值范围约束例:成绩取[0..100]{优、良、中、及格、不及格}3.4关系代数•关
系模型源于数学,关系是由元组构成的集合,可以通过关系的运算来表达查询要求,•关系代数是关系操作语言的一种传统的表示方式,它是一种抽象的查询语言。•关系代数的运算可分为两大类:•传统的集合运算:广义笛卡尔积运算、并、交和差运算。•专门的关系运算:选择、投影、连接和除运算。关系
运算符运算符含义传统的集合运算∪并∩交-差×广义笛卡尔积专门的关系运算σ选择∏投影连接÷除关系运算符(续)运算符含义比较运算符>大于<小于=等于≠不等于≤小于等于≥大于等于逻辑运算符非∧与∨或3.4.1传统的集合运算•传统的集合运算是二目运算,•设关系R和S均是n元关系,且相应的属性值取自同一个值
域,则可以定义三种运算:•并运算(∪)•交运算(∩)•差运算(―)1.并运算•关系R与关系S的并记为:R∪S={t|t∈R∨t∈S}•其结果仍是n目关系,由属于R或属于S的元组组成。顾客号姓名性别年龄S01张宏男45S02李丽女34S03王敏女28顾客号姓名性别年龄S0
2李丽女34S04钱景男50S06王平女24顾客号姓名性别年龄S01张宏男45S02李丽女34S03王敏女28S04钱景男50S06王平女242.交运算•关系R与关系S的交记为:R∩S={t|t∈R∧t∈S}•其结果仍是n目关系,由属于R并且也属于S的元组组
成。顾客号姓名性别年龄S01张宏男45S02李丽女34S03王敏女28顾客号姓名性别年龄S02李丽女34S04钱景男50S06王平女24顾客号姓名性别年龄S02李丽女343.差运算•关系R与关系S的差记为:R-S={t|t∈R∧t∈S}•其结果
仍是n目关系,由属于R并且也属于S的元组组成。顾客号姓名性别年龄S01张宏男45S02李丽女34S03王敏女28顾客号姓名性别年龄S02李丽女34S04钱景男50S06王平女24顾客号姓名性别年龄S01张宏男45S03王敏女284.广义笛卡
尔积•两个分别为n目和m目的关系R和关系S的广义笛卡尔积是一个(n+m)列的元组的集合。•元组的前n个列是关系R的一个元组,后m个列是关系S的一个元组。•若R有K1个元组,S有K2个元组,则关系R和关系S的广义笛卡尔积有K1×K2个元组,记做:R×S={tr^ts|t
r∈R∧ts∈S}•tr^ts表示由两个元组tr和ts前后有序连接而成的一个元组。广义笛卡尔积示例ABa1b1a2b2CDEc1d1e1c2d2e2c3d3e3ABCDEa1b1c1d1e1a1b1c2d2e2a1b1c3d3e3a2b2c1d1e1a2b2c2
d2e2a2b2c3d3e33.4.2专门的关系运算专门的关系运算包括:投影、选择、连接和除等操作。•选择•投影•连接•除二元一元学生信息管理系统snosnamessexsagesdept9512101李勇男19计算机系9512102刘晨男20计算机系9512013王敏女
20计算机系9521101张立男22信息系9521102吴宾女21信息系9521103张海男20信息系9531101钱小平女18数学系9531102王大力男19数学系Studentcnocnamecreditsemesterc01计算机文化学31c0
2VB22c03计算机网络46c04数据库基础66c05高等数学82c06数据结构54Coursesnocnograde9512101c01909512101c02869512102c02789512102c04669521102c01829521102c02759521102c0
4929521102c0550SC1.选择(Selection)σF(R)={r|r∈R∧F(t)=‘真’}•其中:σ是选择运算符,R是关系名,r是元组,F是逻辑表达式,取逻辑“真”值或“假”值。•例,选择系为计算机系的学生信息:σSdept=‘计算机系’(Student)snosnames
sexsagesdept9512101李勇男19计算机系9512102刘晨男20计算机系9512013王敏女20计算机系2.投影(Projection)∏A(R)={r.A|r∈R}•其中:•∏是投影运算符,•R是关系名,•A是被投影的属性或属性组。•r.A表示r这个元组中相应于
属性(集)A的分量,也可以表示为r[A]。2.投影(Projection)例如,选择sname,sdept两个列构成新关系:∏sname,sdept(Student)snamesdept李勇计算机系刘晨计算机系王敏计算机系张立信息系吴宾信息系张海信息系钱小平数学系王大力数学系3.
连接其中:•A和B分别是关系R和S上可比的属性组,•θ是比较运算符,•连接运算从R和S的广义笛卡尔积R×S中选择(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较运算符θ的元组。AθBRS={tr^ts|tr∈R∧ts∈S∧
tr[A]θts[B]}等值连接•当θ为“=”时的连接为等值连接,•是从关系R与关系S的广义笛卡尔积中选取A,B属性值相等的那些元组。A=BRS={tr^ts|tr∈R∧ts∈S∧tr[A]=ts[B]}StudentSCStudent.sno=SC.snosnosnamessexsage
sdeptsnocnograde9512101李勇男19计算机系9512101c01909512101李勇男19计算机系9512101c02869512102刘晨男20计算机系9512102c02789512102刘晨男20计算机系9512102c04669521
102吴宾女21信息系9521102c01829521102吴宾女21信息系9521102c02759521102吴宾女21信息系9521102c04929521102吴宾女21信息系9521102c0550自然连接•自然连接去掉结果中的重复列。•自然连接与等值连接的差别为:自然连接要求相等
的分量必须有共同的属性名,等值连接则不要求;自然连接要求把重复的属性名去掉,等值连接却不这样做。RS={tr^ts|tr∈R∧ts∈S∧tr[A]=ts[B]}StudentSCsnosnamessexsagesdeptcnograde9512101李勇男19计算机系c01909512
101李勇男19计算机系c02869512102刘晨男20计算机系c02789512102刘晨男20计算机系c04669521102吴宾女21信息系c01829521102吴宾女21信息系c02759521102吴宾女21信息系c
04929521102吴宾女21信息系c05504.除(Division)除法的一般形式设有关系R(X,Y)和S(Y,Z),其中X、Y、Z为关系的属性组,则:R(X,Y)÷S(Y,Z)=R(X,Y)÷∏Y(S)除(续)•象集:给定一个关系R(X,Y),X和Y
为属性组。定义,当t[X]=x时,x在R中的象集为:Yx={t[Y]|t∈R∧t[X]=x}上式中:t[Y]和t[X]分别表示R中的元组t在属性组Y和X上的分量的集合。RSR÷S(a)(b)(c)补充例题ABCDa1b2c3d5
a1b2c4d6a2b4c1d3a3b5c2d8CDEc3d5e3c4d6e4ABa1b2其中,元组在X上各个分量值的象集分别为:(a1,b2)的象集为{(c3,d5),(c4,d6)}(a2,b4)的象集为{(c1,d3)}(a3,
b5)的象集为{(c2,d8)}S在Y上的投影为{(c3,d5),(c4,d6)}5.除(续)除法的一般形式:设有关系R(X,Y)和S(Y,Z),其中X、Y、Z为关系的属性组,则:R÷S={tr[X]|tr∈R∧
∏Y(S)包含于Yx}•在关系R中,A属性可以取{a1,a2,a3,a4}。其中•a1的象集为{(b1,c2),(b2,c3),(b2,c1)}•a2的象集为{(b3,c7),(b2,c3)}•a3的象集为{(b4,c6
)}•a4的象集为{(b6,c6)}ABCa1a2a3a1a4a2a1b1b3b4b2b6b2b2c2c7c6c3c6c3c1BCDb1b2b2c2c1c3d1d1d2关系R关系SRSR÷S(a)(b)(c)补充例题ABC
Da1b2c3d5a1b2c4d6a2b4c1d3a3b5c2d8CDEc3d5e3c4d6e4ABa1b2已知关系R和S,如图(a)(b)所示,则R÷S如图(c)所示。本题中X={A,B}={(a1,b2),(a2,b4),(a3,b5)},Y={C,D},Z={E}其中,元组在X上各个分量
值的象集分别为:(a1,b2)的象集为{(c3,d5),(c4,d6)}(a2,b4)的象集为{(c1,d3)}(a3,b5)的象集为{(c2,d8)}S在Y上的投影为{(c3,d5),(c4,d6)}显然只有(a1,b2)的象集包含S在Y上的投影,所以R÷S={(a
1,b2)}示例查询修c02号课程的学生的学号和成绩。查询计算机系修c02号课程的学生的姓名和成绩。查询修了第2学期课程的学生的姓名和所在系。关系除法运算分下面4步进行:1)将被除关系的属性分为象集属性和结果属性:与除关系相同的属性属于象集属
性,不相同的属性属于结果属性。2)在除关系中,对与被除关系相同的属性(象集属性)进行投影,得到除目标数据集。3)将被除关系分组,原则是,结果属性值一样的元组分为一组。4)逐一考察每个组,如果它的象集属性值中包括除目标数据集,则对应的结果属性值应属于该除法运算结果集。4步进行【例4-5】给出
选课、选修课和必修课3个关系,它们的关系模式为:选课(学号,课号,成绩);选修课(课号,课名);必修课(课号,课名).学号课号成绩课号课名S1C1AC2计算机图形学S1C2B必修课S1C3BS2C1A课
号课名S2C3BC1数据结构S3C1BC3操作系统S3C3B选课÷选修课S4C1AS4C2A学号成绩S5C2BS1BS5C3BS4AS5C1AS5B学号成绩学号S3BS1S2S3S5选课÷必修课π学号
,课号(选课)÷必修课除法解析例题•在关系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,c3),(b2,c1)}•显然,只有a1的象集(B,C)a1包含了S在(B,C)属性组上的投影,所以R÷S={a1}
ABCa1a2a3a1a4a2a1b1b3b4b2b6b2b2c2c7c6c3c6c3c1BCDb1b2b2c2c1c3d1d1d2关系R关系SAa1R÷S除法解析例题•在关系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,c3),(b2,c1)}•显然,只有a1的象集(B,C)a1包含了S在(B,C)属性组上的投影,所以R÷S={a1}ABCa1a2a3a1a4a2a1b1b3b4b2b6b2b2c2c7c6c3c6c3c1BCDb1b2b2c2c1c3d1d1d2关系R关系SAa1
R÷S4.2.3用关系代数表示检索的例子学生选课库的关系模式为:学生(学号,姓名,性别,年龄,所在系);课程(课程号,课程名,先行课);选课(学号,课程号,成绩).【例4-6】求选修了课程号为“C2”课程的学生学号。π学号(σ课程号=‘C2’(选课))【例4-7】求选修了课程号为“C
2”课的学生学号和姓名。π学号,姓名(σ课程号=‘C2’(选课学生))【例4-8】求没有选修课程号为“C2”课程的学生学号。π学号(学生)-π学号(σ课程号=‘C2’(选课))本题不能写为:π学号(σ课程号≠'C
2'(选课))用关系代数表示检索的例子【例4-9】求既选修“C2”课程,又选修“C3”课程的学生学号。π学号(σ课程号=‘C2’选课))∩π学号(σ课程号=‘C3‘(选课))该题不能写为:π学号(σ课程号='C2'∧课程号='C3'(选课))【例4-10】求选修课程号为“C2”或“C3”课程的学生
学号。π学号(σ课程号=‘C2‘(选课))∪π学号(σ课程号=’C3‘(选课))或π学号(σ课程号='C2'∨课程号='C3'(选课))【例4-11】求选修了全部课程的学生学号。π学号,课程号(选课÷课程)【例
4-12】一个学号为“98002”的学生所学过的所有课程可能也被其他学生选修,求这些学生的学号和姓名。π学号,姓名((π学号,课程号(选课)÷π课程号(σ学号=‘98002’(选课)))(学生))除(续
)•2)除操作是同时从行和列角度进行运算•3)举例[例6](p62)÷RS除(续)ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2R÷SA
a1RS除(续)ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCb1c2b2c1b2c3R÷SAa1RS分析:在关系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)}只有a1的象集包含了S在(B,C)属性组上的投影
所以R÷S={a1}SNOSNAMECNOCNAMES1BAOC1DBS1BAOC2OSS1BAOC3DSS1BAOC4MISS2GUC1DBS2GUC2OSS3ANC2OSS4LIC2OSS4LIC4MISCNOCNAMEC2OSCNOCN
AMEC2OSC4MISCNOCNAMEC1DBC2OSC4MISS1S2S3RR÷S1SNOSNAMES1BAOS2GUS3ANS4LISNOSNAMES1BAOS4LISNOSNAMES1BAOR÷S2R÷S
3S1、S2、S3表示课程情况R表示选修课程?ABCDabcdabefabhkbdefbddlcKcdckefRCDcdefR÷SABabckS举例:学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept95001李勇男20CS95
002刘晨女19IS95003王敏女18MA95004张立男19ISStudentCourse课程号课程名先行课学分CnoCnameCpnoCcredit1数据库542数学23信息系统144操作系统63
5数据结构746数据处理27PASCAL语言64SC学号课程号成绩SnoCnoGrade95001192950012859500138895002290950023805.综合举例以学生-课程数据库为例(P.59)[例7]查询至少选修1号课程和3号课程的学生号码首
先建立一个临时关系K:然后求:πSno.Cno(SC)÷KCno13综合举例(续)•例7续πSno.Cno(SC)95001象集{1,2,3}95002象集{2,3}πCno(K)={1,3}于是:πSno.Cno(SC)÷K={95001}SnoCno950011
950012950013950022950023综合举例(续)[例8]查询选修了2号课程的学生的学号。πSno(σCno='2'(SC))={95001,95002}综合举例(续)[例9]查询至少选修了一门其直接先行课为5号课程的课程的
学生姓名。πSname(σCpno='5'(CourseSCStudent))或πSname(σCpno='5'(Course)SCπSno,Sname(Student))或πSname(πSno(σCpno='5'(Course)S
C)πSno,Sname(Student))综合举例(续)[例10]查询选修了全部课程的学生号码和姓名。πSno,Cno(SC)÷πCno(Course)πSno,Sname(Student)查询修c02号课程的学生的学号和成绩。∏sno,grad
e(σcno=‘c02’(SC))查询计算机系修c02号课程的学生的姓名和成绩。∏sname,grade(σcno=‘c02’∧σsdept=‘计算机系’(SCStudent))或∏sname,grade(σcno=‘c02’(SC)σsdept=‘
计算机系’(Student))查询修了第2学期课程的学生的姓名和所在系。∏sname,sdept(σsemester=2(Course)SCStudent)查询修了全部课程的学生的学号和姓名。∏sno,sname(Student(∏sno,cno(S
C)÷∏cno(Course)))例题作业P39习题3,4