数据库课程设计.docx

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

数据库课程设计.docx

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

数据库课程设计.docx

数据库课程设计

课程设计任务

题目:

学生管理系统

学号:

姓名:

专业:

计算机科学与技术

课程:

数据库系统概论

指导教师:

职称:

具体任务:

完成时间:

2010年11月————2010年12月

 

计算机科学系

说明

一、课程设计写作框架(仅供参考)

摘要

目录

正文

1、基本设计任务及要求、所用仪器折本

2、总体设计方案及主要设计原理

3、实现技术及源程序代码

4、测试及分析

5、结束语(心得体会、改进方向)

参考文献

二、写作要求

课程设计写作要求论点明确、论据充分、说明透彻,语言准确恰当,书面整洁,字迹工整。

课程设计的篇幅本科一般为4000字左右,专科一般为3000字左右。

 

课程设计任务书及成绩评定

课程设计的任务和具体要求

课程设计的任务:

运用各章所学知识,设计一个关于数据库与现实相结合的学生管理系统。

在此系统中实现各模块的功能,并实现数据库查询、连接、存储等功能。

具体要求:

首先通过对学生管理系统进行详细的分析,得到系统功能模块图,然后根据系统功能分析,围绕它进行系统设计、可行性分析、功能和性能需求,然后得出系统流图、数据流图、E-R图,并进行数据块的设计和模块化的实现。

最终形成一个完整的学生管理系统。

指导教师签字:

_________日期:

__________

指导教师评语

 

成绩:

______指导教师签字:

_________日期:

______

课程设计所需软件、硬件等

计算机一台、MicrosoftSQLSERVER2005

 

课程设计进度计划

起至日期

工作内容

备注

2010年11月至2010年12月

1、需求分析

2、概念设计

3、逻辑设计

4、物理设计

5、安全性设计

6、数据库实现

参考文献、资料索引

序号

文献、资料名称

编著者

出版单位

1、《数据库系统概论》(第四版)王珊萨师煊编高等教育出版社

2、《SQLSERVER2000应用系统开发教程》李春葆编北京清华大学出版社

3、《数据库系统教程》王能斌主编电子工业出版社

4、《数据库设计教程》何玉洁主编机械工业出版社

5、《数据库原理及应用》钱雪忠编中国邮电大学出版社

6、《SQLSERVER2000数据库与AnalysisServices》王珊编北京科技出版社

目录

课程设计任务1

说明2

一、需求分析1

1.1系统分析1

1.2功能需求分析1

二、概念设计4

2.1E-R图4

2.2数据说明:

5

2.3约束、完整性约束的具体说明:

6

三、逻辑设计7

3.1实体集到关系的转化7

3.2E-R联系到关系的转化8

3.3生成关系模型如下图8

3.4视图设计10

四、物理设计10

4.1索引与簇集设计10

4.2关系模式数据库划分10

4.3数据库查询事务及更新10

五、安全性设计11

5.1权限设置11

5.2数据备份与恢复设计11

六、数据库实现13

6.1表及其完整性的创建13

6.2触发器的建立15

6.3视图的建立15

6.4索引的建立16

6.5安全性授权17

一、需求分析

1.1系统分析

学生管理系统是学校管理系统中不可或缺的一部分,由于该系统的内容具有数据量庞大、信息关系复杂、访问量大和实时性等特点,使用传统的逐层统计的学籍管理方式已不能满足学校管理者对信息及时反馈以做出决策的要求,以及学生对个人信息实时了解的需要。

所以我们认为学生管理系统应该能够为用户提供充足的信息和快捷的查询手段,而这些正是数据库系统技术的优点.例如:

检索迅速、查找方便、可靠性高、存储量大、保密性好、成本低等,这些优点能够极大地提高学生管理的效率。

1.2功能需求分析

经过调查分析,我们认为参加日常教学活动的角色可以分为三类—教务、教师和学生,明确他们之间的不同操作权限。

通过对日常教学活动所能出现的操作进行分析,我们将其归类于学生管理系统不同的功能模块以实现他们的操作。

学生管理系统可以分为机构设置、学籍管理、课程管理、成绩管理、权限管理五个模块(如图1)。

并且针对每部分的具体功能我们又做了如下的详细分析:

机构管理模块有“专业设置”模块和“班级设置“模块。

由教务处负责维护,具有增加、修改、删除和查询专业及班级的功能(图2)。

学籍管理模块是由教务处及其授权者(如各专业管理人员等)来管理。

具有新增学生功能、学生的基本信息、奖惩信息、家庭成员信息的修改增删等功能,以及学生的变动信息(退学、休学、转专业等)的操作功能(如图3)。

图2

 

图3

图4

课程管理模块包括教务处对课程的分配、新增的操作,学生用户查看课表等功能操作(见图4)。

