沈阳大学数据库课程设计.docx

上传人:b****2 文档编号:23023148 上传时间:2023-04-30 格式:DOCX 页数:20 大小:476.44KB
下载 相关 举报
沈阳大学数据库课程设计.docx_第1页
第1页 / 共20页
沈阳大学数据库课程设计.docx_第2页
第2页 / 共20页
沈阳大学数据库课程设计.docx_第3页
第3页 / 共20页
沈阳大学数据库课程设计.docx_第4页
第4页 / 共20页
沈阳大学数据库课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

沈阳大学数据库课程设计.docx

《沈阳大学数据库课程设计.docx》由会员分享,可在线阅读,更多相关《沈阳大学数据库课程设计.docx(20页珍藏版)》请在冰豆网上搜索。

沈阳大学数据库课程设计.docx

沈阳大学数据库课程设计

艾丽书院教务管理系统

1.课程设计的目的

(1)通过数据库课程设计加深对数据库基础及应用的课程相关知识的理解,培养运用所学理论知识和操作技巧分析,解决实际系统问题的能力。

(2)掌握用数据库理论从需求分析和数据库逻辑、物理设计,到功能分析和应用程序的最终实现,让学生亲自动手参与一个具有一定规模的数据库应用系统的设计和开发,真正理解和掌握数据库设计和开发的思路和方法,加深对数据库系统,软件工程,程序设计语言的理论知识的理解和应用水平;在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高;学会将知识应用于实际的方法,提高分析和解决问题的能力,增强对手能力;并更好的理解和消化课本所学的知识,为毕业设计和以后工作打下必要基础。

2.设计方案论证

2.1设计思路

2.1.1问题的提出

务管理工作是高等学校教育工作的一项重要内容,是整个学校管理的核心和基础。

教务管理工作是指学校管理人员按照一定的教育方针,运用先进的管理手段,组织、协调、指挥并指导个方面人员的活动,以更高效率、高质量地完成各项教学任务,完成国家所制定的教育目标。

教务管理工作是教学工作的中枢,是保证高校教学机制正常运转的枢纽,它是一项目的性、计划性、适应性、创造性和科学性很强的工作。

教务管理在高校教学秩序稳定和教学质量的提高,关系到高校的发展和人才的培养,教务管理在高校中占有相当重要的地位。

随着计算机技术的飞速发展和高校教育体制改革的不断深入,艾丽书院的传统教务管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成教学管理工作。

提高教务管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。

同时,运用先进的信息技术,开发高校综合教务管理信息系统,是深化教务体制改革的有利措施。

对现有人工数据采集、统计分析的流程进行了调查,并对软件系统实现的技术可行性进行了分析,我们认为《艾丽书院教务管理系统》具备开发的需求及条件。

我们细致一对人工系统及软件系统实现测评的费用进行了计算及对比,得出的结论是使用软件系统可节省人力、物力,而且可以提高测评结果的准确性。

艾丽学院目前的硬件设施满足本系统运行的需要。

实现本系统需要的技术包括:

SQL脚本的编程、Mysql数据库应用、B/S结构的软件开发技术。

目前这些技术已经成熟。

这些技术对计算机系的教师而言都是必须掌握的基本技术。

此外,本软件系统开发成本低,有较强的应用需求。

数据采集节省了大量纸张,保护了环境。

数据处理使用计算机进行,快速、准确。

《艾丽书院教务管理系统》是个小型软件系统,短时间内完全可以按时开发完成。

2.1.2需求分析

(1)系统数据流图

系统的数据流程如图-1所示

图1系统的数据流程图

(2)基础数据管理

“基础数据管理”用于维护整个教务系统正常运行所需的基础数据集,以确保教务系统有一个统一、标准的基础数据集,便于数据的共享使用,内容包括入学年份、学年学期、院系数据、专业设置、教研室情况等。

(3)教学计划管理

“教学计划管理”用于维护学校中各系各专业的课程、课组计划安排信息,作为选课和毕业审查的标准,包括的功能有课程计划登记、课程计划审批、选课情况查询、选课信息审批等。

(4)学籍管理

“学籍管理”主要包括了高校学籍管理的常用信息,提供对学生学籍基本信息录入、查询、修改、打印输出、维护等常用功能。

