西电计算机数据库上机报告-学生管理系统.docx

上传人:b****2 文档编号:1301343 上传时间:2022-10-20 格式:DOCX 页数:11 大小:101.54KB
下载 相关 举报
西电计算机数据库上机报告-学生管理系统.docx_第1页
第1页 / 共11页
西电计算机数据库上机报告-学生管理系统.docx_第2页
第2页 / 共11页
西电计算机数据库上机报告-学生管理系统.docx_第3页
第3页 / 共11页
西电计算机数据库上机报告-学生管理系统.docx_第4页
第4页 / 共11页
西电计算机数据库上机报告-学生管理系统.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

西电计算机数据库上机报告-学生管理系统.docx

《西电计算机数据库上机报告-学生管理系统.docx》由会员分享,可在线阅读,更多相关《西电计算机数据库上机报告-学生管理系统.docx(11页珍藏版)》请在冰豆网上搜索。

西电计算机数据库上机报告-学生管理系统.docx

西安电子科技大学

数据库系统

(2016年度)

题目:

学生信息管理系统

班级:

组长姓名:

组长学号:

一、需求分析

1.数据需求:

需要涉及以下几个数据字典,学生基本信息表表,班级表,系表,学生学会表。

学生基本信息表表

Sno

学生的学号

Sname

学生姓名

Ssex

性别

Sage

年龄

Sbirth

出生年月

班级表

Cno

班级号

Cyear

入学年份

Cnum

班级人数

Cname

专业名

系表

Dno

系号

Dname

系名

Doffice

系办公室地点

Dnum

系人数

Dzone

住宿区

学生学会表

SUno

学会号

SUname

学会名

SUyear

成立时间

SUzone

地点

2.任务需求:

(1)实现学生基本情况的录入,修改,删除等基本操作。

(2)对学生基本信息提供灵活的查询方式。

(3)建立学生学会名和学会人数的视图

(4)触发器可以在增加或者删除学生时自动增加或者删除系人数和班级人数

(5)存储过程,可以更改班级号并返回人数

(6)建立一个游标,可以对系的人数统计,如果与人数不相同可以更新系的人数

二、数据库设计

1.概念结构设计

局部ER图

学生

学号

姓名

性别

年龄

出生年份

班级

班级号

入学年份

班级人数

专业名

系号

系名

系办公室地点

系人数

住宿区

学会

学会号

学会名

成立时间

地点

整体的ER图

属于

系办公室地点

系号号

系名

系人数

住宿区

加入

学生

出生年月

性别

姓名

学号

年龄

属于

班级

入学年份

班级号号

班级人数

专业名

学会

学会号

学会名

成立时间

地点

入会年份

属于

2.逻辑结构设计

(1)ER图转换为关系模型

由ER图可见:

图中有四个实体:

学生,班级,系和学会;四个关系:

学生学会加入关系,学生与班级之间的属于关系,学生与系之间的属于关系,班级与系之间的属于关系。

由于每个实体必须构造表,所以可以先得到四个实体的信息表,实体的码就是关系的码,实体的属性即关系模型的属性:

Student(Sno,Sname,Ssex,Sage,Sbirth,Dno,Cno)

Dept(Dno,Dname,Doffice,Dnum,Dzone)

Class(Cno,Cyear,Cnum,Cname,Dno)

StuUnion(SUno,SUname,SUyear,SUzone)

对于多对多的关系来说,与该联系相连的实体的码以及本身的属性均转换为关系的属性,各实体之间的码组成关系的码或者关系的码的一部分。

以上ER图的联系为多对多,所以转换为关系模式为:

Join(Sno,SUno,Jyear)

3.物理结构设计

(1)基本表

学生表Student

列名

主码

候选码

外码

被参照表

允许空

数据类型

约束条件

Sno

Char(9)

Sname

Char(20)

Ssex

Char

(2)

只可取男或女

Sbirth

Char(20)

Sage

smallint

20-30

Dno

Dept

Char(3)

Cno

Class

Char(6)

班级表Class

列名

主码

候选码

外码

被参照表

允许空

数据类型

约束条件

Cno

Char(6)

Cyear

Char(5)

Cnum

Int

Cname

Char(6)

Dno

Dept

Char(3)

系表Dept

列名

主码

候选码

外码

被参照表

允许空

数据类型

约束条件

Dept

Char(3)

Dname

Char(20)

Doffice

Char(20)

Dnum

Int

Dzone

Char(10)

学会表StuUnion

列名

主码

候选码

外码

被参照表

允许空

数据类型

约束条件

SUno

Char(5)

SUname

Char(20)

SUyear

Char(5)

SUzone

Char(20)

