数据库作业 数据库作业是什么

如题所述

第1个回答  2023-02-08
数据库作业

第一次

1、指明下列实体间联系的种类:

(1)教研室和教师(假设一个教师只属于一个教研室,一个教研室可有多名教师)

(2)商店和顾客;

(3)国家和首都。

2、指出下列关系模式的主码:

(1)考试情况(课程号,考试性质,考试日期,考试地点)。假设一门主课程在不同的日期可有多次考试,但在同一天只能考一次。多门不同的课程可以同时进行考试。

(2)教师授课(教师号,课程号,授课时数,学年,学期)。假设一名教师在同一学年和学期可以讲授多门课程,也可以在不同学年和学期多次讲授同一门课程,对每门课程的讲授都有一个授课时数。

(3)图书借阅(书号,读者号,借书日期,还书日期)。假设一个读者可以在不同的日期多次借阅同一本书,一个读者可以同时借阅多本不同的图书,一本书可以在不同时间借给不同的读者。但一个读者不能再同一天对同一本书借阅多次。 答:课程名、考试日期

答:课程号、学年、学期

答:书号、读者号、借书日期

3、数据库包含哪三级模式?试分别说明每一级模式的作用。

数据库系统包含的三级模式为:内模式、模式和外模式。外模式是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同数据库用户需求的数据视图,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是对数据库整体数据结构的子集或局部重构。模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。内模式是对整个数据库的底层表示,它描述了数据的存储结构。

第二次

1、 数据完整性的含义是什么?

答:数据的完整性是为了防止数据库中存在不符合应用语义的数据,为了维护数据的完整性,数据库管理系统提供了一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据之上的语义约束条件就是数据完整性约束条件。

2、 写出创建如下3张表的SQL 语句,要求在定义表的同时定义数据的完整性约束:

(1)“图书表”结构如下:

书号:统一字符编码定长类型,长度为6,主码;

书名:统一字符编码可变长类型,长度为30,非空;

第一作者:普通编码定长字符类型,长度为10,非空;

出版日期:小日期类型;

价格:定点小数,小数部分1位,整数部分3位;

(2)“书店表”结构如下:

书店编号:统一字符编码定长类型,长度为6,主码;

店名:统一字符编码可变长类型,长度为30,非空;

电话:普通编码定长字符类型,8位长,每一位的取值均是0~9的数字; 邮政编码:普通编码定长字符类型,6位长;

(3)“图书销售表”结构如下:

书号:统一字符编码定长类型,长度为6,非空;

书店编号:统一字符编码定长类型,长度为6,非空;

销售日期:小日期时间类型,非空;

销售数量:微整型,大于等于1;

主码为(书号,书店编号,销售日期);

其中“书号”为引用“图书表”的“书号”的外码;

“书店编号”为引用“书店表”的“书店编号”的外码;

CREATE TABLE 图书表 (

书号 nchar(6) primary key,

书名 nvarchar(30) not null,

第一作者 char(10) not null,

出版日期 smalldatetime,

价格 numeric(4,1))

CREATE TABLE 书店表 (

书店编号 nchar(6) primary key,

店名 nvarchar(30) not null,

电话 char(8) check (电话 like "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"),

地址 varchar(40),

邮政编码 char(6))

CREATE TABLE 图书销售表 (

书号 nchar(6) not null,

书店编号 nchar(6) not null,

销售日期 smalldatetime not null,

销售数量 smallint check(销售数量>=1),

primary key(书号, 书店编号, 销售日期),

foreign key(书号) references 图书表(书号),

foreign key(书店编号) references 书店表(书店编号))

3、 为图书表添加“印刷数量”列,类型为整数,同时添加约束,要求此列的取值要大于等于1000。

答:ALTER TABLE 图书表

ADD 印刷数量 int check (印刷数量>=1000)

4、 删除书店表的“邮政编码”列。

答:ALTER TABLE 书店表

DROP COLUMN 邮政编码

5、 将图书销售表中的“邮政编码”列的数据类型改为整型。

