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

上传人:牧羊曲112 文档编号:1346712 上传时间:2022-11-12 格式:PPT 页数:43 大小:440KB
返回 下载 相关 举报
数据库概论必考经典例题课后重点答案ppt课件.ppt_第1页
第1页 / 共43页
数据库概论必考经典例题课后重点答案ppt课件.ppt_第2页
第2页 / 共43页
数据库概论必考经典例题课后重点答案ppt课件.ppt_第3页
第3页 / 共43页
数据库概论必考经典例题课后重点答案ppt课件.ppt_第4页
第4页 / 共43页
数据库概论必考经典例题课后重点答案ppt课件.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《数据库概论必考经典例题课后重点答案ppt课件.ppt》由会员分享,可在线阅读,更多相关《数据库概论必考经典例题课后重点答案ppt课件.ppt(43页珍藏版)》请在三一办公上搜索。

1、1,3.用SQL语句建立第二章习题5中的四个表:,供应商关系:S(SNO,SNAME,STATUS,CITY) 零件关系:P(PNO,PNAME,COLOR,WEIGHT) 工程项目关系:J(JNO,JNAME,CITY) 供应情况关系:SPJ(SNO,PNO,JNO,QTY),2,定义的关系S有四个属性,分别是供应商号(SNO)、供应商名(SNAME)、状态(STATUS)和所在城市(CITY),属性的类型都是字符型,长度分别是4、20、10和20个字符。主键是供应商编号SNO。在SQL中允许属性值为空值,当规定某一属性值不能为空值时,就要在定义该属性时写上保留字“NOT NULL”。本例中

2、,规定供应商号和供应商名不能取空值。由于已规定供应商号为主码,所以对属性SNO的定义中的“NOT NULL”可以省略不写。 CREATE TABLE S (SNO CHAR(4) NOT NULL, SNAME CHAR(20) NOT NULL, STATUS CHAR(10), CITY CHAR(20), PRIMARY KEY (SNO);,3,CREATE TABLE P (PNO CHAR(4) NOT NULL, PNAME CHAR(20) NOT NULL, COLOR CHAR(8), WEIGHT SMALLINT, PRIMARY KEY(PNO);CREATE TAB

3、LE 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) REFEREN

4、CES J(JNO);,4,4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询 1)求供应工程J1零件的供应商号码SNO; 2)求供应工程J1零件P1的供应商号码SNO; 3)求供应工程J1零件为红色的供应商号SNO; 4)求没有使用天津供应商生产的红色零件的工程号JNO; 5)求至少用了供应商S1所供应的全部零件的工程号JNO,5,1)求供应工程J1零件的供应商号码SNO; SELECT DISTINCT SNO FROM SPJ WHERE JNO=J1; SELECT子句后面的DISTINCT表示要在结果中去掉重复的供应商编号SNO。一个供应商可以为一个工程J1提供多种零件

5、。 2)求供应工程J1零件P1的供应商号码SNO; SELECT SNO FROM SPJ WHERE JNO=J1 AND PNO=P1;3)求供应工程J1零件为红色的供应商号SNO; SELECT DISTINCT SNO FROM SPJ WHERE JNO=J1 AND PNO IN (SELECT PNO FROM P WHERE COLOR=红);,6,4)求没有使用天津供应商生产的红色零件的工程号JNO; 常见错误: SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM S,SPJ,P WHERE SPJ.JNO=J.JNO AND

6、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=红),7,4)求没有使用天津供应商生产的红色零件的工程号JNO; SELECT JNO FROM J W

7、HERE 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=红),8,5)求至少用了供应商S1所

8、供应的全部零件的工程号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) ),9,5)求至少用了供应商S1所供应的全部零件的工程号JNO,第一种理解:SELECT DISTINCT JNO FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WH

