《数据库系统原理课程设计》
讲 义
黑龙江大学计算机科学技术学院
黑龙江大学软件学院
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分。
整个课程设计的评分依据包括课程设计文档、每个实践项目的完成时间、程序代码三个方面。
实践课程的具体内容、学时安排如下:
- SQL语言的使用:4学时,10分
- 数据库应用系统设计与实现:10学时,20分
- 创建数据库及数据操作功能:8学时,20分
- 索引的创建与删除功能:4学时,10分
- 查询处理和优化功能:8学时,20分
- 数据库安全性:2学时,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))
(3)创建部门地址表
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 |
(3)部门地址表depart_location
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)参加了项目名为“哈同公路”的员工数量。
(3)在“研发部”工作且工资低于3000元的员工名字和地址。
(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、用高级语言建立数据库表。
- 设计文件存储结构和存取方法。
- 属性的个数任意,属性的类型至少包括整数和字符串。
- 把表的相关信息存入数据字典。
- 用高级语言为关系表插入元组。
- 用VALUES子句为新建立的关系插入元组。
- 用VALUES子句在关系模式修改之后按照新的模式插入元组。
- 必做:不指定属性,插入元组的所有属性值;
- 选作:插入元组的指定属性的值。
- 如果有索引,修改相应的索引文件。
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、撤销用户权限,并修改数据字典。
来源:CSDN
作者:-无问西东
链接:https://blog.csdn.net/qq_40180694/article/details/83961272