(5)课程管理

“课程管理”主要负责对课程时间、地点的安排以及开课系列、教师的信息维护等功能。

(6)学生管理

“学生管理”主要对学生的详细信息,考试成绩,交费情况,正常运转等功能的维护。

 

2.2概念结构设计

2.2.1各实体及其属性

2.2.2全局E-R图如图2所示

图2全局E-R图

 

2.3逻辑结构设计

2.3.1概念结构向关系模式转换

每个实体定义的属性如下:

班级信息表:

班级(班级编号,年级,班级名称,班级简称,人数,导员)

籍贯代码表:

籍贯代码表(籍贯编号,籍贯)

民族代码表:

民族代码表(民族编号,民族)

政治面貌代码表:

政治面貌代码表(政治面貌编号,政治面貌)

学籍代码表:

学籍代码表(学籍编号,学籍名称)

选课表:

选课(编号,学号,课序号)

学生表:

学生(学号,姓名,性别,年龄,所在系,班级编号,政治面貌编号,民族编号,籍贯编号,学籍编号)

成绩表:

成绩表(编号,学号,课程编号,成绩,考试次数,是否补修,是否重考,是否已经确定考试成绩)

课程信息表:

课程信息(课程编号,课程名称,先修课,教师,系别,学分)

费用表:

费用(费用单号,学号,学费,住宿费,课本费,杂费,补考费)

课程表:

课程表(编号,课序号,课程编号,上课时间天,上课时间节,上课地点)

2.3.2关系模式优化

班级信息表:

班级(班级编号,年级,班级名称,班级简称,人数,导员)

籍贯代码表:

籍贯代码表(籍贯编号,籍贯)

民族代码表:

民族代码表(民族编号,民族)

政治面貌代码表:

政治面貌代码表(政治面貌编号,政治面貌)

学籍代码表:

学籍代码表(学籍编号,学籍名称)

选课表:

选课(学号,课程编号,课序号)

学生表:

学生(学号,姓名,性别,年龄,所在系,班级编号,政治面貌编号,民族编号,籍贯编号,学籍编号)

成绩表:

成绩表(学号,课程编号,成绩,考试次数,是否补修,是否重考,

是否已经确定考试成绩)

课程信息表:

课程信息(课程编号,课程名称,先修课,教师,系别,学分)

费用表:

费用(费用单号,学号,学费,住宿费,课本费,杂费,补考费)

课程表:

课程表(课序号,课程编号,上课时间天,上课时间节,上课地点)

2.3.3创建数据库

打开SQLServer企业管理器,新建一个数据库,名称为“教务管理系统”,完成数据库的设计。

2.3.4创建数据表

(1)创建“班级”数据表

CREATETABLE班级

(班级编号VARCHAR(14)NOTNULL,

年级VARCHAR(4),

班级名称VARCHAR(30),

班级简称VARCHAR(16),

人数NUMERIC(3,0),

导员VARCHAR(8))

(2)创建“学生”数据表

CREATETABLE学生

(学号VARCHAR(14)NOTNULL,

姓名VARCHAR(8),

性别VARCHAR

(2),

年龄SMALLINT,

所在系VARCHAR(20),

班级编号VARCHAR(14),

政治面貌编号VARCHAR

(2),

民族编号VARCHAR

(2),

籍贯编号VARCHAR

(2),

学籍编号VARCHAR

(2))

(3)创建“课程信息”数据表

CREATETABLE课程信息

(课程编号VARCHAR(8)NOTNULL,

课程名称VARCHAR(30)NOTNULL,

先修课VARCHAR(30),

教师VARCHAR(8),

系别VARCHAR(20),

学分SMALLINT)

(4)创建“课程表”数据表

CREATETABLE课程表

(课序号VARCHAR(14)NOTNULL,

课程编号VARCHAR(8)NOTNULL,

上课时间天INTNOTNULL,

上课时间节INTNOTNULL,

上课地点VARCHAR(20)NOTNULL)

(5)创建“成绩表”数据表

CREATETABLE成绩表

(学号VARCHAR(14)NOTNULL,

课程编号VARCHAR(8)NOTNULL,

成绩SMALLINT,

考试次数SMALLINT,

是否补修VARCHAR

(2),

是否重考VARCHAR

(2),

是否已经确定考试成绩VARCHAR

(2))