9、ERE SPJY.SNO=S1 AND NOT EXISTS (SELECT * FROM SPJ SPJZ WHERE SPJZ.JNO=SPJX.JNO AND SPJZ.PNO=SPJY.PNO AND SPJZ.SNO=SPJY.SNO); 查询结果: ,第二种理解:SELECT DISTINCT JNO FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY.SNO=S1 AND NOT EXISTS (SELECT * FROM SPJ SPJZ WHERE SPJZ.JNO=SPJX.JNO AND SP

10、JZ.PNO=SPJY.PNO); 查询结果:J4,SPJZ.SNO=S1,10,5.针对习题3中的四个表试用SQL语言完成以下各项操作1)找出所有供应商的姓名和所在城市2)找出所有零件的名称、颜色、重量3)找出使用供应商S1所供应零件的工程号码4)找出工程项目J2使用的各种零件的名称及其数量5)找出上海厂商供应的所有零件号码6)找出使用上海产的零件的工程名称7)找出没有使用天津产的零件的工程号码8)把全部红色零件的颜色改成蓝色9)有S5供给J4的零件P6改为由S3供应,请作必要的修改10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录11)请将(S2,J6,P4,200)插入

11、供应情况关系,11,1)找出所有供应商的姓名和所在城市 SELECT SNAME, CITY FROM S;2)找出所有零件的名称、颜色、重量 SELECT PNAME, COLOR, WEIGHT FROM P;3)找出使用供应商S1所供应零件的工程号码 SELECT DISTINCT JNO FROM SPJ WHERE SNO=S1;,12,4)找出工程项目J2使用的各种零件的名称及其数量 SELECT PNAME, QTY FROM P, SPJ WHERE P.PNO=SPJ.PNO AND SPJ.JNO=J2;,13,5)找出上海厂商供应的所有零件号码 SELECT DISTIN

12、CT PNO FROM S, SPJ WHERE S.SNO=SPJ.SNO AND S.CITY=上海; SELECT DISTINCT PNO FROM SPJ WHERE SNO IN (SELECT SNO FROM S WHERE S.CITY=上海);6)找出使用上海产的零件的工程名称 SELECT JNAME FROM S, SPJ, J WHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY=上海 ;,14,7)找出没有使用天津产的零件的工程号码SELECT JNOFROM JWHERE JNO NOT IN (SELECT JNO F

13、ROM SPJ, S WHERE S.SNO=SPJ.SNO AND S.CITY=天津);SELECT JNOFROM JWHERE NOT EXISTS (SELECT * FROM SPJ WHERE JNO=J.JNO AND SNO IN (SELECT SNO FROM S WHERE S.CITY=天津);,SELECT JNOFROM JWHERE NOT EXISTS (SELECT SPJ.*, S.* FROM SPJ, S WHERE JNO=J.JNO AND SNO=S.SNO AND S.CITY=天津;,15,8)把全部红色零件的颜色改成蓝色 UPDATE PS

14、ET COLOR=蓝 WHERE COLOR=红; 9)由S5供给J4的零件P6改为由S3供应,请作必要的修改 UPDATE SPJ SET SNO=S3 WHERE SNO=S5 AND JNO=J4 AND PNO=P610)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录 DELETE FROM S WHERE SNO=S2; DELETE FROM SPJ WHERE SNO=S211)请将(S2,J6,P4,200)插入供应情况关系 INSERT INTO SPJ VALUES(S2,P4,J6,200)常见错误:INSERT INTO SPJ VALUES(S2,J6

15、,P4,200),16,11.请为三建工程项目建立一个供应情况的视图SANJIAN_SPJ,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询: 1)找出三建工程项目使用的各种零件代码及其数量。 2)找出供应商S1的供应情况。,17,创建视图: CREATE VIEW SANJIAN_SPJ AS SELECT SNO,PNO,QTY FROM SPJ, J WHERE SPJ.JNO=J.JNO AND J.JNAME=三建;1)找出三建工程项目使用的各种零件代码及其数量。 SELECT PNO, SUM(QTY) SELECT PNO, QTY FRO

