《数据库习题解答_new》由会员分享,可在线阅读,更多相关《数据库习题解答_new(23页珍藏版)》请在金锄头文库上搜索。
1、【习题12】 (P38)学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生;每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。请用 E 一 R 图画出此学校的概念模型。 P74习题5设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:1)求供应工程J1零件的供应商号码SNO:Sno (Sno=J1 (SPJ)2)求供应工程J1零件P1的供应商号码SNO:Sno(Sno=J1Pno=P1( SPJ)3)求供应工程J1零件为红色的供应商号码SNO:Sno(Pno=P1 (COLOR=红 (P) SPJ))4)求没有使用天津供应
2、商生产的红色零件的工程号JNO:Jno(SPJ) -JNO(city=天津Color=红 (S SPJ P)5)求至少用了供应商S1所供应的全部零件的工程号JNO:Jno,Pno(SPJ) Pno(Sno=S1 (SPJ) 除(Division) 给定关系给定关系R R ( (X X,Y Y) ) 和和S S ( (Y Y,Z Z) ),其中其中X X,Y Y,Z Z为属性组。为属性组。R R中中的的Y Y与与S S中中的的Y Y可可以以有有不不同同的的属属性性名名,但但必必须须出出自自相相同同的的域集。域集。R R与与S S的除运算得到一个新的关系的除运算得到一个新的关系P(X)P(X),P
3、 P是是R R中满足下列条件的元组在中满足下列条件的元组在 X X 属性列上的投影:属性列上的投影:元组在元组在X X上分量值上分量值x x的象集的象集Y Yx x包含包含S S在在Y Y上投影的集合,记作:上投影的集合,记作: R RS S = = t tr r X X | | t tr r R RY Y ( (S S) ) Y Yx x Y Yx x:x x在在R R中的象集,中的象集,x x = = t tr r X X 除(续)例6设关系R、S分别为下图的(a)和(b),RS的结果为图(c) 分析在关系在关系R中,中,A可以取四个值可以取四个值a1,a2,a3,a4 a1的象集为的象集
4、为(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)属性组上的投影属性组上的投影所以所以RS=a1综合举例 以学生以学生-课程数据库为例课程数据库为例(P56)例例7查询至少选修查询至少选修1号课程和号课程和3号课程的学生号码号课程的学生号码首先建立一个临时关系首先建立一个临时关系K:然后求:然后求:Sno,Cno(SC)KCno 1 3综
5、合举例(续)例例7续续Sno,Cno(SC)95001象集象集1,2,395002象集象集2,3K=1,3于是:于是:Sno,Cno(SC)K=95001SnoCno950011950012950013950022950023P127习题习题3用用sQL语句建立第二章习题语句建立第二章习题5(P74)中的中的4个表。个表。答:答:对于对于S表:表:S(SNO,SNAME,STATUS,CITY);建建S表:表:CREATETABLES(SnoC(2)UNIQUE,SnameC(6),StatusC(2),CityC(4);对于对于P表:表:P(PNO,PNAME,COLOR,WEIGHT);建
6、建P表表:CREATETABLEP(PnoC(2)UNIQUE,PnameC(6),COLORC(2),WEIGHTINT);对于对于J表:表:J(JNO,JNAME,CITY);建建J表:表:CREATETABLEJ(JnoC(2)UNlQUE,JNAMEC(8),CITYC(4);对于对于SPJ表:表:SPJ(sNo,PNo,JNo,QTY);建建SPJ表:表:SPJ(SNO,PNO,JNO,QTY)CREATETABLESPJ(SnoC(2),PnoC(2),JNOC(2),QTYINT);【P127】4.针对上题中建立的针对上题中建立的4个表试用个表试用SQL语语言完成第二章习题言完成
7、第二章习题5中的查询。中的查询。(l)求供应工程)求供应工程Jl零件的供应商号码零件的供应商号码SNO;SELECTDISTINCTSNO FROMSPJWHEREJNO=J1;(2)求供应工程)求供应工程Jl零件零件Pl的供应商号码的供应商号码SNO;SELECTDISTINCTSNOFROMSPJWHEREJNO=J1ANDPNO=P1;(3)求供应工程)求供应工程Jl零件为红色的供应商号码零件为红色的供应商号码SNO;SELECTSNOFROMSPJ,PWHEREJNO=J1ANDSPJ.PNO=P.PNOANDCOLOR=红红;(4)求没有使用天津供应商生产的红色零求没有使用天津供应商
8、生产的红色零件的工程号件的工程号JNO;SELECTDISTINCTJNOFROMSPJWHEREJNONOTIN(SELECTJNOFROMSPJ,P,SWHERES.CITY=天津天津ANDCOLOR=红红ANDS.SNO=SPJ.SNOANDP.PNO=SPJ.PNO);( 5) 求至少用了供应商 S1 所供应的全部零件的工程号 JNO ;p:供应商供应商S1供应了零件供应了零件yq:工程工程x选用了零件选用了零件y找这样的找这样的x,使得使得对于所有的零件对于所有的零件y,p-q都成立都成立等价转换为:等价转换为:不存在零件不存在零件y,供应商,供应商S1供应了供应了y,而工程,而工程
9、x没有选用没有选用ySELECTDISTINCTJNOFROMSPJSPJXWHERENOTEXISTS(SELECT*FROMSPJSPJYWHERESPJY.SNO=S1ANDNOTEXISTS(SELECT*FROMSPJSPJZWHERESPJZ.SNO=SPJX.SNOANDSPJZ.PNO=SPJY.PNO);5.(1)找出所有供应商的姓名和所在城市。找出所有供应商的姓名和所在城市。SELECTSNAME,CITYFROMS;(2)找出所有零件的名称、颜色、重量。找出所有零件的名称、颜色、重量。SELECTPNAME,COLOR,WEIGHTFROMP;(3)找出使用供应商找出使用
10、供应商S1所供应零件的工程号码。所供应零件的工程号码。SELECTDISTJNOFROMSPJWHERESNO=S1;(4)找出工程项目找出工程项目J2使用的各种零件的名称及其数量。使用的各种零件的名称及其数量。SELECTPNAME,QTYFROMSPJ,PWHEREP.PNO=SPJ.PNOANDSPJ.JNO=J2;(5)找出上海厂商供应的所有零件号码。找出上海厂商供应的所有零件号码。SELECTPNOFROMSPJ,SWHERES.SNO=SPJ.SNOANDCITY=上海上海;(6)找出使用上海产的零件的工程名称。找出使用上海产的零件的工程名称。SELECTJNAMEFROMSPJ,
11、S,JWHERES.SNO=SPJ.SNOANDS.CITY=上海上海ANDJ.JNO=SPJ.JNO;(7)找出没有使用天津产的零件的工程号码。找出没有使用天津产的零件的工程号码。SELECTDISTINCTJNOFROMSPJWHEREJNONOTIN(SELECTDISTINCTJNOFROMSPJ,SWHERES.SNO=SPJ.SNOANDS.CITY=天津天津);(8)把全部红色零件的颜色改成蓝色。把全部红色零件的颜色改成蓝色。UPDATEPSETCOLOR=蓝蓝WHERECOLOR=红红;(9)由由S5供给供给J4的零件的零件P6改为由改为由S3供应。供应。UPDATESPJSE
12、TSNO=S3WHERESNO=S5ANDJNO=J4ANDPNO=P6;(10)从供应商关系中删除供应商号是从供应商关系中删除供应商号是S2的记录,的记录,并从供应情况关系中删除相应的记录。并从供应情况关系中删除相应的记录。A、DELETEFROMSPJWHERESNO=S2;B、DELETEFROMSWHERESNO=S2;(11)请将请将(S2,J6,P4,200)插入供应情况关插入供应情况关系。系。INSERTINTOSPJVALUES(S2,J6,P4,200);习题解答请用SQL的GRANT 和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:( d ) 用户刘星对职
13、工表有SELECT 权力,对工资字段具有更新权力:GRANT SELECT,UPDATE(工资) ON 职工TO 刘星; ( e ) 用户张新具有修改这两个表的结构的权力。GRANT ALTER TABLE ON 职工,部门 TO 张新; ( f ) 用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力GRANT ALL PRIVILIGES ON 职工,部门TO 周平WITH GRANT OPTION; ( g ) 用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。CREATE VIEW 部门工资 ASSELECT
14、 部门.名称,MAX(工资),MIN(工资),AVG(工资)FROM 职工,部门WHERE 职工.部门号=部门.部门号GROUP BY 职工.部门号GRANT SELECT ON 部门工资TO 杨兰;假设有下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;部门(部门号,名称,经理名,电话),其中部门号为主码。用 SQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:定义每个模式的主码;定义参照完整性;定义职工年龄不得超过 60 岁。CREATE TABLE DEPT (Deptno NUMBER(2), Deptname VARCHAR(1
15、0), Manager VARCHAR(10), PhoneNumber Char(12) CONSTRAINT PK_SC PRIMARY KEY(Deptno);CREATE TABLE EMP (Empno NUMBER(4), Ename VARCHAR(10), Age NUMBER(2), CONSTRAINT C1 CHECK ( Aage=60), Job VARCHAR(9), Sal NUMBER(7,2), Deptno NUMBER(2), CONSTRAINT FK_DEPTNO FOREIGN KEY(Deptno) REFFERENCES DEPT(Deptno);