成绩管理模块主要负责管理学生成绩,包括成绩录入、成绩统计和成绩查询功能。

“成绩录入”是由教师负责录入成绩。

成绩信息包括成绩学号、课程号、成绩、班级等。

学生用户查询自己成绩,教务处对成绩进行统计。

(如图5)。

权限管理模块包括分配权限、密码维护、登录设置功能。

由教务处制定分配权限,“密码维护”和“登录设置“由相关人员维护用户密码信息和对登录的设置(如图6)

图6

 

二、概念设计

2.1E-R图

根据需求分析我们对学生管理系统进行如下图:

注:

课程分配中只分配必修课

2.2数据说明:

根据ER图给出相关数据的类型和特征说明

专业(实体)

属性

类型

大小

能否为空

约束

专业代码

Char

8

主键

专业名称

Varchar

40

班级(实体)

属性

类型

大小

能否为空

约束

班级号

Char

8

主键

建班年份

Date

班主任

Varchar

10

课程信息(实体)

属性

类型

大小

能否为空

约束

课程号

Char

8

主键

课程名称

Varchar

20

学分

Int

4

课时

Int

4

新增日期

Date

专业代码

Char

8

学生信息(实体)

属性

类型

大小

能否为空

约束

学号

Char

8

主键

姓名

Varchar

10

性别

Char

1

Checkin(F、M)

宿舍

Varchar

50

入学日期

Date

政治面貌

Varchar

10

默认“团员”

籍贯

Varchar

50

出生日期

Date

民族

Varchar

20

默认“汉族”

身份证号

Char

18

联系电话

Char

11

注:

在E-R图中“学生信息”有一项属性为家庭成员信息,但由于每个学生都有不止一个家庭成员,而且每个家庭成员又包括职业、单位、联系方式等属性,如果把家庭成员信息和学生基本信息放在一个关系中会造成冗余。

所以这里把ER图中的家庭信息分解出来,另建为一个实体集“家庭成员信息”。

家庭成员信息(实体)

属性

类型

大小

能否为空

约束

成员ID

Char

8

主键

学号

Char

8

外键

姓名

Varchar

10

性别

Char

1

Checkin(F、M)

关系

Varchar

40

联系方式

Char

11

学生变动信息(实体)

属性

类型

大小

能否为空

约束

变动ID

Char

8

主键

学号

Char

8

外键

类型

Varchar

10

日期

Date

学生奖惩信息(实体)

属性

类型

大小

能否为空

约束

奖惩ID

Char

8

主键

学号

Char

8

外键

类别

Varchar

40

日期

Date

选课课表(学生与课程之间的联系)

属性

类型

大小

能否为空

约束

班级

Char

8

成绩信息(学生与课程之间的联系)

属性

类型

大小

能否为空

约束

班级

Char

8

日期

Date

成绩

Int

4

0<=成绩<=100

2.3约束、完整性约束的具体说明:

如ER图所示,“班级”为弱实体,班级号不能唯一决定所属班级,只有通过支持实体集“专业”。

所以从班级到专业必须满足引用完整性约束。

从“家庭成员信息”、“学生变动信息”、“学生奖惩信息”到“学生信息”实体集也必须满足引用完整性约束。

考虑到实体之间的引用,我们在设计关系时需要用到级联原则,使得删除学生信息后,此学生相关的其他信息都要自动删除,具体实现见六、数据库实现。

考虑到教师录入成绩要有一定时间限制,在成绩信息表上我们设计一个触发器来限制教师录入成绩的时间,这个时间可以由教务处来决定

三、逻辑设计

3.1实体集到关系的转化

根据ER图,将每个非弱实体集直接转化为同名且具有相同属性集的关系,关系模式如下:

1)专业(专业代码,专业名称)

2)课程信息(课程ID,名称,学分,课时,新增日期,专业代码)

3)学生信息表(学号,班级号,专业代码,姓名,性别,住址,入学日期,政治面貌,籍贯,出生日期,名族,身份证号,联系电话)

外键“班级号,专业代码”引用自表“班级”的主键

4)奖惩信息表(奖惩ID,学号,类别,日期)

外键“学号”引用自表“学生信息表”的主键

5)学生变动信息表(变动ID,学号,类型,日期)

外键“学号”引用自表“学生信息表”的主键

6)家庭信息表(成员ID,学号,姓名,性别,关系,单位,联系方式)

外键“学号”引用自表“学生信息表”的主键

弱实体集“班级”到关系的转化,转化后的关系模式包括弱实体集的所有属性,支持联系的所有属性以及支持实体集所有键属性,所以班级关系的模式如下:

7)班级(班级号,专业代码,建班年份,班主任)

“专业代码”引用自表“专业”,与班级号一起作为主键

3.2E-R联系到关系的转化

