习题一
1. 用SQL的有关语句定义
1) 学生关系Student,包括学号Sno、姓名SN、年龄SA;
2) 课程关系Course,包括课程号Cno、课程名CN、任课教师CT;
3) 学生选课关系,包括Sno、Cno和成绩G。
注意:说明主键码和外键码(如果有的话),并在键码属性上建立索引。
2. 按题1的学生关系模式,用SQL的有关语句
1) 授予赵华对学生关系Student的插入和修改权限;
2) 插入任意3个学生的完整信息;
3) 修改所有学生的年龄(加1)。
3. 结合题1定义的学生选课数据库,用SQL语句查询计算机系学生数据库课的成绩,输出学生姓名和成绩,按成绩排序(降序),若成绩相同,再按学号排序(升序)。
4. 按嵌入式SQL的格式插入任意一个学生的学号、姓名、系别和年龄。
(6分)
5. 商店销售商品的数据库,涉及如下数据:
商店号、商店名、地址
商品号、商品名、单价。
某商店销售某商品的数量和日期。
1) 设计E/R图(属性名用中、英文均可);
2) 转换成关系模型(注明键码和函数依赖)。
6. 有关图书发行的关系模型如下:
书店S(书店号SNo,书店名SN,地址A)
图书B(书号BNo,书名BN,价格P)
图书馆L(馆号LNo,馆名LN,城市C)
图书发行LBS(LNo,BNo,SNo,发行量Q)
分别用关系代数和SQL语言表达如下查询:
图书馆L4(馆号)收藏图书的书名和出售该书的书店名。
7. 写出3个关系模式分别满足:
1) 是1NF,不是2NF;
2) 是2NF,不是3NF;
3) 是3NF,也是BCNF;
各用两句话分别说明你所写的关系模式是前者,不是(或也是)后者。
1.1) CREATE TABLE Student(
Sno INT PRIMARY KEY,
SN CHAR(30),
SA INT
);
2) CREATE TABEL Course(
Cno INT PRIMARY KEY,
CN CHAR(30),
CT CHAR(30)
);
3) CREATE TABEL SC(
Sno INT,
Cno INT,
G INT,
PRIMAYR KEY(Sno,Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);
2. 1) GRANT INSERT, UPDATE, ON Student TO 赵华;
2) INSERT INTO Student
(TABLE (01001,’赵华’,19),
(01002,’李芳’,18),
(01003,’刘红’,20),
);
3) UPDATE Student
SET SA=SA+1;
3. SELECT SN,G
FROM Student,Course,SC
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno
AND Course.CN=’数据库’
ORDER BY G DESC,Sno;
4. 1)说明: EXEC SQL BEGIN DECLARE SECTION;
int sno;
char sname[30];
int sage;
char SQLSTATE[6];
EXEC SQL END DECLARE SECTION;
2)赋值: sno:=01001;
sname:=’赵华’;
sage:=19;
3)插入: EXEC SQL INSERT
INTO Student
VALUES(:sno,:sname,:sage);
5.1)
商店号 |
商店名 |
地址 |
商店 |
销售 |
数量 |
日期 |
单价 |
商品名 |
商品号 |
商品 |
2) 商店(商店号,商店名,地址) 商店号→商店名,地址
商品(商品号,商品名,单价) 商品号→商品名,单价
销售(商店号,商品号,数量,日期) 商店号,商品号→数量,日期
6. 1)π BN,SN(σ LNo=L4(B LBS S))
2) SELECT BN,SN
FROM B,LBS,S
WHERE B.BNo=LBS.BNo AND LBS.SNo=S.SNo
AND LBS.LNo=L4;
7. 1)学生选课(学号,姓名,课程号,成绩)
属性不可分,是1NF;存在非主属性对键码的部分依赖(学号,课程号 姓名),不是2NF。
2)学生(学号,姓名,系别,系主任)
键码为单属性,不存在部分依赖,是2NF;存在非主属性对键码的传递依赖(学号→姓名,系别;系别 学号;系别→系主任;学号 系主任),不是3NF。
3)学生(学号,姓名,年龄)
非主属性(姓名,年龄)对键码不存在部分依赖和传递依赖,是3NF;
主属性(学号)对键码也不存在部分依赖和传递依赖,是BCNF。