16、M SANJIAN_SPJ FROM SANJIAN_SPJ; GROUP BY PNO;2)找出供应商S1的供应情况。 SELECT * FROM SANJIAN_SPJ WHERE SNO=S1,18,数据库设计方法,1)基本设计法分五步进行:a. 创建用户视图b. 汇总用户视图,得出全局数据视图,即概念模型。c. 修改概念模型。d. 转换并定义概念模型,转换成DBMS的数据模型。 e. 设计优化物理模型,即存储策略。,19,例如1,关系模式R(C,T,H,R,S,G), F=CT, CSG, HTR, HRC, HSR, 则=CT,CHR,HRT,CSG,HSR为一个3NF的既具有无损联

17、接性又具有函数依赖保持性的分解。R的码是HS。,20,例如2,关系模式R(A,B,C,D,E), F=AD,ED,DB, BCD, DCA, 则=ED, BCD, ACD为一个3NF的具有函数依赖保持性的分解。由于R的码是CE,则=ED, BCD, ACD,CE为一个3NF的既具有无损联接性又具有函数依赖保持性的分解。,21,例如3,关系模式R(C,S,Z), F=CSZ,ZC, 则R属于3NF,可以分解为具有无损联接性的BCNF,而不可能分解成具有函数依赖保持性的BCNF。当分解为=SZ, CZ,则它为一个BCNF的具有无损联接性的分解。,22,例如4,关系模式R(T,Q,P,C,S,Z),

18、 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。,23,例如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,即R

19、3(C,T),R4(S,C,G)。R2,R3,R4都属于BCNF,分解完成。,24,习题:求候选码,转换3NF,BCNF,1、设有关系模式R(O, I, S, Q, B, D),其中F=SD, IB, ISQ, BO。 2、设有关系模式R(A, B, C, D),其中 F=AC, CA, BAC,DAC, BDA。3、设有关系模式R(A, B, C, D, E),其中F=AD, ED, DB, BCD, DCA。4、设有关系模式R(A, B, C, D, E, F),其中F=AB, CF, EA, CED。,25,习题:求候选码,转换成BCNF,5、设有关系模式R(学号, 课程号, 学分, 成

20、绩, 奖学金),其中F=课程号学分, 成绩奖学金, (学号,课程号)成绩。 6、设有关系模式R(学生, 课程, 教师),其中 F=教师课程, (学生, 课程)教师。,26,习题答案,1、KEY=IS2、KEY=BD3、KEY=CE4、KEY=CE5、KEY=(学号,课程号)6、KEY=(学生,课程);R1(学生,教师),R2(教师,课程),27,例如,R(A,B,C),F=AB,CB。当1=AB,AC时,它具有无损联接性,但不具有依赖保持性。当 2=AB,BC时,它具有依赖保持性,但不具有无损联接性。然而当3=AB,AC,BC时,它既具有依赖保持性,又具有无损联接性。,28,依赖保持,设关系模

21、式R的一个分解为 =R1,R2,., Rk,F是R的依赖集。如果F等价于R1(F) R2(F) . Rk(F),则称分解具有依赖保持性。一个无损联接分解不一定具有依赖保持性; 同样一个依赖保持分解不一定具有无损联接。,29,模式分解,若要求分解保持函数依赖,那么模式分解总可以达到3NF,但不一定能达到BCNF。若要求分解既保持函数依赖,又具有无损联接性,那么模式分解可以达到3NF,但不一定能达到BCNF。若要求分解既具有无损联接性,那么模式分解一定可以达到4NF。,30,求下列最高属于第几范式,1.设R(A,B,C,D), F= BD,ABC。2.设R(A,B,C,D,E), F=ABCE,E

22、AB,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。,31,答案,1、Key=AB, R1NF2、Key=AB或E, R2NF3、Key=AB或AD, R3NF 4、Key=A或B, RBCNF 5、Key=C, R3NF6、Key=AD, R1NF7、Key=AD, R1NF,32,BCNF定义,若R1NF,若XY且Y X时X必含有码。例如:由于(SNO,CNO)G,满足BCNF的定义,所以