联系转化后的关系模式包括联系的属性及联系的实体集的键。

对于多对一的联系可以通过关系组合,将联系和实体集结合,以减少冗余。

关系模式如下:

8)课程分配(课程号,班级号,专业代码)

“课程号”引用自表“课程信息”,“班级号,专业代码”引用自表“班级”

9)选课课表(学号,课程号,班级号)

“学号”引用自表“学生信息表”,“课程号”引用自表“课程信息”

10)学生成绩(课程号,学号,成绩,日期,班级号)

“课程号”引用自表“课程信息”,“学号”引用自表“学生信息表”

3.3生成关系模型如下图

使用powerdesigner生成关系,其中关系间的箭头只表示外键约束。

3.4视图设计

考虑到学生的课表有两部分组成,一部分为课程分配(班级课表)中的必修课,另一部分为选课课表中的选修课。

为了方便学生查看个人课表所以要建一个视图“学生课表”:

学生课表(学号,课程号)

createview学生课表(学号,课程号)as

(select学号,课程号from选课课表)

union

(select学号,课程号from学生信息表,课程分配where

学生信息表.班级号=课程分配.班级号)

四、物理设计

4.1索引与簇集设计

为了查找的快速,我们在“学生成绩”和‘选课课表’关系上建了对班级的簇集索引,使其在物理位置上按班级的顺序存放,这样在查找学生成绩和学生所选课程的时候可以迅速索引到该学号,数据量很大时能明显地提高效率。

具体实现见六、数据库实现。

4.2关系模式数据库划分

考虑到我们所设计的学生管理系统数据库中只包含了十个表、一个视图,而且之间互相联系紧密,只用了一个数据库来存放这些关系模式。

4.3数据库查询事务及更新

●查询的关系及查询条件所涉及的属性

●连接条件所涉及的属性

●每个关系上的更新操作条件所涉及的属性

●查询的投影属性及被更新的关系

五、安全性设计

5.1权限设置

我们所设计的学生管理系统根据实际情况会用到四类用户,有教务处、教师、学生、还有由教务处指定的人员,如学院负责人等。

教务处就是最高权限管理员,拥有所有权限。

教务处通过给给学院负责人授予一定权限(这是一个带有授权选项的授权,用*来表示)来减轻自己的工作量,并方便各个学院的管理。

学院负责人可以给教师授予录入成绩、查询更新学生成绩的权限,也可以给学生授予查看课表、成绩的权利。

同时教务处给教师授予录入学生成绩,查询更新学生成绩的权限,给学生授予可查看自己成绩和课表的权限。

教务处可以授权:

学生(selecton学生成绩、班级、课程分配、学生课表)学院负责人员(select,insert,updateon课程分配、班级、奖惩信息、学生信息、家庭成员信息、学生变动信息、学习成绩)

教师(select,insert,updateon学生成绩)

学院负责人员可以授权:

教师(select,insert,updateon学生成绩)

学生(selecton学生成绩、班级、课程分配、学生课表)

这些授权的选择可以由教务处根据需要的变动灵活制定,这里我们只是给出了初步设计。

具体实现见六、数据库实现中第六项。

注:

这里教务处、学院负责人员因为有了课程分配、班级、学生信息的权限,所以就有了对视图“学生课表”的权限,对于学生来说,没有对“学生信息”的查询权利,所以要想对于视图“学生课表”有查询权限,就必须由相关部门来授予对视图的查询权。

5.2数据备份与恢复设计

为了防止数据可能在运行过程中出现某些意外的错误而导致数据丢失等严重问题,数据库的备份与恢复在实际的数据库系统开发中有着十分重要的意义。

数据有三种备份类型:

完整数据库备份;差异数据库备份;事务日志备份。

恢复模式有三种:

简单恢复模式;完全恢复模式;大容量日志恢复模式。

针对学生管理系统的数据库分析:

1、为了防止突发事件对现存数据库的破坏,应该随时将数据库信息进行备份,考虑到三种备份空间与时间上的优化,我们采取备份策略:

(1)、有规律的进行完整数据库备份,可以隔一段时间,在操作数据库不频繁的时间段进行;

(2)、在较小的时间间隔内进行差异备份,比如一天;

(3)、在相邻的两次差异备份之间进行事务日志备份,可以每半个小时一次,以补充备份在完整数据库备份与差异备份进行之间之间进行的事务。

考虑学生管理系统实际情况,我们采取恢复策略:

先恢复最近一次的数据库备份,接着进行差异备份恢复,最后进行事务日志备份的恢复。

因为我们同样关心数据库状态之间的变化,所以采用完整数据库恢复策略。

2、由于学生管理系统的数据量会随时间不断增多,大部分历史数据几乎不会被访问,占据存储空间的同时又降低数据库访问的效率,针对这方面我们采取:

