您的当前位置:首页正文

数据库实验报告

2024-11-08 来源:个人技术集锦

 

 

 

 

 

《数据库系统原理课程设计》

 

 

 

 

 

 

 

 

 

黑龙江大学计算机科学技术学院

黑龙江大学软件学院

                  2018年3月

 

 

课程简介

一、开设本课程设计的目的

数据库系统原理是软件工程专业本科学生的一门重要的专业基础课。为配合数据库系统原理课程的教学,开设本实践课程,通过DBMS的应用和模拟DBMS的实现,更深刻地领会DBMS的工作原理和实现方法,从而具有初步开发系统软件的实际能力,特开设此课程设计。

二、课程内容安排

课程要求完成三部分内容:

第一部分:关系数据库SQL语言的使用。通过上机实践,了解DBMS和SQL的概貌。熟练掌握SQL的数据定义、数据操纵、完整性控制等功能。熟练掌握视图、触发器、游标、存储过程等基本数据库功能。

第二部分:设计并实现一个数据库应用原型系统。数据库应用原型系统的实现首先需要熟悉某个关系数据库系统(例如:MySQL、SQL Server、Oracle等)的使用和对数据库API(例如:ODBC、JDBC等)的调用。然后以数据库管理系统为后台数据库,实现一个数据库应用系统(学生综合管理系统、图书管理系统、人事管理系统或其他应用系统)。

第三部分:利用文件系统实现一个数据库管理原型系统。数据库管理原型系统的实现内容包括SQL语言的词法和语法分析、创建数据库、数据的增删改操作、索引的创建与删除、查询处理和优化、数据库恢复功能、并发控制功能等。

三、实践要求

1、每个实践项目都有规定的完成时间,需要在规定的时间完成相应的任务。一个实践项目结束方可进行下一项。

2、整个课程设计的内容需要写入一个综合设计文档,每名同学按照自己完成的各个阶段实验的功能根据给定的模板文件撰写设计文档。

3、全部实验完成后每名同学需要提交系统设计文档及完整的程序代码。

四、成绩评定依据

学生要对课程设计的各个实验环节进行理论学习、实验分析与设计、编码实现、最后进行分析与总结,通过提交总结报告的形式进行考核,字数不少于5000字。报告占课程总成绩的10%。

本课程设计的实验环节要求每个学生完成一个数据库应用原型系统和一个数据库管理原型系统。实验环节占课程总成绩的90%。实验环节的重点内容为数据库管理原型系统,占整个课程总分的60分。数据库应用系统分数占课程总分的20分,SQL语言的使用占10分。

整个课程设计的评分依据包括课程设计文档、每个实践项目的完成时间、程序代码三个方面。

实践课程的具体内容、学时安排如下:

五、进度安排

序号

实验名称

实验项目

内容提要

时间安排

分数

1

SQL语言实践

SQL语言实践

用SQL语言建表、维护表模式,完成元组的增删改查等操作

第5周

(4学时)

10

2

数据库应用系统

数据库应用系统设计与实现

实现学生综合管理系统,包括数据的增删改、简单查询和统计功能

第6-8周

(10学时)

20

3

数据库管理原型系统

创建数据库及数据操作功能

建立任意结构的关系,实现元组的增删改操作,实现属性的增删操作,实现关系的删除功能。

第8-10周

(8学时)

20分

索引的创建、维护及删除

实现索引的创建、维护和删除功能。

第10-11周

(4学时)

10分

查询处理与优化

实现启发式关系代数优化算法,按照优化方案执行无索引和有索引的关系上的选择、投影、连接等操作。

第11-13周

(8学时)

20分

数据库的安全性

实现创建用户、授权和权限检查等功能。

第13周

(2学时)

10分

六、具体内容

第一部分:SQL语言实践

(一)实验目的

熟悉某个关系数据库系统(例如:MySQL、SQL Server、Oracle等)的基本操作,掌握基本SQL语句。

(二)实验内容

1、使用下面6个SQL语言创建6张表。

(1)创建员工表

create table employee

(name char(10) not null,

ssn char(18) not null,

bdate char(10) not null,

address char(30) not null,

sex char(2) not null,

salary float not null,

superssn char(18) not null,

dno char(3) not null,

primary key(ssn))

(2)创建部门表

create table department

(dname char(30) not null,

dnumber char(3) not null,

mgrssn char(18) not null,

mgrstartdate datetime not null,

primary key(dnumber))

create table depart_location

(dnumber char(3) not null,

dlocation char(30) not null,

primary key(dnumber))

(4)创建项目表

create table project

(pname char(30) not null,

pnumber char(3) not null,

plocation char(30) not null,

dnum char(3) not null,

primary key(pnumber))

(5)创建员工参与项目表

create table works_on

(essn char(18) not null,

pno char(3) not null,

hours int not null,

primary key(essn,pno))

(6)创建家属表

create table dependent

(essn char(18) not null,

dependent_name char(10) not null,

sex  char(2) not null,

bdate char(10) not null,

relationship char(10) not null,

primary key(essn,dependent_name))

2、为上述表格分别插入如下数据。

(1)员工表: employee

name