23、SC属于BCNF。当S-L分解成SD(SNO,SDEPT)和DL(SDEPT, SLOC)后的情形如下。对于SD的函数依赖SNOSDEPT,所以它的码是SNO,所以SD属于BCNF。对于DL的函数依赖 SDEPTSLOC,所以它的码是SDEPT,所以DL属于BCNF。,33,3NF定义,若R1NF,且每一个非主属性既不部分函数依赖于码也不传递函数依赖于码。例如:当把S-L-C分解成SC(SNO,CNO,G)和 S-L(SNO,SDEPT,SLOC)后。由于(SNO,CNO)G,满足3NF的定义,所以SC属于3NF。而S-L中候选码是SNO,但 SDEPTSLOC; SNOSDEPT,即非主属性

24、SLOC传递依赖于码,所以S-L不属于3NF。,34,2NF定义,若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。,35,习题,设R(A,B,C), r为R的一个值,r=ab1c1,ab2c2, ab1c2,ab2c1。 问1. r 满足条件A

25、B吗?为什么? 2. 如果在r中任取一三个元组的子集,这些子集满足条件AB吗?为什么?1. r 满足条件AB。2. 不满足条件AB。,36,求关键字,1.设R(A,B,C,D,E,P), F= AD,ED,DB, BCD,CDA。2.设R(O,I,S,Q,B,D), F=SD,DS,IB,BI, BO, OB。3.设R(X,Y,Z,W), F=WY,YW,XWY, ZWY, XZW。4.设R(O,I,S,Q,B,D),F=SD,IB,BO,OQ, QI。5.设R(O,I,S,Q,B,D),F=IB,BO,IQ,SD。,37,答案,1、CEP2、QSI,QSO,QSB, QDB,QDI,QDO3

26、、XZ4、SI,SQ,SB,SO5、IS,38,四大定理,定理1:设K为R中的属性或属性组合,若K是L或N类,则K必为R的任一候选关键字成员。即是主属性。定理2:设X为R中的属性或属性组合,若X是R类,则X不在任何候选关键字中。即是非主属性。定理3:若K是L类,且K+包含R的全部属性,则K必为R的唯一候选关键字。定理4:若K是L和N类属性组合,且K+包含R的全部属性,则K必为R的唯一候选关键字。,39,快速求解关键字,给定关系模式R(A1,A2,.,An)和函数依赖集F,可将其属性分为四类:1、仅仅出现在F的函数依赖左部的属性称L类;2、仅仅出现在F的函数依赖右部的属性称R类;3、在F的函数依

27、赖左右均未出现的属性称N类;4、在F的函数依赖左右均出现的属性称LR类。,40,Student(Sno,Sname,Sex,Bdate,Height)SC(Sno,Cno,Grade)Course(Cno,Lhour,Credit,Semester)在SC中Sno不是码,但却是Student的码,所以Sno是SC的外码。在SC中Cno不是码,但却是Course的码,所以Cno是SC的外码。学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)在学生表中专业号不是码,但却是专业表的码,所以专业号是学生表的外码。学生2(学号,姓名,性别,专业号,年龄,班长学号)在学生2表中班长不是码,但引用

28、了本关系表学号属性,所以班长是学生2表的外码。,41,练习题,求F= AC,CA,BAC,DAC,BDA的最小函数依赖集。求F= AD,ED,DB,BCD,DCA的最小函数依赖集。求F= AB,BA,BC,AC,CA的最小函数依赖集。设有关系模式R(O,I,S,Q,B,D), 其中F= SD,IB,ISQ,BO, 试计算S+,I+,B+,(IS)+,(SB)+,(IB)+,(ISB)+ 。,42,举例,F=ABC, CA, BCD, ACDB, DEG, BEC, CGBD, CEAG,计算(BD)+。解: 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,43,举例,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+。若Y X+,则可去除XY,否则不能去除。可得:F=ABC,CA,BCD,CDB, DE, DG,BEC, CGD, CEG,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号