( )
sno char(8) primary key, sname varchar2(20) not null,
ssex varchar2(2) check(ssex in (‘男’,’女’)), sageint check(sage between 15 and 40), sdept varchar2 (20)
(2)、
INSERT into student (sno, sname,ssex, sage, sdept) values (‘0910010001’,’吴鹏’,’男’,21,’计算机系’) (3)、
UPDATE student set sname=’张萌’,ssex=’女’,sage=22,sdept=’传媒技术系’ where sno=’0910010012’ (4)、
SELECT sname From student
Where sdept=’计算机系’ and sage<20 (5)、
CREATE view v_ student As
SELECT sdept, avg(sage) 平均年龄 From student Group by sdept
Having avg(sage)>19 (6)、
GRANT select on student to admin with grant option 7、
Πname(σ
2、(1)、
sdept=’计算机系’ and sage<20(student))
CREATE table teacher
( No char(8) primary key, Name varchar(20) not null, Sex varchar(2) check(sex in ('男','女')), Age intcheck(age between 15 and 40), Prof varchar(6), Depart varchar(20) ) (2)、
INSERT into teachar(no, name, sex, prof, depart) values ('021912','王敏','女','助教','计算机系') (3)、
UPDATE teacher set name='朱湘',sex='女',prof='教授',depart='传媒技术系' where no='021923' (4)、
SELECT no,name From teacher
Where depart='计算机系' and age>30 and sex='女' (5)、
CREATE view v_teacher As
SELECT depart, avg(age) 平均年龄 From teacher Group by depart Having avg(age)>30 (6)、
GRANT select on teacher to U1 with grant option (7)、
Πname(σ
六、查询优化 1、
depart='计算机系' and age>30 and sex='女'(teacher))
Select sno,sname,ldate From student,l
Where student.lno=l.lno and bno='B001' 2、
Πsno,sname,ldate(σ
3、
bno='B001'
(student∞l))
Πsno,sname,ldateσbno=’B001’σstudent.lno=l.lno×lstudent
4、
Πsno,sname,ldateσstudent.lno=l.lno×σbno=’B001’lstudent
七、关系数据理论
答:student不属于3NF,它属于2NF
因为student的候选关键字为“学号”,而:学号→系号, 系号→系名,系号→学号,所以: 学号→系名,即存在非主属性“系名”对候选关键字“学号”的传递函数依赖,student不是3NF,在student中所有非主属性均依赖于码学号,所以student是2NF。
将student分解成:student1(学号,学生名,年龄,性别,系号)、student2(系号,系名),分解后的student1与student2如图所示:
关系模式student1如下:
学号 学生名 年龄 性别 系号 100001 王 婧 18 女 D3 100002 张 露 19 女 D1 200001 黎明远 20 男 D2 200002 潘 建 21 男 D3 关系模式student2如下:
部门号 部门名 D3 通信工程 D1 电子工程 D2 计算机 D3 通信工程
因为关系模式student1、student2上无传递依赖,所以它们是3NF。 八、
1、查找所有喜欢喝“青岛啤酒”的喝酒者的姓名和电话。 Πdrinkername,phones (σbeername=’青岛啤酒’(likes)∞drinkers) SELECT drinkername,phones FROM drinkers, likes
WHERE drinkers.drinkerid=likes.drinkerid and beers.beername=’青岛啤酒’
2、查找“李明”喜欢喝的所有啤酒的名称和生产厂商。 Πbeername, manf(σdrinkername=’李明’(drinkers)∞likes∞beers) SELECT beername,manf FROM beers
WHERE beername in ( SELECT beername FROM likes WHERE drinkerid in ( SELECT drinkerid FROM drinkers WHERE drinkername=’李明’
)
)
3、查找“刘晨”喜欢喝的所有啤酒的名称,价格以及刘晨的住址和联系电话。 Πbeers.beername, price,addr,phones(σdrinkername=’刘晨’(drinkers)∞likes∞beers) SELECT beers.beername,price,addr,phones FROM drinkers, likes,beers
WHERE drinkers.drinkerid=likes.drinkerid and beers.beername=likes.beername and
drinkername =’刘晨’
4、查找喝酒者编号为“3002”的喝酒者喜欢喝的啤酒的名称、生产厂商以及价格。 Πbeers.beername, manf,price(σdrinkerid=’3002’(likes)∞beers) SELECT beers.beername,manf,price FROM likes,beers
WHERE beers.beername=likes.beernameand drinkerid =’3002’ 九、
十、
解:R不属于3NF,它是2NF。
R的候选码为职工号和职工名,而:
职工号→单位号,单位号→职工号,单位号→单位名.所以,职工号→单位名,即存在非主属性“单位名”对候选关键字职工号的传递函数依赖,所以 R不是3NF. 规范化后的关系子模式为如下图。
R1如下: 职工号 E1 E2 E3 E4 R2如下: 单位号 D3 D1 单位名 CCC AAA 职工名 ZHAO QIAN SEN L1 年龄 20 25 38 25 性别 F M M F 单位号 D3 D1 D3 D3