您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 数据库系统概论 第2章关系数据库
1第二章关系数据库2.1关系模型概述2.2关系数据结构及形式化定义2.3关系的完整性2.4关系代数2.5关系演算22.1关系模型概述(1)单一的数据结构——关系(2)关系操作(3)关系的三类完整性约束关系操作的特点:一次一集合方式非关系操作的特点:一次一记录方式关系数据语言关系代数语言关系演算语言元组关系演算语言域关系演算语言具有关系代数和关系演算双重特点的语言SQL实体完整性参照完整性用户定义的完整性关系模型的操作包括:查询和更新32.2关系数据结构及形式化定义1.域定义:域是一组具有相同数据类型的值的集合。例如:自然数{1,2,3……n}实数{‘A’,‘B’}小于100的正整数{1,2,3,……100}2.笛卡尔积定义:给定一组域D1,D2,……,Dn,这些域中可以有相同的。D1,D2,……,Dn的笛卡尔积为:D1×D2×……×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}元组分量域的基数:集合的元素个数。4笛卡尔积的基数:若Di(i=1,2,……n)为有限集,其基数为mi(i=1,2,……,n),则D1×D2×……×Dn的基数M为:niimM1笛卡尔积一个二维表元组表的行域表的列例:D1={‘A’,‘B’}D2={3,5,9}D1×D2={(‘A’,3),(‘A’,5),(‘A’,9),(‘B’,3),(‘B’,5),(‘B’,9)}D1的基数为2;D2的基数为3;D1×D2的基数为6;‘A’3‘A’5‘A’9‘B’3‘B’5‘B’9D1D25例子:三个域:D1=supervisor={张清政,刘逸}D2=speciality={计算机,信息}D3=postgraduate={李勇,刘晨,王敏}D1,D2,D3的笛卡积为:D1×D2×D3={(张清政,计算机,李勇),(张清政,计算机,刘晨),(张清政,计算机,王敏),(张清政,信息,李勇),(张清政,信息,刘晨),(张清政,信息,王敏),(刘逸,计算机,李勇),(刘逸,计算机,刘晨),(刘逸,计算机,王敏),(刘逸,信息,李勇),(刘逸,信息,刘晨),(刘逸,信息,王敏)}该笛卡尔积的基数为:2×2×3=12笛卡积二维表3列12行P49该表的数据有现实意义吗?63.关系定义:D1×D2×…×Dn的子集称为在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)关系的名字关系的目或度关系二维表属性表的列元组表的行属性例子:我们可以从表2.1取出一个子集来构造一个关系。这个关系名字为SAP,语义为:一个导师只有一个专业,一个专业可有多名导师;一个研究生只有一个专业,一个专业可有多名研究生;一个导师指导多名研究生,一名研究生只有一个导师。7这个关系可以表示为:SAP(supervisor,speciality,postgraduate)supervisor={张清政,刘逸}speciality={计算机,信息}postgraduate={李勇,刘晨,王敏}关系SAP(supervisor,speciality,postgraduate)可包含三个元组:postgraduatesupervisorspeciality张清政张清政刘逸信息信息信息李勇刘晨王敏postgraduate8候选码:若关系中的某一属性组能唯一地标识一个元组,则称为该属性组为候选码。主码:选定的一个候选码。主属性:候选码的诸属性。非主码属性:不包含在任何候选码中的属性。9例子1:关系S(S#,SN,SD,SA)关系S的候选码:(S#),(SN)关系S的主码:(S#)关系S的主属性:S#关系S的非码属性:SD,SA例子2:关系SC(S#,C#,G)关系SC的候选码:关系SC的主码:关系SC的主属性:关系SC的非码属性:(S#,C#)(S#,C#)S#,C#G例子3:关系R(P,W,A)关系R的候选码:(P,W,A)关系R的主码:(P,W,A)关系R的主属性:P,W,A关系R的非码属性:全码10例子4:关系SAP(supervisor,speciality,postgraduate)Supervisorspecialitypostgraduate张清政信息李勇张清政信息刘晨刘逸信息王敏关系SAP的候选码:关系SAP的主码:关系SAP的主属性:关系SAP的非码属性:(postgraduate)(postgraduate)postgraduateSupervisor,speciality11对关系定义的一些限定和扩充:(1)无限关系在数据库系统中是无意义的。(2)关系元组(d1,d2,…,di,dj,…,dn)=(d1,d2,…,dj,di,…,dn)关系具有的六条性质:(1)列是同质的。(2)不同列可出自同一个域。(3)列的次序可任意交换。(4)任意两个元组不能完全相同。(5)行的次序可任意交换。(6)分量必须取原子值,即每一个分量都必须是不可分的数据项。p46122.2.2关系模式关系模式简记为:R(A1,A2,…,An)形式化表示为:五元组R(U,D,dom,F)关系名属性集合域集合属性向域的映象集合属性间数据的依赖关系集合例子:选修关系可简记为:SC(Sno,Cno,G)形式化表示为:SC(U,D,dom,F)U={Sno,Cno,G}D={字符型,数值型}dom(Sno)=dom(Cno)=字符型;dom(G)=数值型;F={(Sno,Cno)G}132.3关系的完整性1.实体完整性实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。例子1:关系S(S#,SN,SD,SA)关系S的主码:(S#)关系S的主属性:S#(nul,张三,计算机系,20)例子2:关系SC(S#,C#,G)关系SC的主码:关系SC的主属性:(S#,C#)S#C#(nul,nul,A)(nul,0-12,B)(001,nul,B)142.参照完整性p50例子1:S(S#,SN,A#,SA)A(A#,AN)关系S的属性A#的取值需要参照关系A的主码A#取值例子2:S(S#,SN,A#,SA)C(C#,CN,CG)SC(S#,C#,G)关系SC的属性S#、C#的取值需要参照关系S的主码S#和关系C的主码C#的取值例子3:S2(S#,SN,A#,SA,MS#)关系S2的属性MS#的取值需要参照关系S2的主码S#取值15定义:设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码,并称基本关系R为参照关系,基本关系S为被参照关系。例子1:p50S(S#,SN,A#,SA)A(A#,AN)SAA#参照关系被参照关系外码例子2:S(S#,SN,A#,SA)C(C#,CN,CG)SC(S#,C#,G)SCSCS#C#例子3:S2(S#,SN,A#,SA,MS#)S2S2MS#16参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的取值必须为:(1)或为取空值;(2)或为S中的主码值;例子1:p51S(S#,SN,A#,SA)A(A#,AN)例子2:S(S#,SN,A#,SA)C(C#,CN,CG)SC(S#,C#,G)可取两种值可取一种值17例子3:S2(S#,SN,A#,SA,MS#)可取两种值3.用户定义的完整性是一组针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。182.4关系代数关系代数运算运算对象运算符运算结果关系关系运算符p52集合运算:专门的关系运算:比较运算:===逻辑运算:192.4.1传统的集合运算设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则可有如下定义:1.并}|{StRttSR2.差}|{StRttSR3.交}|{StRttSR20设有两个分别为n目和m目的关系R和S,则有如下定义:4.笛卡尔积}|{StRtttSRsrsr例子:ABCRa1a1a2b1b2b2c1c2c1ABCSa1a1a2b2b3b2c2c2c1ABCRSa1a1a2a1b1b2b2b3c1c2c1c221ABCRa1a1a2b1b2b2c1c2c1ABCSa1a1a2b2b3b2c2c2c1ABCRSa1a2b2b2c2c1ABCR-Sa1b1c122RSa1a1a1a1a1a1a2a2a2ABCABCb1b1b1b2b2b2b2b2b2c1c1c1c2c2c2c1c1c1a1a1a2a1a1a2a1a1a2b2b3b2b2b3b2b2b3b2c2c2c1c2c2c1c2c2c1ABCRa1a1a2b1b2b2c1c2c1ABCSa1a1a2b2b3b2c2c2c123SnoSnameSsexSageSdept李勇刘晨王敏张立95001950029500395004CSISMAIS男女女男20191819CnoCnameCpnoCcredit1234567数据库数学信息系统操作系统数据结构数据处理PASCAL语言516764243424学生-课程数据库:Student表:SC表:Course表:SnoCnoGrade950019500195001950029500212323928588908024例子:将一个新学生记录(‘95020’,‘陈冬’,‘男’,18,‘IS’,)插入student表中.student∪{(‘95020’,‘陈冬’,‘男’,18,‘IS’)}例子:删除所有学生选课记录.sc-sc例子:删除计算机系的所有学生的信息。)(''studentstudentcssdept例子:查询计算机系且年龄不大于19岁的学生信息。)()(19''studentstudentsagecssdept=例子:查询同时选修了1号课程和2号课程的学生学号。))(())(('2''1'scsccnosnocnosno))()(('2''1'scsccnocnosno))(('2''1'sccnocnosno25几个符号:(1)设有关系R(A1,A2,……An)。tR表示t是R的一个元组。t[Ai]表示元组t中相应属性Ai的一个分量。例子:student(sno,sname,ssex,sage,sdept)(‘95001’,‘李勇’,‘男’,20,‘CS’)student(‘95001’,‘李勇’,‘男’,20,‘CS’)[Sname]=‘李勇’(2)若A={Ai1,Ai2,……,Aik},其中Ai1,Ai2,……,Aik是A1,A2,……An中的一部分。则A称为属性列或域列。t[A]=(t[Ai1],t[Ai2]……t[Aik])表示元组t在属性列A上诸分量的集合。A则表示{A1,A2,……An}中去掉{Ai1,Ai2,……Aik}后的属性组。2.4.2专门的关系运算26例子:A={sno,sname,sage}(‘95001’,‘李勇’,‘男’,20,‘CS’)[A]=(‘95001’,‘李勇’,20)(‘95001’,‘李勇’,‘男’,20,‘CS’)[]=(‘男’,‘CS’)A(3)给定一个关系R(X,Z),X和Z是属性组。定义,当t[X]=x时,x在R中的象集为:}][,|][{xXtRtZtZx例子:student(sno,sname,ssex,sage,sdept)95001的象集为:{(李勇,男,20,CS)}95002的象集为:{(刘晨,女,19,IS)}信息系(IS系)IS的象集为:{(95002,刘晨,女,19),(95004,张立,男,19)}(李勇,男)的象集为:{(95001,20,CS)}271.选择})(|{)(真’‘tFRttRF例子1:查询信息系(IS系)的全体学生.)()(''5''studentstudentISISsdeptSnoSnameSsexSageSdept刘晨张立9500295004ISIS女男1919SnoSnam
本文标题:数据库系统概论 第2章关系数据库
链接地址:https://www.777doc.com/doc-3603120 .html