数据库上机报告.docx
《数据库上机报告.docx》由会员分享,可在线阅读,更多相关《数据库上机报告.docx(18页珍藏版)》请在冰豆网上搜索。
数据库上机报告
数据库上机报告
学院:
电子信息与电气工程学部
专业:
计算机科学与技术
时间:
2014年5月
数据库上机报告
1、成员分组
陈笛201181326
李梦珂201181216
宫丽迪201181306
王子傲201181176
吴霄201181441
张启帆201181440
二、项目标题
建立一个学生及奖学金管理系统,能够实现教师基本信息和学生基本信息及选课和奖学金管理功能。
能够对学生记录进行增加、删除、更改、查询。
2、系统功能模块图
学生及奖学金管理系统
学生信息系统
教师信息系统
奖学金信息管理
课程信息管理
选课信息管理
基本信息管理
班级信息管理
基本信息管理
教学课程
删除
修改
插入
查询
3、系统开发、运行环境要求
运行操作系统:
WINDOWSXP
数据库:
SQL2000
编程软件:
MicrosoftVisualStudio2005
4、数据库概念设计(E-R图)
学生E-R图:
班级E-R图:
课程E-R图:
选修课程E-R图:
教师E-R图:
教师任课E-R图:
总E-R图:
5、数据库逻辑设计
学生(学号,班级号,学生姓名,性别,出生日期)
班级(班级号,班级名称,所属专业,系别)
课程(课程号,课程名称,学分)
选修课程(学号,课程号,成绩)
教师(教师号,教师姓名,性别,出生日期,职称)
教师任课(课程号,教师号)
Student(s_no,class_no,s_name,s_sex,s_birthday)
Class(class_no,class_name,class_special,class_dept)
Course(course_no,course_name,course_score)
Choice(s_no,course_no,score)
Teacher(t_no,t_name,t_sex,t_birthday,t_title)
Teaching(course_no,t_no)
6、数据库物理设计
采取聚簇功能
应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚集索引等。
据实际情况来定。
存放在磁盘上
确定系统配置,包括:
同时使用数据库的用户数,同时打开的数据库对象数,使用的缓冲区长度、个数,时间片大小、数据库的大小,装填因子,锁的数目等等。
7、系统主界面及上机代码
1、新建数据库DB06101026
USEmaster
IFEXISTS(SELECTnameFROMmaster.dbo.sysdatabasesWHEREname='DB06102026')
DROPDATABASEDB06101026
GO
CREATEDATABASEDB06101026
--ON(NAME='DB06101026_Data',FILENAME='D:
\DB06101026_Data.MDF')
GO
useDB06102026
GO
2、建基本表
(1)建学生表
CREATETABLEstudent
(s_noCHAR(6)PRIMARYKEY,
class_noCHAR(6)NOTNULL,
s_nameVARCHAR(10)NOTNULL,
s_sexCHAR
(2)CHECK(s_sexIN('男','女')),
s_birthdayDATETIME,
);
(2)建班级表
CREATETABLEClass
(class_noCHAR(6)PRIMARYKEY,
class_nameCHAR(20)NOTNULL,
class_specialVARCHAR(20),
class_deptCHAR(20),
);
(3)建课程表
CREATETABLECourse
(course_noCHAR(5)PRIMARYKEY,
course_nameCHAR(20)NOTNULL,
course_scoreNUMERIC(6,2),
);
(4)建选课表
CREATETABLEChoice
(s_noCHAR(6),
course_noCHAR(5),
scoreNUMERIC(6,1),
);
(5)建教师表
CREATETABLETeacher
(t_noCHAR(6)PRIMARYKEY,
t_nameVARCHAR(10)NOTNULL,
t_sexCHAR
(2)CHECK(t_sexIN('男','女')),
t_birthdayDATETIME,
t_titleCHAR(10),
);
(6)建任课表
CREATETABLETeaching
(course_noCHAR(5),
t_noCHAR(6),
);
3、向表中插入数据
/*Student数据*/
INSERTINTOStudentVALUES('991101','js9901','张彬','男','1981-10-01');
/*班组数据*/
INSERTINTOClassVALUES('js9901','计算机99-1','计算机','计算机系');
/*课程数据*/
INSERTINTOCourseVALUES('01001','计算机基础','3');
/*选修课程数据*/
INSERTINTOChoiceVALUES('991101','01001','58.1');
/*教师数据*/
INSERTINTOTeacherVALUES('000001','李英','女','1964-11-03','讲师');
/*教师任课数据*/
INSERTINTOTeachingVALUES('01001','000001');
4、创建视图
CREATEVIEWTeacher_view
AS
SELECTt_no,t_name,t_title
FROMTeacher
WHEREt_title='副教授'
GO
CREATEVIEWcourse_view
AS
SELECTt_name,course_name
FROMTeaching,Teacher,Course
GO
CREATEVIEWTeaching_view
AS
SELECTt_name,course_no
FROMTeaching,Teacher,Course
GO
CREATEVIEWNotpass_view
AS
SELECTs_no,s_name,course_no,course_name,course_score
FROMStudent,Choice,Course
WHEREcourse_score<60
GO
CREATEVIEWComputerdept_view
AS
SELECTs_no,s_name,class_name,course_no,course_name,score
FROMStudent,Class,Choice,Course
WHEREcourse_name='CS'
5、存储过程定义
(1)、
(2)题:
CREATEPROCEDUREInsert_student
(@s_nochar(6),
@class_nochar(6),
@s_namevarchar(10),
@s_sexchar
(2),
@s_birthdaydatetime--@s_birthdaydatetime='1980-1-1',--设定默认值的方法
)
AS
INSERTINTOStudentVALUES(@s_no,@class_no,@s_name,@s_sex,@s_birthday)
GO
EXECUTEInsert_student'991105','js9901','张彬','男','1981-10-1';
GO
(3)、(4)题:
CREATEPROCEDUREInsert_course
(@course_nochar(5),
@course_namechar(20),
@course_scorenumeric(6,2)=2
)
AS
INSERTINTOCourseVALUES(@course_no,@course_name,@course_score)
GO
executeInsert_course
@course_no='110901',@course_name='SQLServer2000',@course_score='8'
GO
executeInsert_course
@course_no='100902',@course_name='.net语言'
GO
(5)、(6)题:
CREATEPROCEDUREquery_student
(@s_nochar(6))
AS
SELECTs_name,class_no,s_sex,s_birthday
fromstudent
WHEREstudent.s_no=@s_no
GO
executequery_student
@s_no='001101'
6、触发器定义
CREATETRIGGERDisplay_trigger
ONStudent
FORINSERT--,UPDATE,DELETE
AS
SELECT*FROMStudent
GO
7、执行存储过程和检验触发器功能
EXECUTEInsert_Student'991101','js9901','张彬','男','1981-10-1'
GO
8、工程图和对应的数据库创建脚本
/*==============================================================*/
/*DBMSname:
ORACLEVersion11g*/
/*Createdon:
2014/3/3116:
09:
32*/
/*==============================================================*/
altertablechoose_course
dropconstraintFK_CHOOSE_C_REFERENCE_STUDENT;
altertablechoose_course
dropconstraintFK_CHOOSE_C_REFERENCE_COURSE;
altertablerenke
dropconstraintFK_RENKE_REFERENCE_TEACHER;
altertablerenke
dropconstraintFK_RENKE_REFERENCE_TEACHER_;
altertablestudent
dropconstraintFK_STUDENT_REFERENCE_CLASS;
altertabletheach
dropconstraintFK_THEACH_REFERENCE_TEACHER;
altertabletheach
dropconstraintFK_THEACH_REFERENCE_STUDENT;
droptablechoose_coursecascadeconstraints;
droptableclasscascadeconstraints;
droptablecoursecascadeconstraints;
droptablerenkecascadeconstraints;
droptablestudentcascadeconstraints;
droptableteachercascadeconstraints;
droptableteacher_classcascadeconstraints;
droptabletheachcascadeconstraints;
/*==============================================================*/
/*Table:
choose_course*/
/*==============================================================*/
createtablechoose_course
(
idVARCHAR2(20),
coursedeptVARCHAR2(20)
);
/*==============================================================*/
/*Table:
class*/
/*==============================================================*/
createtableclass
(
classdeptVARCHAR2(20)notnull,
departmentVARCHAR2(50),
specialtyVARCHAR2(50),
classnameVARCHAR2(50),
constraintPK_CLASSprimarykey(classdept)
);
/*==============================================================*/
/*Table:
course*/
/*==============================================================*/
createtablecourse
(
coursedeptVARCHAR2(20)notnull,
scoreNUMBER(10),
constraintPK_COURSEprimarykey(coursedept)
);
/*==============================================================*/
/*Table:
renke*/
/*==============================================================*/
createtablerenke
(
teacherNumVARCHAR2(20),
课程号VARCHAR2(20),
teachernoVARCHAR2(20)
);
/*==============================================================*/
/*Table:
student*/
/*==============================================================*/
createtablestudent
(
idVARCHAR2(20)notnull,
classdeptVARCHAR2(20),
sexVARCHAR2(10),
classVARCHAR2(20),
birthdayDATE,
nameVARCHAR2(50),
constraintPK_STUDENTprimarykey(id)
);
/*==============================================================*/
/*Table:
teacher*/
/*==============================================================*/
createtableteacher
(
teacherNumVARCHAR2(20)notnull,
nameVARCHAR2(50),
jobVARCHAR2(50),
birthdayDATE,
constraintPK_TEACHERprimarykey(teacherNum)
);
/*==============================================================*/
/*Table:
teacher_class*/
/*==============================================================*/
createtableteacher_class
(
课程号VARCHAR2(20)notnull,
constraintPK_TEACHER_CLASSprimarykey(课程号)
);
/*==============================================================*/
/*Table:
theach*/
/*==============================================================*/
createtabletheach
(
teacherNumVARCHAR2(20),
idVARCHAR2(20)
);
altertablechoose_course
addconstraintFK_CHOOSE_C_REFERENCE_STUDENTforeignkey(id)
referencesstudent(id);
altertablechoose_course
addconstraintFK_CHOOSE_C_REFERENCE_COURSEforeignkey(coursedept)
referencescourse(coursedept);
altertablerenke
addconstraintFK_RENKE_REFERENCE_TEACHERforeignkey(teacherNum)
referencesteacher(teacherNum);
altertablerenke
addconstraintFK_RENKE_REFERENCE_TEACHER_foreignkey(课程号)
referencesteacher_class(课程号);
altertablestudent
addconstraintFK_STUDENT_REFERENCE_CLASSforeignkey(classdept)
referencesclass(classdept);
altertabletheach
addconstraintFK_THEACH_REFERENCE_TEACHERforeignkey(teacherNum)
referencesteacher(teacherNum);
altertabletheach
addconstraintFK_THEACH_REFERENCE_STUDENTforeignkey(id)
referencesstudent(id);
9、心得与体会
一个学期的数据库课结束了,通过这次学习,我们了解到数据库的功能的强大,在现在这个社会,数据库是一个不可缺少的工具。
我们学习的目的是在熟练了解课本知识的基础上操作软件去做程序,在上机过程中从分的掌握有关知识。
数据库上机中所使用的SQL结构化查询语句,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
同时它也是数据库脚本文件的扩展名。
可以帮我们做到面向数据库执行查询、取回数据、插入新的记录、更新数据库中的数据、删除记录、创建新数据库、新表和视图、设置表、存储过程和视图的权限,功能非常强大。
这几次上机主要做的是老师给我们的题目(具体如上操作代码),首先了解了如何建立空表,然后插入数据,查询···在上机过程中,每个步骤,每个点都要细心,要反复查看程序是否写正确。
在上机过程中我也遇到几个问题,在建立视图时没有添加GO,运行时不能运行,总是出现什么不能重复,第一行等。
但是在上机过程中遇到的问题可以让我们了解更多,在吸取教训的同时增长知识。
其实在建表时开始我用的企业管理器,那个工具很简单,但是在此过程中没有学到什么实质性的东西,后来改用了写程序,从中学到了很多。
通过这次的学习,我们了解了数据库的概念与重要性,还有今后的发展方向,明白数据库的应用是广泛的,不可小觑,在今后应该再加强学习。