数据库作业.docx
- 文档编号:28648913
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:25
- 大小:479.81KB
数据库作业.docx
《数据库作业.docx》由会员分享,可在线阅读,更多相关《数据库作业.docx(25页珍藏版)》请在冰豆网上搜索。
数据库作业
目录
1系统背景介绍1
1.1系统名称1
1.2系统概况1
2概念模型设计1
3数据模型设计2
3.1学生信息表3
3.2课程信息表3
3.3成绩信息表4
3.4院系信息表4
4数据定义4
4.1基本表创建及修改4
4.2视图7
4.2.1视图定义7
4.2.2查询视图8
4.2.3更新视图8
4.2.4删除视图9
4.3索引9
4.3.1索引定义9
4.3.2删除索引10
5数据操作10
5.1数据查询10
5.1.1简单查询10
5.1.2嵌套查询10
5.1.3连接查询11
5.1.4聚合查询13
5.2数据更新13
5.2.1插入操作13
5.2.2删除操作14
5.2.3修改操作15
5.3游标的练习15
6数据库管理及控制16
6.1触发器的定义及其测试16
6.2事务的定义、提交、回滚及其测试17
6.3创建数据库用户、角色并为其授权18
6.4数据库的备份与还原21
7数据库连接实现21
小结24
1系统背景介绍
1.1系统名称
学生图书借阅系统
1.2系统概况
本系统采用SQLSever2008数据库进行设计。
系统主要实现对数据库的数据定义、数据操纵、数据控制和数据库访问链接等处理功能。
具体功能应包括:
系统应该能提供学生的基本信息,书籍借阅的信息。
2概念模型设计
根据系统需求,学生成绩管理系统数据库包括三个实体:
学生、书籍、状态。
设计E-R图如图1所示。
各个实体及其相互联系如下:
1)实体集:
学生,书籍,状态。
2)属性集:
学生(学号,姓名,性别,出生日期,地址,所属院系)
书籍(书籍名称,编号,可借数量)
状态(借书人,书籍编号,借出日期、归还日期)
图1学生成绩管理系统E-R图
3数据模型设计
在此学生成绩管理系统中需要创建三个表,即书籍信息表、学生信息表,状态信息表。
3.1学生信息表
表1学生信息表(Student)
数据项名
数据类型
宽度及小数位
列级完整性描述
Sno
Varchar
10
NotNull,UNIQUE
Sname
Varchar
10
NotNull
Gender
Varchar
2
CHECK(GenderIN(‘M’‘F’))
Birth
Date
NotNull
Address
Varchar
30
NotNull
Dno
Varchar
10
NotNull
主码:
Sno
外码:
无
应建索引的数据项:
Sno
表级完整性约束:
PRIMARYKEY(Sno)
3.2书籍信息表
表2书籍信息表(Book)
数据项名
数据类型
宽度及小数位
列级完整性描述
Bno
Varchar
10
NOTNULL,UNIQUE
Bname
Varchar
30
NotNull
Bavailable
Int
4
NotNull
主码:
Bno
外码:
无
应建索引的数据项:
Bno
表级完整性约束:
PRIMARYKEY(Bno)
3.3状态信息表
表3状态信息表(Condition)
数据项名
数据类型
宽度及小数位
列级完整性描述
Odate
Date
NOTNULL
Idate
Date
NOTNULL
Sno
Varchar
10
NOTNULL
Bno
Varchar
10
NOTNULL
主码:
(Bno,Sno)
外码:
Bno,Sno
应建索引的数据项:
Bno,Sno
4数据定义
创建数据库后,为Book_Management数据库添加数据表,步骤如下:
新建查询窗口,在查询窗口中键入下列SQL语句。
4.1基本表创建及修改
创建Book表。
createtableBook(
Bnovarchar(10)notnull,
Bnamevarchar(10)notnull,
Bavailablevarchar(10)notnull,
PRIMARYKEY(Bno)
);
创建Student表:
createtableStudent(
Snochar(10)notnull,
Snamechar(10)notnull,
Genderchar
(2)check(Genderin('M','F')),
Birthdatenotnull,
Adressvarchar(30)notnull,
Dnochar(10)notnull,
PRIMARYKEY(Sno),
FOREIGNKEY(Dno)REFERENCESDepartment(Dno)
);
创建Condition表:
createtableCondition(
Bnovarchar(10)foreignkey(Bno)referencesbook(Bno),
Snovarchar(10)foreignkey(Sno)referencesstudent(Sno),
Odatedatenotnull,
Idatedatenotnull,
PRIMARYKEY(Bno,Sno),
);
修改基本表:
实例向表Student增加“年级”列,数值类型为int型。
SQL语句如下,修改后结果如图2所示。
图2修改基本表实例
4.2视图
4.2.1视图定义
实例一:
建立由学号、姓名、出生日期、地址构成的学生视图Stud。
SQL语句及运行结果如图3所示。
图3视图定义实例一
实例二:
建立管理学院学生的视图Ma_student。
SQL语句及运行结果如图4所示。
图4视图定义实例二
4.2.2查询视图
实例:
查询视图Ma_student中选择“数据结构”且成绩大于85的学生及其成绩。
SQL语句及运行结果如图5所示。
图5查询视图实例
4.2.3更新视图
(1)修改操作
实例:
把学生Adress改为“中国”。
SQL语句及运行结果如图6所示。
图6视图修改操作实例
(2)删除操作
实例:
删除视图Stud中学号为“21300000”学生的数据。
SQL语句及运行结果如图7所示。
图7视图删除操作实例
4.2.4删除视图
实例:
删除视图Ma_student,SQL语句如下。
4.3索引
4.3.1索引定义
实例一:
为表Student按学号建立唯一索引。
SQL语句及运行结果如图8所示。
图8索引定义实例一
实例二:
为表Grade按学号升序和课程号降序建立唯一索引。
SQL语句及运行结果如图9所示。
图9索引定义实例二
4.3.2删除索引
删除表Student的StuSno索引:
5数据操作
5.1数据查询
数据操作包括简单查询、嵌套查询、连接查询、聚合查询
5.1.1简单查询
实例:
查询全体学生的学号与姓名。
SQL语句及运行结果如图9所示。
图10简单查询实例
5.1.2嵌套查询
(1)子查询
实例:
查询电信学院学生的学号与姓名。
SQL语句及运行结果如图11所示。
图11子查询实例
(2)关联查询
实例:
查询选修了所有课程的学生的学号、姓名。
SQL语句及运行结果如图12所示。
图12关联查询实例
5.1.3连接查询
实例一:
查询学生的学号、姓名、所在院系。
SQL语句及运行结果如图13所示。
图13连接查询实例一
实例二:
查询学生的学号、姓名、课程名、成绩。
SQL语句及运行结果如图14所示。
图14连接查询实例二
5.1.4聚合查询
实例一:
查询每个学生的平均成绩。
SQL语句及运行结果如图15所示。
图15聚合查询实例一
实例二:
查询选修了“数据库原理”的人数。
SQL语句及运行结果如图16所示。
图16聚合查询实例二
5.2数据更新
5.2.1插入操作
实例一:
向表Student中添加一项记录:
“姓名:
撒贝宁,学号:
21311025,性别:
男,出生年月:
1992-6-19,地址:
北京,院系编号:
001”。
SQL语句及运行结果如图17所示。
图17插入操作实例一
实例二:
查询每个学生的平均成绩,并将结果存入数据库中。
SQL语句及运行结果如图18所示。
图18插入操作实例二
5.2.2删除操作
实例一:
删除“撒贝宁”的学生信息。
SQL语句及运行结果如图19所示。
图19删除操作实例一
实例二:
删除平均成绩低于80的学生信息。
SQL语句及运行结果如图20所示。
图20删除操作实例二
5.2.3修改操作
实例一:
更改撒贝宁的出生日期。
SQL语句及运行结果如图21所示。
图21修改操作实例一
实例二:
更改计算机基础的课时和学分。
SQL语句及运行结果如图22所示。
图22修改操作实例二
6数据库管理及控制
6.1触发器的定义及其测试
实例:
定义一个触发器,当向表Department中插入一条数据时给出提示。
SQL语句及运行结果如图24所示。
测试:
图24触发器的练习
6.2事务的定义、提交、回滚及其测试
实例一:
将学号21310010学生的英语成绩11001号课程分数设定为60。
SQL语句及运行结果如图25所示。
图25事务的定义
实例二:
student表添加一条记录设置保存点删除记录回滚事务保存点。
SQL语句及运行结果如图26所示。
图27事物的定义、回滚练习
6.3创建数据库用户、角色并为其授权
实例一:
在数据库Grade_Management中创建一个对表Grade的有查询权限的角色test,随后创建了一个登录账户l_test,然后为登录账户l_test创建了用户账户u_test,同时将用户账户u_test添加到角色test中,使其通过权限继承获取了与角色test一样的权限。
SQL语句及运行结果如图27所示。
图27创建数据库用户及角色
经过这样的处理,使用l_test登录SQLServer数据库后,它只具有表Grade的查询权限。
以l_test身份登录后对表Grade进行更新操作失败,测试结果如图28所示。
图28创建数据库用户、角色实例
实例二:
创建角色teacher1,授予角色对表Student的更新和插入权限。
通过SQLServerManagementStudio创建数据库角色teacher1,并通过SQL语句实现对teacher1的授权,使teacher1具有对表Student的插入和更新操作。
具体过程如图29所示。
图29结合ManagementStudio创建数据库角色
6.4数据库的备份与还原
MicrosoftSQLServer2008→SQLServerManagementStudio→数据库Grade_Management是需要备份的数据库,点击鼠标右键→任务→备份。
备份至本地磁盘F,备份结果如图30所示。
图30数据库备份结果
选择您要还原的数据库,点击鼠标右键→任务→还原→数据库。
还原结果如图31所示。
图31数据库还原结果
7数据库连接实现
采用Java为客户端开发工具实现数据库访问连接,并修改学生“师洁琼”的院系编号为001。
具体代码如下,执行结果如图32所示。
packagepkg;
importjava.sql.*;
importjava.util.*;
publicclassMain{
publicstaticvoidmain(String[]args)
{
StringdriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
StringdbURL="jdbc:
sqlserver:
//localhost:
1433;DatabaseName=Grade_Management";
StringuserName="sa";
StringuserPwd="123456";
try{
Class.forName(driverName);
System.out.println("加载驱动成功!
");
}
catch(Exceptione){
e.printStackTrace();
System.out.println("加载驱动失败!
");
}
try{
ConnectiondbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("连接数据库成功!
");
Statementstmt=dbConn.createStatement();//创建SQL命令对象
System.out.println("\n修改学生“师洁琼”的院系编号为001:
\n");
stmt.executeUpdate("updateStudentsetDno='001'whereSname='师洁琼'");
ResultSetrs=stmt.executeQuery("select*fromStudentwhereSname='师洁琼'");
System.out.println("*******开始读取数据********");
while(rs.next())
{
System.out.println("学号"+"\t"+"姓名"+"\t"+"院系编号");
System.out.println(rs.getString("Sno")+rs.getString("Sname")+"\t"+rs.getString("Dno"));
}
System.out.println("********读取完毕**********");
stmt.close();
dbConn.close();
}
catch(Exceptione)
{
e.printStackTrace();
System.out.print("SQLServer连接失败!
");
}
}
}
访问实例:
图32数据库连接访问实例
SQLSever中结果如下:
小结
通过这次作业加深了对平时所学的知识点的理解,这次选择的做学生成绩管理系统,比较贴近生活、相对简单,但在设计过程中也遇到了不少问题,通过查阅资料、和向同学请教的过程中也收获了许多。
其中,主要遇到的问题包括:
●数据定义。
由于对数据类型的概念比较模糊,在进行数据定义的过程中,出现了很多错误,如:
类型选择不恰当、宽度定义的不合理等。
这些问题对后续的操作都造成了不便。
●触发器的定义和测试。
●事务的练习。
之前学习数据库对事务的了解不多,这次是第一次进行运用,在练习中也遇到了不少问题。
其他问题主要是由于对SQLSever2008不熟悉的原因造成的。
总之,通过这次的数据库课程大作业,锻炼了我们的操作能力及对数据库设计有了更深的了解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)