答:ALTER TABLE 图书销售表

ALTER COLUMN 销售数量 int

第三次

利用第3章定义的student 、course 和sc 表结构实现如下操作。

1、查询学生选课表中的全部数据。

2、查询计算机系的学生的姓名、年龄。

3、查询成绩在70~80分之间的学生的学号、课程号和成绩。

4、查询计算机系年龄在18-20之间且性别为“男”的学生的姓名、年龄。

5、查询课程号为“c01”的课程的最高的分数。

6、查询计算机系学生的最大年龄和最小年龄。

7、统计每个系的学生人数。

8、统计每门课程的选课人数和考试最高分。

9、统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。

10、查询总成绩超过200分的学生,要求列出学号、总成绩。

11、查询选修了“c02”号课程的学生的姓名和所在系。

12、查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。 13、查询哪些学生没有选课,要求列出学号、姓名和所在系。

1. select * from SC

2. select Sname,Sage from Student where Sdept = "计算机"

3. select Sno,Cno,Grade from SC where Grade >= 70 and Grade

4. select Sname,Sage from Student where Sage between 18 and 20 and Ssex = "男"

5. select top 1 Grade from SC where Cno = "C01"

6. select max(Sage),min(Sage) from Student

7. select Sdept,sum(Sno) from Student group by Sdept

8. select course.Cname,sum(sc.Sno),max(Grade) from SC

join studet on Student.Sno = SC.Sno

join Course on Course.Cno = SC.Cno

group by course.cname,max(grade)

9. select sum(Cno),avg(Grade) from SC

join Course on Course.Cno = SC.Cno

join Student on Student.Sno= SC.Sno

order by SC.Sno

10. Select sno,sum(grade) 总成绩from sc

Group by sno having sum(grade) > 200

11. select Student.Sname,Student.Sdept from Student

join Course on Course.Cno = SC.Cno

join SC on SC.Sno = Student.Sno

where SC.Cno = "C02"

12. select Student.sname,course.cno,sc.grade from sc

join student on student.sno = sc.sno

join course on course.cno = sc.cno

where sc.grade >= 80

order by sc.grade desc

13. Select sname from student s left join sc on s.sno = sc.sno

Where sc.sno is null

第四次

1、查询与VB 在同一学期开设的课程的课程名和开课学期。

2、 查询与李勇年龄相同的学生的姓名、所在系和年龄。

3、 用子查询实现如下查询:(1)查询选修了“c01”号课程的学生的姓名和所在系

(2)查询数学系成绩80分以上的学生的学号、姓名、课程号和成绩(3) 查询计算机系考试成绩最高的学生的姓名(4)查询数据结构考试成绩最高的学生的姓名、所在系、性别和成绩。

4、 查询没有选修VB 课程的学生的姓名和所在系。

5、 查询计算机系没有选课的学生的姓名和性别。

6、 删除考试成绩低于50分的学生的选课记录。

7、 删除没有人选的课程记录。

8、 删除计算机系VB 成绩不及格学生的VB 选课记录。

9、 将第2学期开设的所有课程的学分增加1分。

10、 将VB 课程的学分改为3分。

11、 将计算机系学生的年龄增加1岁。

12、 将信息系学生的“计算机文化学”课程的考试成绩加5分。

1.Select c2.Cname,c2.Semester from Course c1 JOIN Course c2 on c1.Semester = c2.Semester Where c1.cname = "VB" and c2.Cname != "VB"

2. Select s2.Sname,s2.Sdept,s2.Sage

From Student s1 JOIN Student s2 on s1.Sage = s2.Sage

Where s1.Sname = "李勇" and s2.Sname != "李勇"

3. ⑴ select sname,sdept from student where sno in(

select sno from sc where cno = "C01")

⑵ select sno,sname from student where sno in(

select sno from sc where grade > 80)

and sdept = "数学系"

⑶ select sname from student s join sc on s.sno = sc.sno

where sdept = "计算机系" and grade = (

select max(grade) from sc join student s on s.sno = sc.sno

where sdept = "计算机系")