参加学会表JoinSU

列名

主码

候选码

外码

被参照表

允许空

数据类型

约束条件

Sno

Student

Char(9)

SUno

StuUnion

Char(5)

Jyear

Char(5)

(2)视图,索引

a.索引:

本数据库中的表除了主键本身生成的主索引外,没有定义其他的索引。

在查询时即引用主索引即可。

表Student的主索引列为:

Sno

表Class的主索引列为:

Cno

表Dept的主索引列为:

Dno

表StuUnion的主索引列为:

SUno

表Join的主索引列为:

Sno,SUno

b.视图:

虽然关系数据模型分析的结果表示该数据库需要定义不同的用户视图,但考虑到数据库与前台开发程序的连接比较复杂,所以该数据库中没有单独定义用户视图,不同的用户视图被有选择性的的select语句的结果集取.

三、系统实现

1.表的建立

1)系表

CREATETABLEDept

( DnoCHAR(3)NOTNULL,

DnameCHAR(20)NOTNULL,

DofficeCHAR(20)NOTNULL,

DnumINT,

DzoneCHAR(10),

PRIMARYKEY(Dno)

);

2)班级表

CREATETABLEClass

( CnoCHAR(6)NOTNULL,

CyearCHAR(5),

CnumINT,

CnameCHAR(6),

DnoCHAR(3),

PRIMARYKEY(Cno),

FOREIGNKEY(Dno)REFERENCESDept(Dno)

ONDELETECASCADE

ONUPDATECASCADE

);

3)学生表

CREATETABLEStudent

( SnoCHAR(9)NOTNULL,

SnameCHAR(20)NOTNULL,

SbirthCHAR(20),

SsexCHAR

(2)CHECK(SsexIN(’男’,’女’)),

SageSMALLINTCHECK(Sage>10ANDSage<30),

DnoCHAR(3)NOTNULL,

CnoCHAR(6)NOTNULL,

PRIMARYKEY(Sno),

FOREIGNKEY(Dno)REFERENCESDept(Dno)

ONDELETECASCADE

ONUPDATECASCADE,

FOREIGNKEY(Cno)REFERENCESClass(Cno)

ONUPDATECASCADE

ONDELETECASCADE

);

4)学会表

CREATETABLEStuUnion

( SUnoCHAR(5)NOTNULL,

SUnameCHAR(20),

SUyearCHAR(5),

SUzoneCHAR(20),

PRIMARYKEY(SUno)

);

5)参加学会表

CREATETABLEJoinSU

( SnoCHAR(9)NOTNULL,

SUnoCHAR(5)NOTNULL,

JyearCHAR(5),

PRIMARYKEY(Sno,SUno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno)

ONDELETECASCADE

ONUPDATECASCADE,

FOREIGNKEY(SUno)REFERENCESStuUnion(SUno)

ONDELETECASCADE

ONUPDATECASCADE

);

2.创建学会的视图

CREATEVIEWClub(SUNAME,SNUM)

AS

SELECTMAX(SUname),COUNT(DISTINCTSno)

FROMJoinSU,StuUnion

WHEREStuUnion.SUno=JoinSU.SUno

GROUPBYStuUnion.SUno

3.建立在学生表上的触发器(能根据每个班的学生变动情况自动增减班级表和系表的人数字段的值)

CREATETRIGGERUpdate_people

ONStudent

FORINSERT,DELETE

AS

UPDATEDept

SETDept.Dnum=Dept.Dnum+1

WHEREDept.Dno=(

SELECTINSERTED.Dno

FROMINSERTED)

UPDATEDept

SETDept.Dnum=Dept.Dnum-1

WHEREDept.Dno=(

SELECTDELETED.Dno

FROMDELETED)

UPDATEClass

SETClass.Cnum=Class.Cnum+1

WHEREClass.Cno=(

SELECTINSERTED.Cno

FROMINSERTED)

UPDATEClass

SETClass.Cnum=Class.Cnum-1

WHEREClass.Cno=(

SELECTDELETED.Cno

FROMDELETED)

4.建立存储过程(给定一个班的旧班号和新班号,把所有相关表中此班的旧班号改为新班号,并返回此班的人数(使用输出参数))

CREATEPROCEDURECHANGE

@oldnumCHAR(6),@newnumCHAR(6),@CnumINTOUTPUT

AS

UPDATEClass

SETClass.Cno=@newnum,@Cnum=Cnum

WHEREClass.Cno=@oldnum

UPDATEStudent

SETStudent.Cno=@newnum

WHEREStudent.Cno=@oldnum

DECLARE@Cnu

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

当前位置:首页 > 工程科技 > 电力水利

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

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