ssn

bdate

address

sex

salary

superssn

dno

张三

230101198009081234

1980-09-08

哈尔滨道里区十二道街

3125

23010119751201312X

d1

李四

230101198107023736

1981-07-02

哈尔滨道外区三道街

2980

23010119751201312X

d1

张红

23010119751201312X

1975-12-01

哈尔滨南岗区三十道街

4260

23010119751201312X

d1

王二

230101198204078121

1982-04-07

哈尔滨动力区六十道街

2890

23010119751201312X

d1

灰太狼

23010119950101XXXX

1995-01-01

青青草原狼堡

1200

23010119960101XXXX

d2

红太狼

23010119960101XXXX

1996-01-01

青青草原狼堡

3600

23010119960101XXXX

d2

喜羊羊

23010120050101XXXX

2005-01-01

青青草原大肥羊学校

1000

23010120050101XXXX

d3

超人

XXXXXXXXXXXXXXXXXX

3000-01-01

外星

1000000

23010120050101XXXX

d4

(4)项目表:project

pname

pnumber

plocation

dnum

研究项目1

p1

哈尔滨

d1

哈同公路

p2

哈尔滨

d1

立交桥

p3

哈尔滨

d1

机场建设

p4

哈尔滨

d1

抓羊

p5

青青草原

d2

吃羊

p6

青青草原

d2

防狼

p7

青青草原

d3

(5)员工参与项目表:works_on

essn

pno

hours

23010119751201312X

p1

100

23010119751201312X

p2

90

23010119751201312X

p3

85

23010119751201312X

p4

100

230101198009081234

p1

65

230101198009081234

p2

76

230101198009081234

p3

67

230101198107023736

p2

89

230101198107023736

p3

79

230101198107023736

p4

91

230101198204078121

p2

23

230101198204078121

p3

36

23010119950101XXXX

p2

11

23010119950101XXXX

p5

100

23010119950101XXXX

p6

100

23010119960101XXXX

p5

100

23010119960101XXXX

p6

100

23010120050101XXXX

p7

100

XXXXXXXXXXXXXXXXXX

p1

100

XXXXXXXXXXXXXXXXXX

p2

100

XXXXXXXXXXXXXXXXXX

p3

100

XXXXXXXXXXXXXXXXXX

p4

100

XXXXXXXXXXXXXXXXXX

p5

100

XXXXXXXXXXXXXXXXXX

p6

100

XXXXXXXXXXXXXXXXXX

p7

100

(2)部门表: department

dname

dnumber

mgrssn

mgrstartdate

研发部

d1

23010119751201312X

2008-01-01

捕羊部

d2

23010119960101XXXX

2006-01-01

防狼部

d3

23010120050101XXXX

2006-01-01

全能部

d4

XXXXXXXXXXXXXXXXXX

3000-01-01

 

 

 

 

dnumber

dlocation

d1

哈尔滨

d2

青青草原

d3

青青草原

d4

地球

(6)家属表:dependent

Essn

dependent_name

sex

bdate

relationship

230101198009081234

张三妻

1983-09-02

配偶

230101198009081234

张三儿

2005-01-01

父子

23010119950101XXXX

小灰灰

2009-01-01

父子

23010119960101XXXX

小灰灰

2009-01-01

母子

3、完成下面的查询。

(1)参加了p2项目的员工号。

(2)参加了项目名为“哈同公路”的员工数量。

(4)没有参加项目p1的员工姓名。

(5)没有家属的工作人员名字

(6)由张红领导的工作人员的姓名和所在部门的名字。

(7)至少参加了3个项目的职工号。

(8)至少参加了项目p1和项目p2的员工号。

(9)参加了全部项目的员工号码和姓名。

(10)在参加了p2号项目的雇员中,查询比雇员“张三”的酬金低的雇员姓名 。

(11)求这样的员工姓名,该员工参加了张三没有参加的某个项目。

(12)求这样的员工姓名,该员工至少参加了王二参加的所有项目(不列出王二)。

(13)求这样的员工姓名和他在项目中的平均工作时间,该员工至少参加了两个项目,并且在这两个项目中的工作时间都不低于100小时。

(14)求这样的员工姓名,该员工至少参加了三个部门的项目。

(15)至少参加了项目P1、项目P2和项目P3的员工姓名。

4、关系模式及数据的维护

1)添加属性

dependent表添加属性职业

2)修改元组

dependent表中所有家属的职业改为学生

3)修改元组

dependent表中230101198009081234的家属张三妻的职业改为教师

4)修改元组

把研究部的员工工资提高10%

5)删除元组

删除dependent表中员工“23010119950101XXXX”的家属。

6)删除属性

删除dependent表的职业属性。

第二部分:数据库应用系统设计与实现

(一)实验目的

掌握数据库管理系统上的应用系统的设计和开发方法。

(二)实验内容

完成一个数据库应用系统的设计与实现,学生综合管理系统、图书管理系统、人事管理系统或其他应用系统任选其一。下面给出一个实例,即学生综合管理系统的功能需求描述。

(三)实验步骤

1、系统需求分析:确定系统要完成的功能;

