P103第十题(3)SELECT 职工号,姓名FROM 职工WHERE 职工号IN (SELECT 职工号FROM 参加WHERE 编号IN (SELECT 编号FROM 社会团体WHERE 名称='唱歌队' OR 名称=‘篮球队’))(4)SELECT *FROM 职工WHERE 职工号NOT IN (SELECT 职工号FROM 参加)(5)SELECT *FROM 职工WHERE NOT EXISTS (SELECT *FROM 社团WHERE NOT EXISTS(SELECT *FROM 参加WHERE 职工.职工号=职工号AND 社团.编号=编号))(6)SELECT *FROM 职工WHERE NOT EXISTS (SELECT *FROM 参加 AWhere A.职工号=‘1001’and not exists(select *From 参加BWhere 职工.职工号=B.职工号and A.编号=B.编号))(7)select 编号,count(职工号)as 人数From 参加Group by 编号(8)select 名称from 社团, 参加Group by 编号having count(*)>=all(select count(职工号)From 参加Group by 编号)select Cno,Cnamefrom Coursewhere Cno in (select Cnofrom electiveGroup by o having count(*)>=all(select count(Sno)From elective Group by Cno ))(9)select 名称,负责人From 社团Where 编号in (select 编号From 参加Group by 编号having count(职工号)>100)(10)Grant select,insert, delete on table 社团,参加to 李平with grant option 11\(1)select 姓名,联系电话From 供应商Where 所在城市=‘天津’(2)Select *From 工程Where 预算>=50000 and 预算<=1000000Order by 预算DESC(3)select 工程代码From 供应零件Where 供应商代码=‘S1’(4)select 零件名,数量From 零件,供应零件Where 零件代码in (select 零件代码From 供应零件Where 工程代码=‘J2’)(5)select 零件代码From 供应商Where 供应商代码in (select 供应商代码From 供应商Where 所在城市=‘上海’)(6)select 工程名From 工程Where 工程代号in (select 工程代码From 供应零件Where 零件代号in (select 零件代号From 零件Where 产地=‘上海’))(7)select 工程代号From 供应零件Where 零件代号not in (select 零件代号From 零件Where 产地=‘天津’)Select 工程代号From 供应零件Where not exists (select *From 零件Where 供应零件.零件代码=零件代码and 产地=‘天津’)(8)update 零件Set 颜色=‘蓝色’Where 零件代码in (select 零件代码From 零件Where 颜色=‘红色’)12.(6)select学号,姓名From 学生Where 学号in (select 学号From 选课Group by 学号having count(课程号)>=3) select Sno, SnameFrom StudentWhere Sno in (select SnoFrom electiveGroup by Sno having count(Cno)>=3)(7) select学号,姓名From 学生Where 学号in (select 学号,sum(From 选课,课程Where 选课.课程号= 课程.课程号Group by 学号having sum(学分)>30) (8)Update 选课Set 成绩=成绩*1.2Where 课程号in (select 课程号From 课程Where 课程名=‘数据库’)and 成绩<60 (9)delete from选课where 学号in (select 学号From 选课Where 成绩<60 and 课程号in (select 课程号From 课程Where 课程名=‘数据库’))1、已知学生关系模式S(Sno,Sname,SD,Sdname,Course,Grade)其中:Sno学号、Sname姓名、SD系名、Sdname系主任名、Course课程、Grade成绩。
(1)写出关系模式S的基本函数依赖和主码。
(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么?(3)将关系模式分解成3NF,并说明为什么?(1)写出关系模式S的基本函数依赖和主码。
答: 关系模式S的基本函数依赖如下:Sno→Sname,SD→Sdname,Sno→SD,(Sno,Course) →Grade关系模式S的码为:(Sno,Course)。
(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么?答: 原关系模式S是属于1NF的,码为(Sno,Course),非主属性中的成绩完全依赖于码,而其它非主属性对码的函数依赖为部分函数依赖,所以不属于2NF。
消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成2NF如下:S1(Sno,Sname,SD,Sdname)、S2(Sno,Course,Grade)(3)将关系模式分解成3NF,并说明为什么?答: 将上述关系模式分解成3NF如下:关系模式S1中存在Sno→SD,SD→Sdname,即非主属性Sdname传递依赖于Sno,所以S1不是3NF。
进一步分解如下:S11(Sno,Sname,SD) S12(SD,Sdname)分解后的关系模式S11、S12满足3NF。
对关系模式S2不存在非主属性对码的传递依赖,故属于3NF。
所以,原模式S(Sno,Sname,SD,Sdname,Course,Grade)按如下分解满足3NF。
S11(Sno,Sname,SD) S12(SD,Sdname)S2(Sno,Course,Grade)⏹2、设有如图所示的学生关系S⏹试问S是否属于3NF? 为什么?若不是,它属于几范式? 并将其规范化为3NF. 解:S不属于3NF,它属于2NF。
S的候选关键字为“学号”。
依赖关系:学号→系号, 系号→系名,系号→学号所以: 学号→系名,即存在非主属性系名对候选关键字“学号”的传递依赖,S不是3NF.在S中所有非主属性均依赖于码学号,所以S是2NF。
将S分解成:S1(学号,学生名,年龄,性别,系号)、S2(系号,系名),分解后的Sl与S2如图所示:关系模式S1如下:关系模式S2如下:关系模式S1、S2上无传递依赖,它们是3NF。
2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
学生:学号、姓名、出生年月、系名、班号、宿舍区。
班级:班号、专业名、系名、人数、入校年份。
系:系名、系号、系办公地点、人数。
学会:学会名、成立年份、办公地点、人数。
语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。
一个系的学生住在同一宿舍区。
每个学生可参加若干学会,每个学会有若干学生。
学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。
指出各关系模式的候选码、外部码,有没有全码存在?解:(1)关系模式如下:学生:S(Sno,Sname,Sbirth,Dept,Class,Rno)班级:C(Class,Pname,Dept,Cnum,Cyear)系:D(Dept,Dno,Office,Dnum)学会:M(Mname,Myear,Maddr,Mnum)(2)每个关系模式的最小函数依赖集如下:A、学生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函数依赖集如下:Sno◊Sname,Sno◊Sbirth,Sno◊Class,Class◊Dept,DEPT◊Rno传递依赖如下:由于Sno◊Dept,而Dept◊Sno ,Dept◊Rno(宿舍区)所以Sno与Rno之间存在着传递函数依赖。
由于Class◊Dept,Dept ◊ Class,Dept◊Rno所以Class与Rno之间存在着传递函数依赖。
由于Sno◊Class,Class◊Sno,Class◊Dept所以Sno与Dept之间存在着传递函数依赖。
B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下:Class◊Pname,Class◊Cnum,Class◊Cyear,Pname◊Dept.由于Class◊Pname,Pname◊Class,Pname◊Dept所以C1ass与Dept之间存在着传递函数依赖。
C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:Dept◊Dno,Dno◊Dept,Dno◊Office,Dno◊Dnum根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。
D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下:Mname◊Myear,Mname◊Maddr,Mname◊Mnum该模式不存在传递依赖。
(3)各关系模式的候选码、外部码,全码如下:A、学生S候选码:Sno;外部码:Dept、Class;无全码B、班级C候选码:Class;外部码:Dept;无全码C、系D候选码:Dept或Dno;无外部码;无全码D、学会M候选码:Mname;无外部码;无全码。