(6)创建“费用”数据表

CREATETABLE费用

(费用单号VARCHAR(14)NOTNULL,

学号VARCHAR(14)NOTNULL,

学费MONEY,

住宿费MONEY,

课本费MONEY,

杂费MONEY,

补考费MONEY)

(7)创建“选课”数据表

CREATETABLE选课

(学号VARCHAR(14)NOTNULL,

课程编号VARCHAR(8)NOTNULL,

课序号VARCHAR(14)NOTNULL,)

(8)创建其他关键数据表

CREATETABLE政治面貌代码表

(政治面貌编号CHAR

(2)NOTNULL,

政治面貌VARCHAR(14))

GO

CREATETABLE民族代码表

(民族编号CHAR

(2)NOTNULL,

民族VARCHAR(18))

GO

CREATETABLE学籍代码表

(学籍编号CHAR

(2)NOTNULL,

学籍名称VARCHAR(8))

GO

CREATETABLE籍贯代码表

(籍贯编号CHAR

(2)NOTNULL,

籍贯VARCHAR(18))

GO

2.3.5数据库完整性

在SQL查询分析器中通过如下代码创建数据表的主键及外键等表约束。

(1)实体完整性

--主键关联字段

ALTERTABLE学生WITHNOCHECKADD

CONSTRAINTPK_学生PRIMARYKEYCLUSTERED(学号)

GO

ALTERTABLE学籍代码表WITHNOCHECKADD

CONSTRAINTPK_学籍代码表PRIMARYKEYCLUSTERED(学籍编号)

GO

ALTERTABLE成绩表WITHNOCHECKADD

CONSTRAINTPK_成绩表PRIMARYKEYCLUSTERED(学号,课程编号)

GO

ALTERTABLE政治面貌代码表WITHNOCHECKADD

CONSTRAINTPK_政治面貌代码表PRIMARYKEYCLUSTERED(政治面貌编号)

GO

ALTERTABLE民族代码表WITHNOCHECKADD

CONSTRAINTPK_民族代码表PRIMARYKEYCLUSTERED(民族编号)

GO

ALTERTABLE班级WITHNOCHECKADD

CONSTRAINTPK_班级PRIMARYKEYCLUSTERED(班级编号)

GO

ALTERTABLE籍贯代码表WITHNOCHECKADD

CONSTRAINTPK_籍贯代码表PRIMARYKEYCLUSTERED(籍贯编号)

GO

ALTERTABLE课程信息WITHNOCHECKADD

CONSTRAINTPK_课程信息PRIMARYKEYCLUSTERED(课程编号)

GO

ALTERTABLE选课WITHNOCHECKADD

CONSTRAINTPK_选课PRIMARYKEYCLUSTERED(学号,课程编号)

GO

ALTERTABLE课程表WITHNOCHECKADD

CONSTRAINTPK_课程表PRIMARYKEYCLUSTERED(课程编号,课序号)

GO

ALTERTABLE费用WITHNOCHECKADD

CONSTRAINTPK_费用PRIMARYKEYCLUSTERED(费用单号)

GO

(2)参照完整性

ALTERTABLE学生ADD

CONSTRAINTPK_学生_班级FOREIGNKEY(班级编号)REFERENCES班级(班级编号),

CONSTRAINTPK_学生_籍贯代码表FOREIGNKEY(籍贯编号)REFERENCES籍贯代码表(籍贯编号),

CONSTRAINTPK_学生_民族代码表FOREIGNKEY(民族编号)REFERENCES民族代码表(民族编号),

CONSTRAINTPK_学生_政治面貌代码表FOREIGNKEY(政治面貌编号)REFERENCES政治面貌代码表(政治面貌编号),

CONSTRAINTPK_学生_学籍代码表FOREIGNKEY(学籍编号)REFERENCES学籍代码表(学籍编号)

GO

ALTERTABLE成绩表ADD

CONSTRAINTPK_成绩表_学生FOREIGNKEY(学号)REFERENCES学生(学号)

ONDELETECASCADE

ONUPDATECASCADE,

CONSTRAINTPK_成绩表_课程信息FOREIGNKEY(课程编号)REFERENCES课程信息(课程编号)

