西京学院学生实习报告
学生姓名:
学 号:
专业、班级:计算机科学与技术
院 系: 电子信息工程系
时 间: 2015.11.23—2015.12.20
地 点: 工程舫 2A—09
实习内容: 数据库应用
二0一五年 12 月 20日
西京学院学生实习报告
第二篇:数据库实习报告-教务管理系统
数据库系统课程设计
学生姓名:
班 学 号:
指导教师:
洛阳理工学院
20##年 6 月 17 日
教务管理系统
1、需求分析
1.1 信息要求:
教务管理系统涉及的实体有:
l 教师——工作证号、姓名、职称、电话等;
l 学生——学号、姓名、性别、出生年月等;
l 班级——班号、最低总学分等;
l 系——系代号、系名和系办公室电话等;
l 课程——课序号、课名、学分、上课时间及名额等。
这些实体之间的联系如下:
l 每个学生都属于一个班,每个班都属于一个系,每个教师也都属于一个系。
l 每个班的班主任都由一名教师担任。
l 一名教师可以教多门课,一门课可以有几位主讲老师,但不同老师讲的同一门课其课序号是不同的(课序号是唯一的)。
l 一名同学可以选多门课,一门课可被若干同学选中。
l 一名同学选中的课若已学完,应该记录有相应成绩。
l 本单位学生、教师都有重名,工作证号、学号可以作为标识。
1.2 处理要求:
教学系统主要提供数据维护、选课和信息查询。其中常见的查询有:系统中各对象的基本信息查询。 查询指定班、系的学生信息(名单、人数等)。查询学生的成绩、学分情况。查询教师授课情况和学生选课情况……。
1.3 安全性与完整性要求:
l 安全性要求:
1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;
2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;
3.系统应对不同用户设置不同的权限,区分不同的用户,如学生,教师,系统管理员。
l 完整性要求:
1.各种信息记录的完整性,关键信息记录内容不能为空;
2.各种数据间相互的联系的正确性;
3.相同的数据在不同记录中的一致性。
1.4 系统功能的设计和划分
根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几部分:
第一部分:用户管理部分
第二部分:管理员管理部分
各部分完成的功能如下:
1、用户管理部分
1、处理用户注册
2、处理用户登录
3、用户可以查询学生信息。
4、用户可以查询快件信息。
5、用户可以提交与查询报修信息。
6、用户可以插入与删除用户自己的离返校信息。
7、用户可以修改用户自己密码。
2、管理员管理部分
1、处理管理员登录
2、管理员可以查询学生信息。
3、管理员可以发布与更新快件信息。
4、管理员可以插入、修改与查询报修信息。
5、管理员可以插入与查询学生夜归信息。
6、管理员可以查询在校与离校学生信息。
7、管理员可以修改管理员密码。
2、概念设计
(1)概念模型(E-R图):
(2)数据字典:
a.数据项
b、数据结构
c、数据流
d、数据存储
e、处理过程
(3)数据流图
3、逻辑结构设计
l E-R图向关系模型的转换(关系的码用下横线表出)
教师(工作证号,姓名,职称,电话,系代号)
代码表示:Teacher ( Tno, Tname, Title, Tel, Dno )
此为“教师”实体对应的关系模式。其中1:n联系“工作”与此关系模式合并,Dno为外码。存在的函数依赖为Tno → (Tname,Title,Tel,Dno),且不存在多值依赖,所以满足4NF。
学生(学号,姓名,性别,出生年月,班号)
代码表示:Student ( Sno, Sname, Ssex, Sbirth, Class )
此为“学生”实体对应的关系模式。其中1:n联系“属于”与此关系模式合并,Class为外码。存在的函数依赖为Sno → (Sname,Ssex,Sbirth,Class),且不存在多值依赖,所以满足4NF。
系(系代号,系名,系办公室电话)
代码表示:Department ( Dno, Dname, Dphone )
此为“系”实体对应的关系模式。存在的函数依赖为Dno → (Dname,Dphone),且不存在多值依赖,所以满足4NF。
课程(课序号,课名,学分,上课时间,名额,工作证号)
代码表示:Course ( Cno, Cname, Credit, Ctime, Cnum, Tno )
此为“课程”实体对应的关系模式。其中1:n联系“授课”与此关系模式合并,Tno为外码。存在的函数依赖为Cno → (Cname,Credit,Ctime,Cnum,Tno),且不存在多值依赖,所以满足4NF。
选课(学号,课序号,成绩)
代码表示:SC ( Sno, Cno, Grade )
此为m:n联系“选修”所对应的关系模式。Sno和Cno均为外部码。存在的函数依赖为完全函数依赖(Sno,Cno) → Grade,且不存在多值依赖,所以满足4NF。
班级(班号,最低总学分,工作证号,系代号)
代码表示:Class ( Class, TotalCredit, Tno, Dno )
此为“班级”实体对应的关系模式。其中1:n联系“属于”和1:1联系“负责”与此关系模式合并,Tno和Dno为外码。该关系模式中存在传递函数依赖:Class → Tno, (Tno Class),Tno → Dno,可得Class → Dno,故Class 不属于3NF。解决方法是将其模式分解为:Class ( Class, TotalCredit, Tno )和T-D( Tno, Dno),分解后的关系模式满足4NF,并且T-D与Teacher的码相同,可合并为同一模式。但是考虑到系统要经常进行系的学生信息查询,此时就不得不对Student、Class和Teacher三个表进行连接查询,而连接是影响查询效率的主要原因,所以取消对Class的模式分解。此时Class关系模式满足2NF。
l 设计用户子模式
为了方便程序查询,建立了如下用户视图:
1、某系的学生信息视图(学号,姓名,性别,出生年月,班号)
2、某系的教师信息视图(工作证号,教师姓名,职称,电话,负责班级)
3、某课程的学生成绩单(学号,姓名,班级,成绩)
4、教师授课信息表(工作证号,教师姓名,职称,教授课程,学分,上课时间)
5、学生已选课表(课序号,课名,学分,授课教师,上课时间,名额)
4、物理设计
4.1 选择存取方法
1、数据库管理系统自动在每个表的主码上建立索引,通常为B + 树索引。
2、在Student表Sname列上建立Stu_name索引,因为查询操作很多都使通过学生姓名进行的。
3、在Teacher表Tname列上建立Tea_name索引,因为查询操作很多都使通过教师姓名进行的。
4.2 确定数据库的存储结构
1、为了提高系统性能,根据具体情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。
2、DBMS产品一般都提供了一些系统配置变量、存储分配参数,根据应用环境确定这些参数值,并且在系统运行时还要根据系统实际运行情况进行调整,以使系统性能最佳。
4.3 评价物理结构
根据所选用的DBMS,如SQL Server 2000,从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择一个较优的合理的物理结构。
5、系统实施
编写关系模式,载入数据。分期分批地组织数据入库,先输入小批量数据做调试用,待试运行基本合格后,再大批量输入数据,逐步增加数据量,逐步完成运行评价。需要注意的是,要首先调试运行DBMS的恢复功能,做好数据库的转储和恢复工作。
基本SQL语言代码如下:
CREATE SCHEMA "TeachAffair" AUTHORIZATION Gao
CREATE TABLE Department
(Dno CHAR(3) PRIMARY KEY, /*列级完整性约束条件,Dno是主码*/
Dept CHAR(20) UNIQUE NOT NULL,
Dphone CHAR(11),
);
CREATE TABLE Teacher
(Tno CHAR(6) PRIMARY KEY, /*列级完整性约束条件,Tno是主码*/
Tname CHAR(20) NOT NULL,
Title CHAR(8),
Tel CHAR(11),
Dno CHAR(3),
FOREIGN KEY (Dno) REFERENCES Department(Dno) /*表级完整性约束条件,Dno是外码*/
);
CREATE TABLE Class
(Class CHAR(6) PRIMARY KEY, /*列级完整性约束条件,Class是主码*/
TotalCredit NUMERIC(4,1),
Tno CHAR(6),
Dno CHAR(3),
FOREIGN KEY (Tno) REFERENCES Teacher(Tno), /*表级完整性约束条件,Tno是外码*/
FOREIGN KEY (Dno) REFERENCES Department(Dno) /*表级完整性约束条件,Dno是外码*/
);
CREATE TABLE Student
(Sno CHAR(11) PRIMARY KEY, /*列级完整性约束条件,Sno是主码*/
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sbirth DATETIME,
Class CHAR(6),
FOREIGN KEY (Class) REFERENCES Class(Class) /*表级完整性约束条件,Class是外码*/
);
CREATE TABLE Course
(Cno CHAR(6) PRIMARY KEY, /*列级完整性约束条件,Cno是主码*/
Cname CHAR(20) NOT NULL,
Credit NUMERIC(2,1),
Ctime DATETIME,
Cnum SMALLINT,
Tno CHAR(6),
FOREIGN KEY (Tno) REFERENCES Teacher(Tno) /*表级完整性约束条件,Tno是外码*/
);
CREATE TABLE SC
(Sno CHAR(11) NOT NULL,
Cno CHAR(6) NOT NULL,
Grade SMALLINT CHECK(Grade>=0 AND Grade<=100),
PRIMARY KEY (Sno, Cno), /*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY (Sno) REFERENCES Student(Sno) /*表级完整性约束条件,Sno是外码*/
ON DELETE CASCADE /* 当删除Student表中的元组时,级连删除SC表中相应的元组*/
ON UPDATE CASCADE, /*当更新Student表中的Sno时,级连更新SC表中相应的元组*/
FOREIGN KEY (Cno) REFERENCES Course(Cno) /*表级完整性约束条件,Sno是外码*/
ON DELETE NO ACTION /* 当删除Course表中的元组造成了与SC表不一致时,拒绝删除*/
ON UPDATE CASCADE, /*当更新Course表中的Cno时,级连更新SC表中相应的元组*/
);
/*DROP TABLE SC;*/
/*建立索引*/
CREATE UNIQUE INDEX Stu_name ON Student(Sname);
CREATE UNIQUE INDEX Tea_name ON Teacher(Tname);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Cno DESC);
/*查询某个系(以GIS为例)的学生信息*/
CREATE VIEW GIS_Student /*建立某个系(以GIS为例)的学生信息视图*/
AS
SELECT *
FROM Student
WHERE Class IN
(SELECT Class
FROM Class
WHERE Dname='GIS')
WITH CHECK OPTION;
SELECT *
FROM GIS_Student;
SELECT COUNT(*)
FROM GIS_Student;
/*查询班级的学生信息*/
SELECT Sno, Sname, Ssex, Birth
FROM Student
WHERE Class = '114072';
SELECT COUNT(*)
FROM Student
WHERE Class='114072';
/*查询学生的成绩、学分*/
SELECT SC.Cno, Cname, Credit, Grade
FROM Course, SC
WHERE Sno = '20071000500' AND SC.Cno=Course.Cno;
SELECT SUM(Credit)
FROM SC,Course
WHERE Sno='20071000500' AND SC.Cno=Couse.Cno;
/*查询教师授课信息*/
SELECT Course.*
FROM Course
WHERE Tno='100123';
SELECT Student.Sno,Sname,Class,Grade
FROM Course,SC,Student
WHERE Tno='100123' AND
Course.Cno=SC.Cno AND
SC.Sno=Student.Sno;
6、运行维护
1、针对不同的应用要求制定不同的转储计划,一旦发生故障尽快将数据库恢复到某种一致的状态,并尽可能减少对数据库的破坏;
2、根据实际情况修改数据库原有的安全性、完整性控制;
3、在数据库运行过程中,监督系统运行,对监测数据进行分析,找出改进系统性能的方法;
4、数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低数据的存取效率,数据库性能下降。这时应按原设计要求重新安排存储位置、回收垃圾、减少指针链等,提高系统性能。当原有的数据库设计不能满足新的需求,需要重构造数据库,调整数据库的模式和内模式。
7、用户手册
(<五号宋体>,具体内容:使用、操作说明。)
8、附录
(<五号宋体>,源程序清单和结果:源程序必须有注释,以及必要的测试数据和运行结果数据,提倡用英文描述。)