编程实验
答:数据库的发展历史经历了人工管理、文件系统和数据库系统三个发展阶段。
人工管理数据具有如下特点:
1、数据不保存
2、数据需要由应用程序自己管理,没有相应的软件系统负责数据的管理工作
3、数据不共享
4、数据不具有独立性,数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改,这就进一步加重了程序员的负担。
文件系统阶段特点为:
1、数据可以长期保存
2、由专门的软件即文件系统进行数据管理,程序和数据之间由软件提供的存取方法进行转换,使应用程序与数据之间有了一定的独立性,程序员可以不必过多地考虑物理细节,将精力集中于算法。
3、数据共享性差
4、数据独立性低
数据库系统阶段特点为:
1、数据结构化
2、数据的共享性好,冗余度低
3、数据独立性高
4、数据由DBMS统一管理和控制
(二)简述数据库设计过程的各个阶段上的设计描述。
答:数据库设计过程分为六个阶段:
1、需求分析:准确了解与分析用户需求,(包括数据与处理)。需求分析是整个设计过程的基础,需求分析的结果是否准确反映了用户的实际需求,将直接影响到后面各个阶段的设计、并影响到设计结果是否合理和实用。
2、概念结构设计:数据库逻辑结构依赖于具体的DBMS,在将现实世界需求转换为机器世界的模型之前,我们先以一种独立于具体数据库管理系统的逻辑描述方法来描述数据库的逻辑结构,即设计数据库的概念结构。概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
3、逻辑结构设计:逻辑结构设计是将抽象的概念结构转换为所选用的DBMS支持的数据模型,并对其进行优化。
4、数据库物理设计:数据库物理设计是对为逻辑数据模型选取一个时候应用环境的物理结构(包括存储结构和存取方法)
5、数据库实施
6、数据库运行和维护
(三)学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生。每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。用E-R图画出该学校的概念模型。
答:E-R图如下所示:
(四)今要建立关于系、学生、班级、学会诸信息的一个关系数据库。一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一个宿舍区。每个学生可参加若干学会,每个学会有若干学生。
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区。
描述班级的属性有:班号、专业名、系名、人数、入校年份。
描述系的属性有:系号、系名、系办公室地点、人数。
描述学会的属性有:学会名、成立年份、地点、人数。学生参加某学会有一个入会年份
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况,讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各种关系的候选码和外部码。
答:关系模式如下:
学生:{学号, 姓名, 出生年月, 系名, 班号, 宿舍区},候选码:学号,外部码:班号
班级:{班号, 专业名, 系名, 人数, 入校年份},候选码:班号,外部码:无
系:{系号, 系名, 系办公室地点, 人数},候选码:系号、系名外部码:无
学会:{学会名, 成立年份, 地点, 人数},候选码:学会名外部码: 无
函数依赖如下:
学生:{学号→姓名,学号→出生年月,学号→系名,学号→班号,学号→宿舍区}, 完全函数依赖,无传递依赖
班级:{班号→专业名,班号→系名,班号→人数,班号→入校年份}, 完全函数依赖,无传递依赖
系:{系号→系名,系号→系办公室地点,系号→人数}, 无传递依赖, 完全函数依赖,无传递依赖
学会:{学会名→成立年份,学会名→地点,学会名→人数}, 无传递依赖, 完全函数依赖,无传递依赖
(五)现有关系数据库如下:
学生(学号,姓名,性别,专业、奖学金)
课程(课程号,名称,学分)
学习(学号,课程号,分数)
请用关系代数表达式实现下列1—4小题,用SQL语言实现下列5—8小题。
1.检索“国际贸易”专业中获得奖学金的学生信息,包括学号、姓名、课程名和分数;
答:∏学号,姓名,名称,分数(σ奖学金》0(学生)∧专业=‘国际贸易’(学生)(学生∞学习∞课程))
2.检索学生成绩得过满分(100分)的课程的课程号、名称和学分;
答:
课程号,名称,学分(σ分数=100(学习))学习∞课程
3.检索没有获得奖学金、同时至少有一门课程成绩在95分以上的学生信息,包括学号、姓名和专业;
答:
学号,姓名,专业(σ奖学金 = 0(学生)∧分数》95(学习)(学生∞学生))
4.检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业;
答:
学号,姓名,专业(学生)—∏学号,姓名,专业(σ分数《80(学生∞学习))
5.检索没有获得奖学金、同时至少有一门课程成绩在95分以上的学生信息,包括学号、姓名和专业;
答:
select b.学号, b.姓名, b.专业from学习 a, 学生 b where a.学号 = b.学号 and a.分数》= 95 and isnull(a.奖学金, 0) = 0
6.检索没有任何一门课程成绩在80分以下的所有学生的信息,包括学号、姓名和专业
答:
Select a.学号, b.姓名, b.专业From 学生 a Where not exists(select 1 from 学习 b where a.学号 = b.学号 and b.分数 《 80)
7.对成绩得过满分(100分)的学生,如果没有获得奖学金的,将其奖学金设为1000元;
答: Update 学习 set 奖学金 = 1000 Where 学号 in ( Select 学号 from 学习 where 分数 = 100 )
And isnull(奖学金, 0) = 0
8.定义学生成绩得过满分(100分)的课程视图AAA,包括课程号、名称和学分;
答: Create view AAA As Select b.学号, c.姓名, a.课程号, a.名称, b.学分From 课程 a, 学习 b, 学生cWhere a.课程号 = b.课程号 and b.分数 = 100 and b.学号 = c.学号
全部0条评论
快来发表一下你的评论吧 !