ONDELETENOACTION

ONUPDATECASCADE

GO

ALTERTABLE费用ADD

CONSTRAINTPK_费用_学生FOREIGNKEY(学号)REFERENCES学生(学号)

GO

ALTERTABLE课程表ADD

CONSTRAINTPK_课程表_课程信息FOREIGNKEY(课程编号)REFERENCES课程信息(课程编号)

(3)完整性约束命名子句

ALTERTABLE学生

ADD

(COSTRAINTC1CHECK(学号BETWEEN20070001AND20079999),

COSTRAINTC2CHECK(性别IN(‘男‘,‘女‘)

COSTRAINTC3CHECK(年龄<30))

ALTERTABLE成绩表

ADDCOSTRAINTC4CHECK(成绩>=0AND成绩<=100)

2.4物理结构设计(索引创建等)

索引创建

学生表按学号升序建唯一索引

CREATEUNIQUEINDEX学生学号ON学生(学号)

课程信息表按课程编号升序建唯一索引

CREATEUNIQUEINDEX课程编号引ON课程信息(课程编号)

选课表按学号升序和课程编号按降序建唯一索引

CREATEUNIQUEINDEX选课引ON选课(学号ASC,课程编号DESC)

成绩表按成绩降序排列建立索引

CREATECLUSTERINDEX成绩降序ON成绩表(成绩DESC)

(3)5系统特色设计

系统使用了“SF_终止选课”和“SF_成绩提交”两个存储过程,分别实现结算选课、生成空白成绩单和老师提交最终的成绩单的功能。

CREATEPROCSF_成绩提交@COURSEIDINT

AS

BEGINTRAN

--提交成绩,提交后不可以再修改

UPDATE成绩表SET是否已确定成绩=’Y’WHERE课程编号=@COURSEIDINT

AND成绩>0

COMMIT

GO

CREATEPROCSF_终止选课

AS

BEGINTRAN

--应该单独有一个【终止选课】的功能,终止选课后即生成空的成绩单

--所有学生将不允许更改课程信息,如果需要更改,必须单独申请,特殊处理。

--终止选课一学年应该只能进行一次操作,实例没有制作开始选课的功能,终止

--选课后在学生选课中仍然可以更改选择的课程。

INSERTINTO成绩表(学号,课程编号,成绩,考试次数,是否补修,是否重考,是否已经确定考试成绩)

SELECTDISTINCTA.学号,B.课程编号,0,1,’N’,’N’,’N’FROM

选课表ASA,课程表ASBWHEREA.课序号=B.课序号

ANDRTRIM(A.学号)+RTRIM(B.课程编号)NOTIN

(SELECTRTRIM(学号)+RTRIM(课程编号)FROM成绩表)

--因为没有记录选课状态,上面的SQL语句加了判断,如果成绩表已有

--该学号/课程,就不插入,实际应用如果是重复的,应该是补修和重考

--的情况,应该更改已有信息的这些状态

--还要注意SELECT语句加了DISTINCT说明,因为选课表中的一个序号

--一个学生可能有多条选课

COMMIT

GO

 

3.设计结果与分析

3.1数据查询

(1)查询学号为20070003同学所缴纳的总费用,如图3:

图3查询学号为20070003同学所缴纳的总费用

 

(2)查询选修8号课程且成绩在90分以上的所以学生,如图4:

图4查询选修8号课程且成绩在90分以上的所以学生

(3)查询不及格同学的信息,如图5:

图5查询不及格同学的信息

(4)查询各个课程号、任课教师及相应的选课人数,如图6:

图6查询各个课程号、任课教师及相应的选课人数

 

(5)查询与“崔帅峰”在同一个系学习的学生,如图7:

图7查询与“崔帅峰”在同一个系学习的学生

(6)查询少数民族同学所在的班级名称,如图8:

图8查询少数民族同学所在的班级名称

 

(7)查询学号为2007001的同学的上课地点都在哪里

查询学好为20070001的雪深的上课地点都在哪里。

SELECT上课地点

FROM课程表

WHERE课程编号IN(SELECT课程编号

FROM选课

WHERE卡号=’20070001’)

图9查询学号为2007001的同学的上课地点都在哪里

3.2数据更新

(1)插入一条学生记录

INSERT

INTO学生

VALUES(‘20070031’,’杨一涛’,’男’,’22’,’计算机’,’004’,’2’,’1’,’05’,’0’)

查询结果如图:

10所示

图10插入一条学生记录

(2)对来自同一地方的学生求其平均年龄,并把结果存入数据库。

首先在数据中建立一个新表,其中一列存放籍贯,另一列存放相应的学生平均年龄。

CREATETABLE籍贯_年龄

(籍贯编号CHAR

(2),

AVG_年龄SMALLINT)

然后对学生表按籍贯分组求平均年龄,再把籍贯和平均年龄存入新表中。

INSERT

INTO籍贯_年龄(籍贯编号,AVG_年龄)

SELECT籍贯编号,AVG(年龄)

FROM学生

GROUPBY籍贯编号

结果如图11所示

图11对来自同一地方的学生求其平均年龄,并把结果存入数据库

(3)在接受考察期间,由于陈洁同学在各个方面表现十分突出,经支部大会讨论通过并经上级党委批准其成为正式党员,故须将其政治面貌改为党员。

UPDATE学生

SET政治面貌编号=’2’

WHERE姓名=’陈洁’

(4)删除已毕业学生的信息

DELETE

FROM学生

WHERE学籍编号=’2’

3.3视图

3.3.1定义视图

建立建立计算机系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生

CREATEVIEWCS(SNO,SNAME,SSEX,AGE)

AS

SELECT学号,姓名,性别,年龄

FROM学生

WHERE所在系=’计算机’

WITHCHECKOPTION

建立计算机系选修了8号课程的学生的视图

CREATEVIEWXK_8(SNO,SNAME,AGE,GRADE)

AS

SELECT学生.学号,姓名,年龄,成绩

FROM学生,成绩表

WHERE所在系=’计算机’AND

学生.学号=成绩表.学号AND

成绩表.课程编号=’8’

3.3.2查询视图

查询计算机视图中成绩小于80的学生的姓名及年龄

SELECTSNAME,AGE,GRADE

FROMXK_8

WHEREGRADE<80

查询结果如图12所示

图12查询视图

3.3.3更新视图

UPDATECS

SETSNAME=’周杰伦’

WHERESNO=’20070008’

结果如图13所示

图13更新视图

4.设计体会

通过这次对数据库的课程设计,不仅仅让我对所学的知识有了更深一步的掌握及理解,同时也得到了很多有用的发现及认识,大体有一下几个方面。

首先,设计始终应带着面向对象的思想去设计,这是设计的基本原则。

对象的抽取应该符合真实性和抽象性,不能将对象强制抽取合并。

其次,在数据设计中,数据的使用率和冗余应该是设计考虑的通用标准。

对外键的认识不能停留在表面,它代表了一对多的关系,它在真实的实体之间也能体现这关系的。

最后,虽然目前我们的数据库设计模式能够满足开发要求,也节省了开发时间,但是这样的设计会对以后工程项目的维护、改版造成成本上的增加。

数据库表的字段在修改上将对主程序造成影响;另外对于开发和维护人员来说,字段的编码也需要规范化,这样可以统一字段编码,让维护人员一看就懂,增添的字段对以后接手项目的人员来说则很容易上手。

针对上述问题,我建议数据开发需要定义一套简明扼要的规范。

规范中包括三个部分:

一是编码的规范;二是字段类型长度的定义;三是表设计的特殊说明。

定义好域之后,就可以设计数据表以及字段了。

设计完表,可以选择导出的数据库类型,并生成建数据和建表的sql,再通过数据库连接工具执行sql语句,一个工程项目的数据库就建立好了。

以后只要有数据库的修改要求,则重新生成sql语句并执行之即可

5.参考文献

[1]谭浩强.C语言程序设计[M].北京清华大学出版社,2012.05:

1-20

[2]望珊,萨师煊.数据库系统概论[M].北京:

高等教育出版社, 2006.5:

75-83     

[3]范立南,刘天惠.SQLServer2000实用教程[M].北京:

清华大学出版社,2004.02:

47-138

[4]ThomasM.Connolly,CarolynE.Begg.数据库设计教程[M].北京:

机械工业出版社,2005.1:

1-49

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1