一、设有关系:学生关系:S(S#,SNAME,SSEX,BIRTHIN,PLACEOFB,SCODE#,CLASS),课程关系模式:C(C#,CNAME,CLASSH),学习关系:SC(S#,C#,GRADE)。 试用SQL语言完成下列查询,写出对应的查询语句。
1、查询全体学生的学号与姓名。
SELECT SNO,SNAME FROM S; 2、查询全体学生的详细记录。 SELECT * FROM S;
3、查询课程关系 C 中的记录数,也即开课的总门数。 SELECT COUNT(*) FROM C;
4、查询所有学生所学课程的最高分数、最低分数和平均分数。 SELECT MAX(GRADE) AS 最高分数,MIN(GRADE) AS 最低分数, AVG(GRADE) AS 平均分数 FROM SC;
5、写出查询所有学习了计算机网络课(课程号为C403001)的学生的学号和成绩的查询语句。 SELECT S#,GRADE FROM SC WHERE C# =′C403001′;
6、查询选修了计算机网络课(课程号为C403001)或信息安全技术课(课程号为C403002)的学生的学号。
SELECT S# FROM SC WHERE C# =′C403001′ OR C# =′C403002′; 7、查询选修了“信息安全技术”课程的学生的学号与姓名 SELECT S.S#,SNAME FROM S,SC,C
WHERE S.S# = SC.S# AND SC.C# = C.C# AND CNAME ='信息安全技术' 8、查询学生关系S 中姓李的学生的学号和姓名
SELECT S#,SNAME FROM S WHERE SNAME LIKE '李%' 9、查询各个同学所学课程的平均分数。
SELECT S# ,AVG(GRADE) AS 平均分数 FROM SC GROUP BY S# ; 10、查询年龄在21岁至28岁之间学生的基本信息。
SELECT * FROM S WHERE YEAR(GETDATE())-YEAR(SBIRTHIN) BETWEEN 21 AND 28; 11、查询各个同学所学课程的平均分数。
SELECT S# ,AVG(GRADE) AS 平均分数 FROM SC GROUP BY S# ; 12、)检索选修课程名称为“MATHS”的学生的学号与姓名
SELECT S#,SNAME FROM S,SC,C WHERE S.S#=SC.S# AND C.C#=SC.C# AND CNAME=’ MATHS’ 13、检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄
SELECT S#,SNAME,AGE FROM S WHERE AGE BETWEEN 18 AND 20 and ssex=’girl’
二、设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:供应商(供应商代码,供应商姓名,供应商状态,供应商所在城市)
S(SNO,SNAME,STATUS,CITY)
零件(零件代码,零件名,颜色,重量) P(PNO,PNAME,COLOR。WEIGHT)
工程项目(工程项目代码,工程项目名,工程项目所在城市) J(JNO,JNAME,CITY)
供应情况(供应商代码,零件代码,工程项目代码,供应数量) SPJ(SNO,PNO,JNO,QTY)
试用关系代数和SQL语言完成下列查询。
(1)求供应工程J1零件的供应商号码SNO:
SELECT DIST SNO FROM SPJ WHERE JNO='J1' (2)求供应工程J1零件P1的供应商号码SNO:
SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'; (3)求供应工程J1零件为红色的供应商号码SNO:
SELECT SNO FROM SPJ,P WHERE JNO='J1' AND SPJ PNO=P PNO AND COLOR='红'; (4)请将(S2,J6,P4,200)插入供应情况关系。
INSERT INTO SPJ VALUES(‘S2’,‘J6’,‘P4’,200) (5)找出所有供应商的姓名和所在城市。
SELECT SNAME,CITY FROM S
(6)找出所有零件的名称、颜色、重量。
SELECT PNAME,COLOR,WEIGHT FROM P
(7)找出使用供应商S1所供应零件的工程号码。
SELECT DIST JNO FROM SPJ WHERE SNO='S1'
(8)找出工程项目J2使用的各种零件的名称及其数量。
SELECT PNAME,QTY FROM SPJ,P
WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2'
(9)找出上海厂商供应的所有零件号码。
SELECT PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND CITY='上海'
(10)找出使用上海产的零件的工程名称。
SELECT JNAME FROM SPJ,S,J
WHERE S.SNO=SPJ.SNO AND S.CITY='上海' AND J.JNO=SPJ.JNO
(11)把全部红色零件的颜色改成蓝色。
UPDATE P SET COLOR='蓝' WHERE COLOR='红'
(12)由S5供给J4的零件P6改为由S3供应。
UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6'
三、请设计一个图书馆数据库,此数据库中对每个借阅者保存读者记录,包括:读者 号,姓名,地址,性别,年龄,单位。对每本书存有:书号,书名,作者,出版社。对 每本被借出的书存有读者号、借出日期和应还日期。要求:给出E 一R 图,再将其转换为关系模型。
关系模型为:读者(读者号,姓名,地址,性别,年龄,单位) 书(书号,书名,作者,出版社)借书 (读者号,书号,借出日期,应还日期) 四、
设有如下实体:学生:学号、单位、姓名、性别、年龄、选修课程名 课程:编号、课程名、开课单位、任课教师号 教师:教师号、姓名、性别、职称、讲授课程编号 单位:单位名称、电话、教师号、教师名
上述实体中存在如下联系:
(1).一个学生可选修多门课程,一门课程可为多个学生选修;(2).一个教师可讲授多门课程,一门课程可为多个教师讲授;(3).一个单位可有多个教师,一个教师只能属于一个单位。
试完成如下工作:(1).分别设计学生选课和教师任课两个局部信息的结构E-R图。(2).将上述设计完成的E-R图合并成一个全局E-R图。(3).将该全局E-R图转换为等价的关系模型表示的数据库逻辑结构。
解:(1).学生选课、教师任课局部E-R图如下所示。
属于 教师 教师号 姓名 性别 年龄 学号 姓名 性别 年龄 编号 课程名 单位名 单位 1 1 拥有 开课 m m 学生 m 选修 课程 教师号 学生选课局部E-R图
m 讲授 n 课程 编号 m 1 单位单位名 电话
(2).合并后的全局E-R图如下所示。
拥有 开课 单位 1 属于 m 教师 1 1 m 讲授 m m 学生 m n 选修 n 课程
全局E-R图
单位:单位名、电话 学生:学号、姓名、性别、年龄 教师:教师号、姓名、性别、职称 课程:编号、课程号
为避免图形复杂,下面给出各实体属性:
(3).该全局E-R图转换为等价的关系模型表示的数据库逻辑结构如下:
单位(单位名,电话) 教师(教师号,姓名,性别,职称,单位名) 课程(课程编号,课程名,单位名)
学生(学号,姓名,性别,年龄,单位名) 讲授(教师号,课程编号) 选修(学号,课程编号)
五、 数据独立性(物理、逻辑) 数据管理 关系模型
范式 事务 逻辑模式 候选键
六、1NF向2NF、2NF向3NF的转换
七、关系代数专门的关系运算:选择、投影、商、连接、自然连接
八、主属性 主键约束 数据库的三级模式结构 SQL
数据库中存储的是数据及数据间的联系 数据库系统的特点
数据库管理系统提供授权功能来控制不同用户访问数据的权限,主要是为了实现数据库的安全性。
九、要将两个关系进行自然连接,这两个关系应具备什么条件? 十、设某商业集团数据库中有一关系模式R如下:
R (商店编号,商品编号,数量,部门编号,负责人)
如果规定:(1) 每个商店的每种商品只在一个部门销售;(2) 每个商店的每个部门只有一个负责人;(3) 每个商店的每种商品只有一个库存数量。
试回答下列问题:(1) 根据上述规定,写出关系模式R的基本函数依赖;
答: 关系模式S的基本函数依赖如下: (商店编号,商品编号) →部门编号,(商店编号,部门编号)→负责人,(商店编号,商品编号) →数量
(2) 找出关系模式R的候选码;答:关系模式R的码为:(商店编号,商品编号, 部门编号)。 (3) 试问关系模式R最高已经达到第几范式?为什么?答: 原关系模式R是属于1NF的,码为(商店编号,商品编号, 部门编号),非主属性对码的函数依赖全为部分函数依赖,所以不属于2NF。
消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成2NF如下: R1(商店编号,商品编号, 部门编号, 数量) R2(商店编号,部门编号, 负责人) (4) 如果R不属于3NF,请将R分解成3NF模式集。答:将R分解为
R1(商店编号,商品编号, 部门编号, 数量) R2(商店编号,部门编号, 负责人) 分解后的R不存在传递的函数依赖,所以分解后的R已经是第3NF