⑷ select sname,sdept,ssex,grade from student s join sc on s.sno = sc.sno

where s.sno in (

select top 1 with ties sno

from sc join course c on c.cno = sc.cno

where cname = "数据结构"

order by grade desc

4.Select sname,sdept from student where sno not in (

Select sno from sc join course c on c.cno = sc.cno

Where cname = "vb")

5.Select sname,ssex from student where sdept = "计算机系"

And sno not in (select sno from sc )

6. Delete from sc where grade

7. Delete from course where cno not in(

Select cno from course)

8.Delete from sc from sc join student s on s.sno = sc.sno

Join course c on c.cno = sc.cno

Where sdept = "计算机系" and cname = "VB"

And grade

9.Update course set credit = credit + 2 where semester = 2

10.Update course set credit = 3 where cname = "VB"

11.Update student set sage = sage + 1 where sdept = "计算机系"

12.Update SC set grade=grade+5

From course c join sc on c.cno = sc.cno

Join student s on s.sno = sc.sno

where sdept = "信息系" and cname = "计算机文化学"

第五次

1、 第一范式、第二范式和第三范式关系的定义分别是什么?

答:不包含非原子项属性的关系就是第一范式的关系;对于第一范式的关系,如果此关系中的每个非主属性都完全函数依赖于主键,则此关系属于第二范式;对于第二范式的关系,如果所有的非主属·性都不传递依赖于主键,则此关系就是第三范式的。

2、 设有关系模式:学生修课(学号,姓名,所在系,性别,课程号,课程名,学

分,成绩)设一个学生可以选多门课程,一门课程可以被多名学生选。一个学生有唯一的所在系,每门课程有唯一的课程名和学分。请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。

答:候选键为:(学号,课程号),它也是此关系模式的主键。由于存在函数依赖:

学号 → 姓名,课程号 → 课程名

因此,存在非主属性对主键的部分函数依赖关系,因此它不是第二范式的表。分解如下: 学生表(学号,姓名,所在系,性别),主键为“学号”,已属于第三范式。

课程表(课程号,课程名,学分),主键为“课程号”,已属于第三范式。

选课表(学号,课程号,成绩),主键为(学号,课程号),已属于第三范式

第六次

1、 设有关系模式:学生(学号,姓名,所在系,班号,班主任,系主任),其语义为:一个学生只在一个系的一个班学习,一个系只有一个系主任,一个班只有一个班主任,一个系可以有多个班。请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。

答:候选键为:学号,它也是此关系模式的主键。

由于不存在非主键属性对主键的部分依赖关系,因此,此关系模式属于第二范式的,但由于存在如下函数依赖:

学号 → 班号, 班号 → 班主任, 因此,存在非主键属性对码的传递依赖关系,同样以及

学号 → 所在系,所在系 → 系主任,因此,此关系模式不是第三范式的。对其分解后的结果为: 学生基本表(学号,姓名,所在系,班号), 主键为“学号”,“班号”为引用班级表表的“班号”的外键,“所在系” 为引用系表表的“系名”的外键。

班级表(班号,班主任),主键为“班号”。

系表(系名,系主任),主键为“系名”。

2、 设有关系模式:教师授课(课程号,课程名,学分,授课教师号,教师名,授课时数),其语义为:一门课程(有课程号决定)有确定的课程名和学分,每名教师(有教师号决定)有确定的教师名,每门课程可以有多名教师讲授,每名教师也可以讲授多门课程,每名教师对每门课程有确定的授课时数。指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。 答:此关系模式的候选键为(课程号,授课教师号),它们也是主键。由于存在函数依赖:

课程号 → 课程名,授课教师号 → 教师名

因此,存在非主属性对主键的部分函数依赖关系,因此它不是第二范式的表。分解如下: 课程表(课程号,课程名,学分),主键为“课程号”,已属于第三范式。

教师表(教师号,教师名),主键为“教师号”,已属于第三范式。

授课表(课程号,授课教师号,授课时数),主键为(课程号,教师号),已属于第三范式。
相似回答