2、概念设计:确定系统中涉及的实体及实体之间的联系,画出ER图;

3、逻辑设计:确定系统中的数据库表以及每个表的属性、主键、外键;

4、物理设计:选择存取方法;设计关系、索引等数据库文件的物理存储结构。

5、功能实现:使用高级程序设计语言和数据库系统(Mysql、SQL Server、Oracle等)实现该应用系统。

 

学生综合管理系统的现行业务描述如下。

第三部分:数据库管理原型系统

实践项目一  创建数据库及数据操作功能

一.实验目的

熟练掌握数据库管理系统中创建数据库、关系模式维护以及数据维护操作的实现技术。

. 实验内容

注:以下所有功能的实现,要进行语法和语义检查,并注意维护相应的字典文件。

1、用高级语言建立数据库表。

  1. 设计文件存储结构和存取方法。
  2. 属性的个数任意,属性的类型至少包括整数和字符串。
  3. 把表的相关信息存入数据字典。
  1. 用高级语言为关系表插入元组。
  1. 用VALUES子句为新建立的关系插入元组。
  2. 用VALUES子句在关系模式修改之后按照新的模式插入元组。
  3. 必做:不指定属性,插入元组的所有属性值;
  1. 选作:插入元组的指定属性的值。
  2. 如果有索引,修改相应的索引文件。

3、用高级语言实现属性的添加和删除功能。

(1)为基本表添加属性并维护数据字典。

(2)为基本表删除属性并维护数据字典。

4、用高级语言实现表中元组的删除和修改功能,必要时需要维护索引文件。

(1)实现删除数据库记录的功能,包括如下两种情况:

a) 没有WHERE条件,删除关系中的所有元组。

b) 指定WHERE条件,删除满足条件的元组。

(2)实现修改数据库记录的功能,包括如下两种情况:

a) 没有WHERE条件,修改所有元组的指定属性的值。

b) 指定WHERE条件,修改满足条件的元组的指定属性的值。

(3)如果有索引,修改相应的索引文件。

5、用高级语言实现表的删除功能。

(1)删除表并维护数据字典。

(2)如果表上有索引,删除相应的索引文件。

6、用高级语言实现显示数据库表的功能,用于对上面的操作结果进行测试。

(1)实现“SELECT * FROM 表名”。

(2)显示表的结构和内容。

实践项目二  索引的创建、维护与删除

一.实验目的

掌握数据库管理系统中的索引技术。

. 实验内容

注:以下所有功能的实现,要进行语法和语义检查。

1、用高级语言为关系表的有序属性建立稀疏索引。

2、用高级语言为关系表的无序属性建立稠密索引。

3、选作:用高级语言为数据库表的任意属性建立B+树索引。

4、用高级语言实现数据增删改时索引的维护功能。

5、删除建立的索引。

6、完成上述操作的同时维护数据字典。

实践项目三  查询处理与优化

一.实验目的

1、熟悉SQL语句中的查询语句的格式和功能。

2、掌握查询处理算法,包括选择、投影、连接算法。

要求:能够处理多个表的连接操作;查询条件至少包括and、=、<、>等符号。

3、掌握关系代数等价变换规则。

4、掌握启发式关系代数优化算法。

5、掌握基于复杂性估计的查询优化方法。

二.实验内容

注:以下所有功能的实现,要进行语法和语义检查。

查询优化:

1、把查询转换成语法树。

2、用高级语言实现启发式关系代数优化算法。(对原始的语法树进行优化处理,生成查询计划,选择代价最小的。)

3、采用基于复杂性估计的查询优化方法选择查询执行策略。

查询执行:

4、实现单关系的投影操作(select 属性名列表 from 关系名)。

5、实现单关系的选择操作(select * from 关系名 where 条件表达式)。

6、实现单关系的选择和投影操作(select 属性名列表 from 关系名 where 选择条件)。//选择条件是指“属性名 操作符 常量”形式的条件

7、实现两个关系和多个关系的连接操作(select * from 关系名列表 where 连接条件)。//选择条件是指“属性名 操作符 属性名”形式的条件

8、实现两个关系和多个关系的选择和连接操作(select * from 关系名列表 where 选择条件和连接条件)。

9、实现两个关系和多个关系的投影和连接操作(select 属性名列表 from 关系名列表 where 连接条件)。

10、实现多个关系的选择、投影和连接操作(select 属性名列表 from 关系名列表 where 条件表达式)。

11、实现索引选择算法。利用索引属性完成选择操作,记录完成操作花费的时间,在建立索引前的关系上执行同样的选择操作并进行时间代价的比较。

12、实现索引连接算法。利用索引属性完成连接操作,记录完成操作花费的时间,在建立索引前的关系上执行同样的连接操作并进行时间代价的比较。

实践项目四  数据库的安全性

一.实验目的

掌握数据库系统的安全性保护机制,能够用高级语言创建数据库用户并完成权限管理功能。

二.实验内容

1、创建用户、设置密码,并写数据字典;

2、为用户授权,并写数据字典;

3、用户进行任何数据库操作前,要根据数据字典进行权限验证;

4、撤销用户权限,并修改数据字典。

 

 

Top