数据库原理课程设计报告学生会管理系统.docx
《数据库原理课程设计报告学生会管理系统.docx》由会员分享,可在线阅读,更多相关《数据库原理课程设计报告学生会管理系统.docx(17页珍藏版)》请在冰点文库上搜索。
数据库原理课程设计报告学生会管理系统
数据库原理课程设计报告
——学生会管理系统
学院:
班级:
计科0901
学号:
姓名:
指导老师:
完成时间:
1、需求分析
所用的工具:
SQLServer2000数据库简介
SQLServer是大型的关系数据库,适合重型企业使用。
它建立于Windows的可伸缩性和可管理性之上,提供功能强大的客户/服务器平台。
随着SQLServer产品性能的不断扩大和改善,已经在数据库系统领域占有非常重要的地位。
SQLServer使用TransactSQL语言来维护,实现和访问数据库,TransactSQL是SQL的一个子集标准。
SQLServer有多种实现程序允许用户来访问它的服务,用户可以用这些实用程序对SQLServer进行本地管理或远程管理。
SQLServer2000是建立在SQLServer7.0在可伸缩性、易用性、可管理性和数据仓库成功的基础上,并且引入了针对电子商务的重要新功能。
在高性能和企业级可伸缩性领域,SQLServer2000设计成功利用Windows2000对更多处理器、更大的系统内存的支持,最终达到支持64位硬件平台。
在不断提升可用性的努力过程中,SQLServer2000采用Windows2000四路群集,提供了大大改进的群集支持。
SQLServer7.0已经在可管理性和易用性方面在行业内领先,SQLServer2000通过与Windows2000活动目录紧密结合进一步改进了这些功能。
而且,SQLServer2000还包含对现有管理工具和实用程序的重大改进,并引入更具自我调节和自我管理的引擎功能。
通过与OLAP服务、数据转换服务、存储库和英文查询的紧密结合,SQLServer7.0代表了行业内最全面的数据仓库和决策支持平台。
SQLServer2000继续了这种创新,在整个系统内进行了重要的改进。
特别重要的是,SQLServer2000关系引擎增加了实质化的视图,改善了在特大型数据库环境中执行复杂查询的性能。
同时,SQLServer2000引入了新的数据挖掘功能,可自动发现在大量数据之间隐藏的关系并可基于历史数据做出预测。
这些数据挖掘功能将要实施,以向最终用户隐藏这种尖端技术的复杂性,并允许开发人员将第三方的数据挖掘产品轻松地集成到客户的应用程序中。
最后,在电子商务领域,SQLServer2000高度集成了对XML和通过Web访问数据库的支持。
2、此次课程设计的题型及分析处理:
学生会管理系统
一.系统简要介绍:
主要实现的功能是对学生会的成员和活动等基本信息进行管理,包括浏览成员信息、活动信息,查询和统计一些成员、活动数据,修改成员活动信息等。
二.本系统由四张表组成,表结构如下:
成员表:
{成员编号,姓名,性别,班级,,部门编号}
部门表:
{部门编号,部门名称,部门人数,部门介绍}
活动表:
{活动编号,活动名称,,活动地点}
组织活动表:
{部门编号,活动编号}
(加下划线的是每个表的主键)
三.表间关系说明:
一个成员属于一个部门,一个部门包括多个成员;一个活动可由多个部门共同组织,一个部门可参与组织多个活动。
四.E-R图如下(属性略去):
n
m
m
1
成员表
活动表
部门表
组织
属于
根据表结构,可以将表完全。
完整图如下(包含属性):
成员表
学生编号
姓名
性别
班级
部门编号
属于
部门表
部门编号
部门名称
部门人数
组织
活动表
活动编号
活动名称
活动类型
活动地点
活动编号
部门编号
五.各表的简单介绍和创建代码:
1.成员表Member
字段含义
字段名称
字段类型
成员编号
memberno
CHAR(10)
姓名
membername
VARCHAR(20)
性别
sex
VARCHAR
(2)
班级
class
VARCHAR(20)
部门编号
deptno
CHAR(10)
创建成员表:
CREATETABLEMember
(
membernoCHAR(10)PRIMARYKEY,
membernameVARCHAR(20)
sexVARCHAR
(2)
classVARCHAR(20),
deptnoCHAR(10),
FOREIGNKEY(deptno)REFERENCESDept(deptno)
);
2.部门表Dept
字段含义
字段名称
字段类型
部门编号
deptno
CHAR(10)
部门名称
deptname
VARCHAR(20)
部门人数
membercount
CHAR(10)
创建部门表:
CREATETABLEDept
(
deptnoCHAR(10)PRIMARYKEY,
deptnameVARCHAR(20)NULL,
membercountVARCHAR(20)
);
3.活动表Activity
字段含义
字段名称
字段类型
活动编号
activityno
CHAR(10)
活动名称
activityname
VARCHAR(20)
活动类型
activitytype
VARCHAR(20)
活动地点
activityplace
VARCHAR(20)
创建活动表:
CREATETABLEActivity
(
activitynoCHAR(10)PRIMARYKEY,
activitynameVARCHAR2(20),
activitytypeVARCHAR2(20),
activityplaceVARCHAR2(20),
);
4.活动组织表
字段含义
字段名称
字段类型
部门编号
deptno
CHAR(10)
活动编号
activityno
CHAR(10)
创建活动组织表:
CREATETABLEOrganize
(
deptnoCHAR(10),
activitynoCHAR(10),
PRIMARYKEY(deptno,activityno),
FOREIGNKEY(deptno)REFERENCESDept(deptno),
FOREIGNKEY(activityno)REFERENCESActivity(activityno)
);
返回其所有行:
Member的数据:
membernomembernamesexclassdeptno
0001小芳023
0002小云015
0003圆圆014
0004小翔121
0005小菲013
0006小龙136
0007小锋122
Dept的数据:
deptnodeptnamemembercount
1一部100
2二部100
3三部100
4四部100
5五部100
6六部100
Activity的数据:
activitynoactivitynameactivitytypeactivityplace
001庆典校级学校
002运动会院级学校
003拔河比赛院级学校
004植树院校学校
005舞会院级学校
Organize的数据
deptnoactivityno
3001
1002
六.Insert插入数据
1.部门表数据(最先插入,否则成员表和活动组织表会因为外键约束无法插入):
insertintodeptvalues('8','主席团',3);
则dept表变为
deptnodeptnamemembercount
1一部100
2二部100
3三部100
4四部100
5五部100
6六部100
8主席团3
insertintodeptvalues('9','文艺部',4);
deptnodeptnamemembercount
1一部100
2二部100
3三部100
4四部100
5五部100
6六部100
8主席团3
9文艺部4
insertintodeptvalues('10','学习部',3');
deptnodeptnamemembercount
1一部100
2二部100
3三部100
4四部100
5五部100
6六部100
8主席团3
9文艺部4
10学习部3
2.成员表数据:
insertintomembervalues('0011','刘钟毅','1','2','01');
membernomembernamesexclassdeptno
0001小芳023
0002小云015
0003圆圆014
0004小翔121
0005小菲013
0006小龙136
0007小锋122
0011刘钟毅1201
insertintomembervalues('0012','孙悟空','1','2','01');
membernomembernamesexclassdeptno
0001小芳023
0002小云015
0003圆圆014
0004小翔121
0005小菲013
0006小龙136
0007小锋122
0011刘钟毅1201
0012孙悟空1201
insertintomembervalues('0013','姜鸥航','0','2','01');
membernomembernamesexclassdeptno
0001小芳023
0002小云015
0003圆圆014
0004小翔121
0005小菲013
0006小龙136
0007小锋122
0011刘钟毅1201
0012孙悟空1201
0013姜欧航0201
3.活动表数据:
insertintoactivityvalues(‘011','NCAA','校级','校体育馆');
activitynoactivitynameactivitytypeactivityplace
001庆典校级学校
002运动会院级学校
003拔河比赛院级学校
004植树院校学校
005舞会院级学校
011NCAA校级校体育馆
insertintoactivityvalues('012','经验交流会','院级’,’教室');
activitynoactivitynameactivitytypeactivityplace
001庆典校级学校
002运动会院级学校
003拔河比赛院级学校
004植树院校学校
005舞会院级学校
011NCAA校级校体育馆
012经验交流会院级教室
insertintoactivityvalues('13','羽毛球赛','校级','校体育馆');
activitynoactivitynameactivitytypeactivityplace
001庆典校级学校
002运动会院级学校
003拔河比赛院级学校
004植树院校学校
005舞会院级学校
011NCAA校级校体育馆
012经验交流会院级教室
013羽毛球赛校级校体育馆
4.活动组织表数据(在部门表和活动表数据之后插入,否则会因为外键约束无法插入):
insertintoorganizevalues('2','005');
deptnoactivityno
3001
1002
2005
insertintoorganizevalues('2','002');
deptnoactivityno
3001
1002
2005
2002
insertintoorganizevalues('3','011');
deptnoactivityno
3001
1002
2005
2002
3011
七.索引:
建立索引遵循的规律:
1.建立在where子句经常引用的列上,
2.经常需要排序的列上,
3.连接属性列上等
createindexorganize_indexonorganize(deptno,activityno);
--组织活动表上建立组合索引
createindexdept_indexondept(deptno);
--部门表在部门编号字段上建立索引
createindexmember_indexonmember(memberno);
--成员表在成员编号字段上建立索引
createindexactivity_indexonactivity(activityno);
--活动表在活动编号字段上建立索引
八.查询数据
1.查询三部都参与组织了哪些活动
selectactivityno,activityname
fromactivity
whereactivitynoin
(selectactivityno
fromorganize
wheredeptno=(selectdeptnofromdeptwheredeptname='三部'))
2.查询每个部门的平均年龄,并按平均年龄降序排列。
selectdeptname部门名称,avg(extract(yearfromsysdate)-extract(yearfrombirthday))平均年龄
frommemberinnerjoindept
onmember.deptno=dept.deptno
groupbydeptname
orderby2desc
3.查询男生人数超过所在部门总人数一半的部门
selectdept.deptno部门号,max(deptname)名称,max(membercount)人数
fromdeptinnerjoinmember
ondept.deptno=member.deptno
groupbydept.deptno
having(selectcount(*)frommemberwheresex='男'anddeptno=dept.deptno)>0.5*count(*)
4.查询和小芳在同一个部门但是年龄比她小的成员的基本信息
selecta.memberno,a.membername,a.sex,a.class,a.birthday,a.entertime
frommemberainnerjoinmemberb
ona.deptno=b.deptno
wherea.birthday>b.birthdayandb.membername='小芳'
九、元组的插入、删除、修改
元组的插入如上
元组的删除
DELETE
FROMMember
WHEREmemberno=’0006’;
则其结果为:
membernomembernamesexclassdeptno
0001小芳023
0002小云015
0003圆圆014
0004小翔121
0005小菲013
0007小锋122
0011刘钟毅1201
0012孙悟空1201
0013姜欧航0201
元组的修改
UPDATEMember
SETCLASS=CLASS+1
其结果为:
membernomembernamesexclassdeptno
0001小芳033
0002小云025
0003圆圆024
0004小翔131
0005小菲023
0007小锋132
0011刘钟毅1301
0012孙悟空1301
0013姜欧航0301
或
UPDATEDept
SETDEPTNO=’9’
WHEREDEPTNO=’2’;
UPDATEMember
SETDEPTNO=’9’
WHEREDEPTNO=’9’;
其结果为:
membernomembernamesexclassdeptno
0001小芳033
0002小云025
0003圆圆024
0004小翔131
0005小菲023
0007小锋139
0011小毅1301
0012孙悟空1301
0013姜欧航0301
十、视图的创建、查询、更新、删除
视图的定义:
CREATEVIEWMember_VIEW
ASSELECT*
FROMMember
WHEREdeptno='3'
视图的查询
SELECT*
FROMMember_VIEW
WHEREclass<3;
SELECT*
FROMTABLE1_VIEW
WHEREclass<3;
其结果为:
membernomembernamesexclassdeptno
0001小芳023
0005王菲013
视图的更新:
UPDATETABLE1_VIEW
SETmembername='李连杰'
WHEREclass='2';
其结果为:
membernomembernamesexclassdeptno
0001李连杰023
视图的删除:
DROPVIEW<名字>
十一、SQLSERVER2000中的用户权限及其操作
先定义一个用户LI
GRANTSELECT,UPDATEONMemberTOLIWITHGRANTOPTION
3、课程设计心得体会
经过这次的数据库课程设计的实现,我将学生会管理系统整理出来,充分的体现了现代社会是高科技时代。
1、通过运用SQLSERVER2000,将复杂的学生会系统以简单的形式体现出来:
现在要查找一名学生,知道其姓名,通过数据库,就可以了解其他相关信息。
相当的方便,节约了不少的时间;
2、通过本次课程设计,我对SQLSERVER2000的运用更加得心应手,对数据库这门语言更加的了解;但这仍然不够,我对许多知识还没有太好的掌握,有很多都是自己原来就所欠缺的,所以自己还得努力;
3、在此期间,我认识到,不能什么事情都依赖别人,任何事情都要有自己的想法,要自己去实践,才能使自己更加的成熟;
4、我通过本次实践,我意识到自己的知识还很薄弱,应该不断地加强自身的学习能力,更好的去学习,更好的去实践,做个有用的人。
欢迎下载,资料仅供参考!
!
!
资料仅供参考!
!
!