130 likes | 287 Vues
数据库. 2.7. 1 )求供应工程 J1 零件的供应商号码 SNO : π Sno( σ Sno= ‘ J1 ’( SPJ ) ) 2 )求供应工程 J1 零件 P1 的供应商号码 SNO : π Sno( σ Sno= ‘ J1 ’∧ Pno= ‘ P1 ‘ (SPJ)) 3 )求供应工程 J1 零件为红色的供应商号码 SNO : π Sno( σ Pno= ‘ P1 ‘ (σ COLOR= ’红‘ ( P )∞ SPJ ) ) 4 )求没有使用天津供应商生产的红色零件的工程号 JNO :
E N D
2.7 • 1)求供应工程J1零件的供应商号码SNO: • πSno(σSno=‘J1’(SPJ)) • 2)求供应工程J1零件P1的供应商号码SNO: • πSno(σSno=‘J1’∧Pno=‘P1‘(SPJ)) • 3)求供应工程J1零件为红色的供应商号码SNO: • πSno(σPno=‘P1‘ (σCOLOR=’红‘ (P)∞SPJ)) • 4)求没有使用天津供应商生产的红色零件的工程号JNO: • πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘ (S∞SPJ∞P) • 5)求至少用了供应商S1所供应的全部零件的工程号JNO: • πJno,Pno(SPJ)÷ πPno(σSno=‘S1‘ (SPJ))
3.2 • 对于S 表: S ( SNO , SNAME , CITY ) ; • 建S 表: • CREATE TABLE S ( Sno CHAR(2) UNIQUE,Sname CHAR(6) ,City C(4)); • 对于P 表:P ( PNO , PNAME , COLOR , WEIGHT ); • 建P 表 : • CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2),WEIGHT INT); • 对于J 表:J ( JNO , JNAME , CITY); • 建J 表: • CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8),CITY C(4)) • 对于SPJ 表:sPJ ( sNo , PNo , JNo , QTY); • 建SPJ 表:SPJ(SNO,PNO,JNO,QTY) • CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2),QTY INT))
3.3 • ( l )求供应工程Jl 零件的供应商号码SNO ; • SELECT DISTINCT SNO FROM SPJ WHERE JNO=’J1’ • ( 2 )求供应工程Jl 零件Pl 的供应商号码SNO ; • SELECT DISTINCT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1' • ( 3 )求供应工程Jl 零件为红色的供应商号码SNO ; SELECT SNO FROM SPJ,P WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
( 4 )求没有使用天津供应商生产的红色零件的工程号JNO ; SELECT DISTINCT JNO FROM SPJ WHERE JNO NOT IN (SELECT JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='红' AND S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。 ( 5 )求至少用了供应商Sl 所供应的全部零件的工程号JNO ; 将查询分为两步 A、查询S1供应商供应的零件号 SELECT DISTINCT PNO FROM SPJ WHERE SNO='S1' 结果是(P1,P2) B、查询哪一个工程既使用P1零件又使用P2零件。 SELECT JNO FROM SPJ WHERE PNO='P1' AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')
第五小题类似于书上P94的例44 SELECT DISTINCT SNO FROM SPJ SPJX WHERE NOT EXIST (SELECT * FROM SPJ SPJY WHERE SPJY.SNO=‘S1’ AND NOT EXIST (SELECT * FROM SPJ SPJZ WHERE SPJZ.SNO=SPJX.SNO AND SPJZ.PNO=SPJY.PNO)
3.4 • (1)统计每种零件的供应总量 • SELECT DISTINCT PNO,COUNT(QTY) FROM SPJ GROUP BY PNO (2)求零件供应总量在1000种以上的供应商名字 SELECT SNAME FROM S WHERE SNO=(SELECT SNO FROM SPJ WHERE COUNT(QTY)>1000)
3.4 (3)在S表中插入一条供应商信息:(S6,华天,深圳) INSERT INTO S VALUES (S6,华天,深圳) (4)把全部红色零件改为粉红色 UPDATE P SET COLOR=‘粉红’ WHERE COLOR=‘红’ (5)将S1供应给J1的零件P1改为由S2供应 UPDATE SPJ SET SNO=‘S2’ WHERE SNO=‘S1’ AND PNO=‘P1’ AND JNO=‘J1’
(6)删去全部蓝色零件及相应的SPJ记录 DELETE FROM SPJ WHERE PNO IN (SELECT PNO FROM P WHERE COLOR=‘蓝’) DELETE FROM P WHERE COLOR=‘蓝’
4.3 建立一个关于系、学生、班级、学会等诸信息的关系数据库。 描述学生的属性有:学号、姓名、生日、系名、班号、宿舍区。 描述班级的属性有:班号、专业名、系名、人数、入校年份。 描述系的属性有:系号、系名、系办公室地点、人数。 描述学会的属性有:学会名、成立年份、地点、人数。 有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每学会有若干学生。学生参加某学会有一个入会年份。 请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系的候选码、外部码,有没有全码存在?
关系模式有:学生S(SNO,SN,SB,DN,CNO,SA) 班级C(CNO,CS,DN,CNUM,CDATE) 系D(DNO,DN,DA,DNUM) 学会P(PN,DATE1,PA,PNUM) 学生–学会SP(SNO,PN,DATE2) 其中:SNO为学号,SN为姓名,SB为生日,DN为系名,CNO为班号,SA为宿舍区,CS为专业名,CNUM为班级为数,CDATE为入校年份,DNO为系号,DA为系办公室地点,DNUM为系人数,PN为学会名,DATE1为学会成立年月,PA为地点,PNUM为人数,DATE2为入会年份。 各关系模式的极小函数依赖集为: S:SNO→SN,SNO→SB,SNO→CNO,CNO→DN,DN→SA C:CNO→CS,CNO→CNUM,CNO→CDATE,CS→DN,(CS,CDATE)→CNO D:DNO→DN,DN→DNO,DNO→DA,DNO→DNUM P:PN→DATE1,PN→PA,PN→PNUM SP:(SNO,PN)→DATE2 S中存在传递函数依赖:SNO→DN,SNO→SA,CNO→SA C中存在传递函数依赖:CNO→DN (CS,CDATE)→CNO 和(SNO,PN)→DATE2都是完全函数依赖。
学生S(SNO,SN,SB,DN,CNO,SA) 班级C(CNO,CS,DN,CNUM,CDATE) 系D(DNO,DN,DA,DNUM) 学会P(PN,DATE1,PA,PNUM) 学生–学会SP(SNO,PN,DATE2) S:SNO→SN,SNO→SB,SNO→CNO,CNO→DN,DN→SA C:CNO→CS,CNO→CNUM,CNO→CDATE,CS→DN,(CS,CDATE)→CNO D:DNO→DN,DN→DNO,DNO→DA,DNO→DNUM P:PN→DATE1,PN→PA,PN→PNUM SP:(SNO,PN)→DATE2 关系 候选码 外部码 全码 S SNO CNO,DN 无 C CNO和(CS,CDATE) DN 无 D DNO和DN 无 无 P PN 无 无 SP (SNO,PN) SNO,DN 无
MYSQL AND NAVICAT ACCESS