每4年对已毕业两年以上的学生的主要信息进行数据备份,备份数据另保存,同时将这些已备份的数据从学生管理系统中删除。

对于此类学生的信息查询,由于我们只关心数据库的最后状态,所以恢复策略采用简单恢复模式,易于操作管理。

 

六、数据库实现

6.1表及其完整性的创建

Sql语句

createtable专业(

专业代码char(8)primarykey,

专业名称varchar(40)notnull)

createtable班级(

班级号char(8)notnull,

专业代码char(8)notnullreferences专业(专业代码),

建班年份datetimenotnull,

班主任varchar(10)notnull,

primarykey(班级号,专业代码))

createtable课程信息(

课程号char(8)primarykey,

名称varchar(20)notnull,

学分intnotnull,

课时intnotnull,

新增日期datetimenotnull,

专业代码char(8),

createtable学生信息表(

学号char(8)primarykey,

班级号char(8)notnull,

专业代码char(8)notnull,

姓名varchar(10)notnull,

性别char

(1)notnullcheck(性别in('f','m')),

宿舍varchar(50),

入学日期datetimenotnull,

政治面貌varchar(10)default(‘团员’),

籍贯varchar(80),

出生日期datetime,

民族varchar(20)default(‘汉族’),

身份证号char(18)notnull,

联系电话char(11),

foreignkey(班级号,专业代码)references班级(班级号,专业代码))

 

createtable学生变动信息(

变动IDchar(8)primarykey,

学号char(8)references学生信息表(学号)

ondeletecascade

onupdatecascade,

类型varchar(10)notnull,

日期datetimenotnull)

 

createtable奖惩信息表(

奖惩IDchar(8)primarykey,

学号char(8)notnullreferences学生信息表(学号)

ondeletecascade

onupdatecascade,

类别varchar(40)notnull,

日期datetimenotnull)

createtable家庭信息表(

成员IDchar(8)primarykey,

姓名char(10)notnull,

学号char(8)notnullreferences学生信息表(学号)

ondeletecascade

onupdatecascade,

性别char

(1)notnullcheck(性别in('f','m')),

关系varchar(10)notnull,

单位varchar(40)notnull,

联系方式char(11)notnull)

createtable学生成绩(

课程号char(8)notnullreferences课程信息(课程号),

学号char(8)notnullreferences学生信息表(学号)

ondeletecascade

onupdatecascade,

成绩intcheck(0<=成绩and成绩<=100),

日期datetimenotnull,

班级号char(8)notnull,

primarykey(课程号,学号)

createtable选课课表(

学号char(8)notnullreferences学生信息表(学号)

ondeletecascade

onupdatecascade,

课程号char(8)notnullreferences课程信息(课程号),

班级号char(8)notnull,

primarykey(学号,课程号))

createtable课程分配(

课程号char(8)notnullreferences课程信息(课程号),

班级号char(8)notnull,

专业代码char(8)notnull,

foreignkey(班级号,专业代码)references班级(班级号,专业代码),

primarykey(课程号,班级号,专业代码))

6.2触发器的建立

createtrigger成绩录入on学生成绩

forupdate,delete,insert

as

declare@日期datetime

begin

select@日期=日期frominserted

if(@日期>=2009-12-20)

begin

print('录入时间已过,不允许录入')

rollback

end

end

6.3视图的建立

createview学生课表(学号,课程号)as

(select学号,课程号from选课课表)

union

(select学号,课程号from学生信息表,课程分配where

学生信息表.班级号=课程分配.班级号)

 

6.4索引的建立

1、首先把默认的索引改为非簇集,因为一个表中只能有一个簇集索引。

把创建为CLUSTERED选项去掉后

 

2、创建索引

CREATECLUSTEREDINDEX成绩索引

ON学生成绩(班级号)

CREATECLUSTEREDINDEX课表索引--创建一个聚集索引

ON选课课表(班级号)

 

6.5安全性授权

1、新建了四个用户分别代表四类用户,学生、教务处、老师、负责人员。

2、授予教务处所有权限

grantselect,update,insert,deleteon家庭信息表to教务处withgrantoption;

grantselect,update,insert,deleteon奖惩信息表to教务处withgrantoption;

grantselect,update,insert,deleteon课程分配to教务处withgrantoption;

grantselect,update,insert,deleteon课程信息to教务处withgrantoption;

grantselect,update,insert,deleteon选课课表to教务处withgrantoption;

grantselect,update,insert,deleteon学生变动信息to教务处withgrantoption;

grantselect,update,insert,deleteon学生成绩to教务处withgrantoption;

grantselect,update,insert,deleteon学生信息表to教务处withgrantoption;

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

当前位置:首页 > 医药卫生 > 中医中药

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

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