数据库概论必考经典例题课后重点答案课件

上传人:无*** 文档编号:241431327 上传时间:2024-06-25 格式:PPT 页数:43 大小:393.50KB
返回 下载 相关 举报
数据库概论必考经典例题课后重点答案课件_第1页
第1页 / 共43页
数据库概论必考经典例题课后重点答案课件_第2页
第2页 / 共43页
数据库概论必考经典例题课后重点答案课件_第3页
第3页 / 共43页
点击查看更多>>
资源描述
3.用用SQL语句建立第二章习题语句建立第二章习题5中的四个表:中的四个表:供应商关系:S(SNO,SNAME,STATUS,CITY)零件关系:P(PNO,PNAME,COLOR,WEIGHT)工程项目关系:J(JNO,JNAME,CITY)供应情况关系:SPJ(SNO,PNO,JNO,QTY)1 定义的关系S有四个属性,分别是供应商号(SNO)、供应商名(SNAME)、状态(STATUS)和所在城市(CITY),属性的类型都是字符型,长度分别是4、20、10和20个字符。主键是供应商编号SNO。在SQL中允许属性值为空值,当规定某一属性值不能为空值时,就要在定义该属性时写上保留字“NOTNULL”。本例中,规定供应商号和供应商名不能取空值。由于已规定供应商号为主码,所以对属性SNO的定义中的“NOTNULL”可以省略不写。CREATETABLES(SNOCHAR(4)NOTNULL,SNAMECHAR(20)NOTNULL,STATUSCHAR(10),CITYCHAR(20),PRIMARYKEY(SNO););2CREATE TABLE P(PNO CHAR(4)NOT NULL,PNAME CHAR(20)NOT NULL,COLOR CHAR(8),WEIGHT SMALLINT,PRIMARY KEY(PNO);CREATE TABLE J(JNO CHAR(4)NOT NULL,JNAME CHAR(20),CITY CHAR(20),PRIMARY KEY(JNO);CREATE TABLE SPJ(SNO CHAR(4)NOT NULL,PNO CHAR(4)NOT NULL,JNO CHAR(4)NOT NULL,QTY SMALLINT,PRIMARY KEY(SNO,PNO,JNO),FOREIGN KEY(SNO)REFERENCES S(SNO),FOREIGN KEY(PNO)REFERENCES P(PNO),FOREIGN KEY(JNO)REFERENCES J(JNO);34.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询1)求供应工程J1零件的供应商号码SNO;2)求供应工程J1零件P1的供应商号码SNO;3)求供应工程J1零件为红色的供应商号SNO;4)求没有使用天津供应商生产的红色零件的工程号JNO;5)求至少用了供应商S1所供应的全部零件的工程号JNO41)求供应工程求供应工程J1零件的供应商号码零件的供应商号码SNO;SELECT DISTINCT SNO FROM SPJ WHERE JNO=SELECT DISTINCT SNO FROM SPJ WHERE JNO=J1J1;SELECT SELECT子句后面的子句后面的DISTINCTDISTINCT表示要在结果中去掉重复的供应商编号表示要在结果中去掉重复的供应商编号SNOSNO。一个供应商可以为一个工程一个供应商可以为一个工程J1J1提供多种零件。提供多种零件。2)求供应工程求供应工程J1零件零件P1的供应商号码的供应商号码SNO;SELECT SNO FROM SPJ SELECT SNO FROM SPJ WHERE JNO=WHERE JNO=J1J1 AND PNO=AND PNO=P1P1;3)求供应工程求供应工程J1零件为红色的供应商号零件为红色的供应商号SNO;SELECT DISTINCT SNO FROM SPJ SELECT DISTINCT SNO FROM SPJ WHERE JNO=WHERE JNO=J1J1 AND PNO IN AND PNO IN (SELECT PNO (SELECT PNO FROM P FROM P WHERE COLOR=WHERE COLOR=红红);54)求没有使用天津供应商生产的红色零件的工程号求没有使用天津供应商生产的红色零件的工程号JNO;常见错误:常见错误:SELECT JNO FROM J WHERE NOT EXISTS (SELECT*FROM S,SPJ,P WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO AND S.CITY=天津AND P.COLOR=红);当从单个表中查询时当从单个表中查询时,目标目标列表达式用列表达式用*,若为多表必须用若为多表必须用表名表名.*正确写法SELECT JNO FROM JWHERE NOT EXISTS (SELECT S.*,SPJ.*,P.*FROM S,SPJ,P WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO AND S.CITY=天津 AND P.COLOR=红)64)求没有使用天津供应商生产的红色零件的工程号求没有使用天津供应商生产的红色零件的工程号JNO;SELECT JNO FROM J WHERE JNO NOT IN (SELECT JNO FROM S,SPJ,P WHERE S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO AND S.CITY=天津 AND P.COLOR=红);SELECT JNO FROM J WHERE NOT EXISTS (SELECT*FROM SPJ WHERE SPJ.JNO=J.JNO AND SPJ.SNO IN (SELECT SNO FROM S WHERE S.CITY=天津)AND SPJ.PNO IN (SELECT PNO FROM P WHERE P.COLOR=红)75)求至少用了供应商求至少用了供应商S1所供应的全部零件的工程号所供应的全部零件的工程号JNOSELECT DISTINCT JNOFROM SPJ SPJ1WHERE NOT EXISTS (SELECT*FROM SPJ SPJ2 WHERE SNO=S1 AND NOT EXISTS PNO=ALL (SELECT*FROM SPJ SPJ3 WHERE PNO=SPJ2.PNO AND JNO=SPJ1.JNO)85)求至少用了供应商求至少用了供应商S1所供应的全部零件的工程号所供应的全部零件的工程号JNO 第一种理解:SELECTDISTINCTJNOFROMSPJSPJXWHERENOTEXISTS(SELECT*FROMSPJSPJYWHERESPJY.SNO=S1ANDNOTEXISTS(SELECT*FROMSPJSPJZWHERESPJZ.JNO=SPJX.JNOANDSPJZ.PNO=SPJY.PNOANDSPJZ.SNO=SPJY.SNO);查询结果:第二种理解:SELECTDISTINCTJNOFROMSPJSPJXWHERENOTEXISTS(SELECT*FROMSPJSPJYWHERESPJY.SNO=S1ANDNOTEXISTS(SELECT*FROMSPJSPJZWHERESPJZ.JNO=SPJX.JNOANDSPJZ.PNO=SPJY.PNO);查询结果:J4SPJZ.SNO=S1SPJZ.SNO=S195.针对习题针对习题3中的四个表试用中的四个表试用SQL语言完成以下各项操作语言完成以下各项操作1)找出所有供应商的姓名和所在城市2)找出所有零件的名称、颜色、重量3)找出使用供应商S1所供应零件的工程号码4)找出工程项目J2使用的各种零件的名称及其数量5)找出上海厂商供应的所有零件号码6)找出使用上海产的零件的工程名称7)找出没有使用天津产的零件的工程号码8)把全部红色零件的颜色改成蓝色9)有S5供给J4的零件P6改为由S3供应,请作必要的修改10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录11)请将(S2,J6,P4,200)插入供应情况关系101)找出所有供应商的姓名和所在城市找出所有供应商的姓名和所在城市SELECTSNAME,CITYFROMS;2)找出所有零件的名称、颜色、重量找出所有零件的名称、颜色、重量SELECTPNAME,COLOR,WEIGHTFROMP;3)找出使用供应商找出使用供应商S1所供应零件的工程号码所供应零件的工程号码SELECTDISTINCTJNOFROMSPJWHERESNO=S1;114)找出工程项目找出工程项目J2使用的各种零件的名称及其数量使用的各种零件的名称及其数量SELECTPNAME,QTYFROMP,SPJWHEREP.PNO=SPJ.PNOANDSPJ.JNO=J2;125)找出上海厂商供应的所有零件号码找出上海厂商供应的所有零件号码SELECTDISTINCTPNOFROMS,SPJWHERES.SNO=SPJ.SNOANDS.CITY=上海;SELECTDISTINCTPNOFROMSPJWHERESNOIN(SELECTSNOFROMSWHERES.CITY=上海);6)找出使用上海产的零件的工程名称SELECTJNAMEFROMS,SPJ,JWHERES.SNO=SPJ.SNOANDJ.JNO=SPJ.JNOANDS.CITY=上海;137)找出没有使用天津产的零件的工程号码找出没有使用天津产的零件的工程号码SELECTJNOFROMJWHEREJNONOTIN(SELECTJNOFROMSPJ,SWHERES.SNO=SPJ.SNOANDS.CITY=天津);SELECTJNOFROMJWHERENOTEXISTS(SELECT*FROMSPJWHEREJNO=J.JNOANDSNOIN(SELECTSNOFROMSWHERES.CITY=天津);SELECTJNOFROMJWHERENOTEXISTS(SELECTSPJ.*,S.*FROMSPJ,SWHEREJNO=J.JNOANDSNO=S.SNOANDS.CITY=天津;148)把全部红色零件的颜色改成蓝色把全部红色零件的颜色改成蓝色UPDATEPSETCOLOR=蓝WHERECOLOR=红;9)由由S5供给供给J4的零件的零件P6改为由改为由S3供应,请作必要的修改供应,请作必要的修改UPDATESPJSETSNO=S3WHERESNO=S5ANDJNO=J4ANDPNO=P610)从供应商关系中删除从供应商关系中删除S2的记录,并从供应情况关系中删除的记录,并从供应情况关系中删除相应的记录相应的记录DELETEFROMSWHERESNO=S2;DELETEFROMSPJWHERESNO=S211)请将请将(S2,J6,P4,200)插入供应情况关系插入供应情况关系INSERTINTOSPJVALUES(S2,P4,J6,200)常见错误:INSERTINTOSPJVALUES(S2,J6,P4,200)15 11.请为三建工程项目建立一个供应情况的视图SANJIAN_SPJ,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询:1)找出三建工程项目使用的各种零件代码及其数量。2)找出供应商S1的供应情况。16创建视图:CREATEVIEWSANJIAN_SPJASSELECTSNO,PNO,QTYFROMSPJ,JWHERESPJ.JNO=J.JNOANDJ.JNAME=三建;1)找出三建工程项目使用的各种零件代码及其数量。SELECTPNO,SUM(QTY)SELECTPNO,QTYFROMSANJIAN_SPJFROMSANJIAN_SPJ;GROUPBYPNO;2)找出供应商S1的供应情况。SELECT*FROMSANJIAN_SPJWHERESNO=S117数据库设计方法数据库设计方法1)基本设计法基本设计法分五步进行:分五步进行:a.创建用户视图创建用户视图b.汇总用户视图,得出全局数据视图,即概念模型。汇总用户视图,得出全局数据视图,即概念模型。c.修改概念模型。修改概念模型。d.转换并定义概念模型,转换成转换并定义概念模型,转换成DBMS的数据模型。的数据模型。e.设计优化物理模型,即存储策略。设计优化物理模型,即存储策略。18例如1n关系模式关系模式R(C,T,H,R,S,G),F=CT,CSG,HTR,HRC,HSR,则则=CT,CHR,HRT,CSG,HSR为一个为一个3NF的既的既具有无损联接性又具有函数依赖保持性的分解。具有无损联接性又具有函数依赖保持性的分解。R的码是的码是HS。19例如例如2关系模式关系模式R(A,B,C,D,E),F=AD,ED,DB,BCD,DCA,则则=ED,BCD,ACD为一为一个个3NF的具有函数依赖保持性的分解。的具有函数依赖保持性的分解。由于由于R的码是的码是CE,则,则=ED,BCD,ACD,CE为为一个一个3NF的既具有无损联接性又具有函数依赖的既具有无损联接性又具有函数依赖保持性的分解。保持性的分解。20例如例如3关系模式关系模式R(C,S,Z),F=CSZ,ZC,则则R属于属于3NF,可以分解为具有无损联接性的可以分解为具有无损联接性的BCNF,而不可能分解成具有函数依赖保持性的而不可能分解成具有函数依赖保持性的BCNF。当分解为当分解为=SZ,CZ,则它为一个则它为一个BCNF的具的具有无损联接性的分解。有无损联接性的分解。21例如例如4关系模式关系模式R(T,Q,P,C,S,Z),F=TQ,TP,TC,TS,PCSZ,ZP,ZC,试分解试分解R属于属于3NF既具有无损联接性又具有函数依赖保既具有无损联接性又具有函数依赖保持性持性。从题目可知码是从题目可知码是T。根据相同左部原则可分解为根据相同左部原则可分解为=TQPCS,PCSZ,ZPC,由于由于ZPC包含于包含于PCSZ中,所以分解为中,所以分解为=TQPCS,PCSZ。而而R1=T,Q,P,C,S属于属于BCNF。但但R2=P,C,S,Z不属于不属于BCNF;再继续分解成再继续分解成SZ,PCZ后,则属于后,则属于BCNF。22例如例如5关系模式关系模式R(S,C,G,T,D),F=SCG,CT,TD,试分解成试分解成BCNF。从题目可知码是从题目可知码是SC。首先从关系首先从关系R中分出中分出TD,即,即R1(S,C,G,T),R2(T,D)。再从再从R1中分出中分出CT,即,即R3(C,T),R4(S,C,G)。R2,R3,R4都属于都属于BCNF,分解完成分解完成。23习题:求候选码,转换3NF,BCNFn1、设有关系模式、设有关系模式R(O,I,S,Q,B,D),其中,其中F=SD,IB,ISQ,BO。n2、设有关系模式、设有关系模式R(A,B,C,D),其中,其中 F=AC,CA,BAC,DAC,BDA。n3、设有关系模式、设有关系模式R(A,B,C,D,E),其中,其中F=AD,ED,DB,BCD,DCA。n4、设有关系模式、设有关系模式R(A,B,C,D,E,F),其中,其中F=AB,CF,EA,CED。24习题:习题:求候选码,转换成求候选码,转换成BCNF5、设有关系模式、设有关系模式R(学号学号,课程号课程号,学分学分,成绩成绩,奖学金奖学金),其中其中F=课程号课程号学分学分,成绩成绩奖学奖学金金,(学号学号,课程号课程号)成绩成绩。6、设有关系模式、设有关系模式R(学生学生,课程课程,教师教师),其中其中F=教师教师课程课程,(学生学生,课程课程)教师教师。25习题答案n1、KEY=ISn2、KEY=BDn3、KEY=CEn4、KEY=CEn5、KEY=(学号,课程号)n6、KEY=(学生,课程);R1(学生,教师),R2(教师,课程)26例如nR(A,B,C),F=AB,CB。当。当1=AB,AC时,它具有无时,它具有无损联接性,但不具有依赖保持性。当损联接性,但不具有依赖保持性。当 2=AB,BC时,它具有依赖保持性,但不具有无损联接时,它具有依赖保持性,但不具有无损联接性。性。n然而当然而当3=AB,AC,BC时,它既具有依赖保持性,又具有时,它既具有依赖保持性,又具有无损联接性。无损联接性。27依赖保持n设关系模式设关系模式R的一个分解为的一个分解为=R1,R2,.,Rk,F是是R的依的依赖集。如果赖集。如果F等价于等价于R1(F)R2(F).Rk(F),则称,则称分解分解具有依赖保持性。具有依赖保持性。n一个无损联接分解不一定具有依赖保持性;一个无损联接分解不一定具有依赖保持性;n 同样一个依赖保持分解不一定具有无损联接。同样一个依赖保持分解不一定具有无损联接。28模式分解n若要求分解保持函数依赖,那么模式分解总可以达到若要求分解保持函数依赖,那么模式分解总可以达到3NF,但不一定能达到,但不一定能达到BCNF。n若要求分解既保持函数依赖,又具有无损联接性,那么模若要求分解既保持函数依赖,又具有无损联接性,那么模式分解可以达到式分解可以达到3NF,但不一定能达到,但不一定能达到BCNF。n若要求分解既具有无损联接性,那么模式分解一定可以达若要求分解既具有无损联接性,那么模式分解一定可以达到到4NF。29求下列最高属于第几范式求下列最高属于第几范式1.设设R(A,B,C,D),F=BD,ABC。2.设设R(A,B,C,D,E),F=ABCE,EAB,CD。3.设设R(A,B,C,D),F=BD,DB,ABC。4.设设R(A,B,C),F=AB,BA,AC。5.设设R(A,B,C),F=AB,BA,CA。6.设设R(A,B,C,D),F=AC,DB。7.设设R(A,B,C,D),F=AC,CDB。30答案答案1、Key=AB,R1NF2、Key=AB或或E,R2NF3、Key=AB或或AD,R3NF4、Key=A或或B,RBCNF5、Key=C,R3NF6、Key=AD,R1NF7、Key=AD,R1NF31BCNF定义定义若若R1NF,若,若XY且且YX时时X必含有码。必含有码。例如:由于例如:由于(SNO,CNO)G,满足满足BCNF的定的定义,所以义,所以SC属于属于BCNF。当当S-L分解成分解成SD(SNO,SDEPT)和和DL(SDEPT,SLOC)后的情形如下。后的情形如下。对于对于SD的函数依赖的函数依赖SNOSDEPT,所以它的所以它的码是码是SNO,所以所以SD属于属于BCNF。对于对于DL的函数依赖的函数依赖SDEPTSLOC,所以它所以它的码是的码是SDEPT,所以所以DL属于属于BCNF。323NF定义定义若若R1NF,且每一个非主属性既不部分函数且每一个非主属性既不部分函数依赖于码也不传递函数依赖于码。依赖于码也不传递函数依赖于码。例如:当把例如:当把S-L-C分解成分解成SC(SNO,CNO,G)和和S-L(SNO,SDEPT,SLOC)后。后。由于由于(SNO,CNO)G,满足满足3NF的定义,所以的定义,所以SC属于属于3NF。而而S-L中候选码是中候选码是SNO,但,但SDEPTSLOC;SNOSDEPT,即即非主属性非主属性SLOC传递依赖于传递依赖于码,所以码,所以S-L不属于不属于3NF。332NF定义定义若若R1NF,且每一个非主属性完全函数依赖且每一个非主属性完全函数依赖于码。于码。例如:例如:S-L-C(SNO,SDEPT,SLOC,CNO,G),这这里里SNO表示学号,表示学号,SDEPT表示系名,表示系名,SLOC表表示楼号,示楼号,CNO表示课程号,表示课程号,G表示成绩。表示成绩。函数依赖有函数依赖有:(SNO,CNO)G;SDEPTSLOC;SNOSDEPT。所以候选码是所以候选码是(SNO,CNO)。而而非主属性非主属性SDEPT和和SLOC都是部分函数依赖于码,所以都是部分函数依赖于码,所以S-L-C不不属于属于2NF,但属于但属于1NF。34习题习题设设R(A,B,C),r为为R的一个值,的一个值,r=ab1c1,ab2c2,ab1c2,ab2c1。问问1.r满足条件满足条件AB吗?为什么?吗?为什么?2.如果在如果在r中任取一三个元组的子集,这些中任取一三个元组的子集,这些子集满足条件子集满足条件AB吗?为什么?吗?为什么?1.r 满足条件满足条件AB。2.不满足条件不满足条件AB。35求关键字n1.设设R(A,B,C,D,E,P),F=AD,ED,DB,BCD,CDA。n2.设设R(O,I,S,Q,B,D),F=SD,DS,IB,BI,BO,OB。n3.设设R(X,Y,Z,W),F=WY,YW,XWY,ZWY,XZW。n4.设设R(O,I,S,Q,B,D),F=SD,IB,BO,OQ,QI。n5.设设R(O,I,S,Q,B,D),F=IB,BO,IQ,SD。36答案n1、CEPn2、QSI,QSO,QSB,QDB,QDI,QDOn3、XZn4、SI,SQ,SB,SOn5、IS37四大定理n定理定理1:设:设K为为R中的属性或属性组合,若中的属性或属性组合,若K是是L或或N类,则类,则K必为必为R的任一候选关键字成员。即是主属的任一候选关键字成员。即是主属性。性。n定理定理2:设:设X为为R中的属性或属性组合,若中的属性或属性组合,若X是是R类,则类,则X不在任何候选关键字中。即是非主属性。不在任何候选关键字中。即是非主属性。n定理定理3:若:若K是是L类,且类,且K+包含包含R的全部属性,则的全部属性,则K必为必为R的唯一候选关键字。的唯一候选关键字。n定理定理4:若:若K是是L和和N类属性组合,且类属性组合,且K+包含包含R的全部属的全部属性,则性,则K必为必为R的唯一候选关键字。的唯一候选关键字。38快速求解关键字n给定关系模式给定关系模式R(A1,A2,.,An)和函数依赖集和函数依赖集F,可将其属性,可将其属性分为四类:分为四类:n1、仅仅出现在、仅仅出现在F的函数依赖左部的属性称的函数依赖左部的属性称L类;类;n2、仅仅出现在、仅仅出现在F的函数依赖右部的属性称的函数依赖右部的属性称R类;类;n3、在、在F的函数依赖左右均未出现的属性称的函数依赖左右均未出现的属性称N类;类;n4、在、在F的函数依赖左右均出现的属性称的函数依赖左右均出现的属性称LR类。类。39nStudent(Sno,Sname,Sex,Bdate,Height)nSC(Sno,Cno,Grade)nCourse(Cno,Lhour,Credit,Semester)n在在SC中中Sno不是码,但却是不是码,但却是Student的码,所以的码,所以Sno是是SC的外码。的外码。n在在SC中中Cno不是码,但却是不是码,但却是Course的码,所以的码,所以Cno是是SC的外码。的外码。n学生学生(学号学号,姓名姓名,性别性别,专业号专业号,年龄年龄)n专业专业(专业号专业号,专业名专业名)n在在学生学生表中表中专业号专业号不是码,但却是不是码,但却是专业专业表的码,所以表的码,所以专业号专业号是是学生学生表的外码。表的外码。n学生学生2(学号学号,姓名姓名,性别性别,专业号专业号,年龄年龄,班长学号班长学号)n在在学生学生2表中表中班长班长不是码,但引用了本关系表不是码,但引用了本关系表学号学号属性,所以属性,所以班长班长是是学生学生2表的外码。表的外码。40练习题n求求F=AC,CA,BAC,DAC,BDA的最小函数依的最小函数依赖集。赖集。n求求F=AD,ED,DB,BCD,DCA的最小函数依赖的最小函数依赖集。集。n求求F=AB,BA,BC,AC,CA的最小函数依赖集。的最小函数依赖集。n设有关系模式设有关系模式R(O,I,S,Q,B,D),其中其中F=SD,IB,ISQ,BO,试计算试计算S+,I+,B+,(IS)+,(SB)+,(IB)+,(ISB)+。41举例nF=ABC,CA,BCD,ACDB,DEG,BEC,CGBD,CEAG,计算,计算(BD)+。n解:解:X(0)=BD X(1)=X(0)EG=BDEG DEG X(2)=X(1)C=BCDEG BEC X(3)=X(2)A=ABCDEG CA 由于由于X(3)=U 所以不需要继续计算所以不需要继续计算因此,因此,(BD)+=ABCDEG 42举例举例F=ABC,CA,BCD,ACDB,DEG,BEC,CGBD,CEAG,计算最小函数依计算最小函数依赖集赖集。解:解:1、使依赖右部变成单属性:、使依赖右部变成单属性:F=ABC,CA,BCD,ACDB,DE,DG,BEC,CGB,CGD,CEA,CEG;2、去除多余函数依赖,即去除、去除多余函数依赖,即去除XY后,后,求求X+。若。若YX+,则可去除则可去除XY,否则不能去否则不能去除。可得:除。可得:F=ABC,CA,BCD,CDB,DE,DG,BEC,CGD,CEG 43
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!