1、 南京师范大学 2012-2013 学年 第二学期数据库系统课程设计课程设计报告姓 名: 焦伊凡学 号: 18103133班 级: 1031专 业:信息管理与信息系统(物流方向)学 院: 中北学院指导教师: 殷奕题 目:运动会管理系统课程设计报告提交日期: 2013-6-14一设计目的: 3二、实验平台: 31、visio 2003 :E-R 图; 32、SQL 2005。 .3三、试题内容: 3四、设计步骤 31. 需求分析 .32. 概念结构设计 .5(1) 抽象出实体,并画出各实体的 E-R 图; 5(2) 分析各实体之间的联系及类型,设计运动会管理系统总体 E-R图。53. 逻辑结构设
2、计 .54. 数据库物理设计与实现 .6(1) 建立“运动会管理系统”数据库 .6(2) 建立基本表 .7(3) 管理基本表 8(4) 使用 Insert 语句插入数据,各表中的数据如下: .9(5) 建立和管理视图 13(6) 建立和管理索引 145. 数据库访问 14数据查询: 14数据更新: 176. 数据库备份 21(1) 使用 SQL 语句备份数据库 .21五、 课程设计小结: 22六、主要参考文献: .23一设计目的:按照关系型数据库的基本原理,综合运用所学知识,完成运动会管理数据库应用系统的设计全过程,包括需求分析、数据库设计、数据库建立,数据输入、应用系统的设计和开发、用户界面
3、的设计和实现、系统安装和调试。通过对一个实际问题的分析、设计实现,将原理与应用结合,学会学以致用,并能够解决实际问题。二、实验平台:1、visio 2003 :E-R 图;2、SQL 2005。三、试题内容:根据给定的“运动会管理系统”的需求分析,完成概念结构设计、逻辑结构设计、数据库的物理设计、数据库的访问和数据库维护等内容,并提交完整的课程设计报告。四、设计步骤1. 需求分析引入计算机管理运动会,运动可以在运动会管理系统中查询自己的比赛项目及比赛结果,裁判员或工作人员可以通过系统记录运动员各个比赛项目的成绩、进行成绩统计等。运动会管理系统保存运动员、比赛项目以及不同类型的比赛的参数数据。
4、对于运动员来说:可以查看运动员所在代表队的名称、领队、本代表队的总积分、总名次;查看运动员参加比赛的项目、每个项目的成绩、积分等。 对于管理员来说:可以记录并查看运动员参加比赛项目的成绩、积分、名次;查看各代表队的总积分、总名次等。 运动会管理系统同主要管理对象有代表队、运动员、比赛项目等。对于代表队,需要有代表队号、代表队的名称、领队、本代表队的总积分、总名次等属性;对于运动员需要有运动员号、姓名、年龄、性别等属性;对于比赛项目,需要有项目号、项目类别、项目名称、成绩单位等属性。 在运动会管理系统中,基本规定为:一个代表队包含多个运动员,一个运动员只能属于一个代表队;一个运动员可以参加多个比
5、赛项目,一个比赛项目也可以被多个运动员参加;假设各个比赛项目结束后,按照成绩由高到低排出名次,并对前 3 名运动员给予相应的积分,如第 1、2、3 名分别积分为 3 分、2 分、1 分,而获得其他名次的运动员积分为 0分,将代表队中所有成员的积分累加,得到各代表队总积分,将总积分由高到低排序,得到各个代表队的排名情况。为简化系统需求,本系统只考虑代表队、运动员、比赛项目的关系,其他关系不考虑。2. 概念结构设计(1) 抽象出实体,并画出各实体的 E-R 图;(2) 分析各实体之间的联系及类型,设计运动会管理系统总体 E-R 图。 3. 逻辑结构设计逻辑结构设计:根据 E-R 图,设计运动会管理
6、数据库的关系模式。(1) 、运动员(运动员号,姓名,年龄,性别);(2) 、代表队(代表队号,队名称,领队,总积分,总名次);(3) 、比赛项目(项目号,项目类别,项目名称,成绩单位);(4) 、参加(运动员号, 项目号,成绩,积分,名次) 。4. 数据库物理设计与实现(1) 建立“运动会管理系统”数据库其初始大小为 100MB,增长率为 10%,数据文件和日志文件名分别为:“运动会管理系统_data”和“运动会管理系统_log” ,存储路径为“E:data”文件夹下。创建运动会数据库 SQL代码如下:CREATE DATABASE 运动会管理系统 -创建数据库 ON(NAME=运动会管理系统
7、 1_data, -主数据文件的逻辑名FILENAME=E:data运动会管理系统.mdf , -主数据文件的物理名SIZE=100MB, -初始大小MAXSIZE=200MB,FILEGROWTH=10% -增长率) LOG ON (NAME=运动会管理系统 1_log, -日志文件的逻辑名FILENAME=E:data运动会管理系统.ldf , -日志文件的物理名SIZE=1MB,MAXSIZE=20MB,FILEGROWTH=10%)GO(2) 建立基本表创建代表队表创建代表队表 SQL代码:CREATE TABLE 代表队(代表队号CHAR(10 ) NOT NULL PRIMARY
8、KEY,队名称CHAR(20 ) NOT NULL,领队CHAR (10) NOT NULL,总积分INT NOT NULL CHECK(总积分=0),总名次INT NOT NULL CHECK(总名次=0),) 创建运动员表创建运动员表 SQL代码:CREATE TABLE 运动员(运动员号CHAR(6) NOT NULL PRIMARY KEY,姓名CHAR (10) NOT NULL,性别CHAR (10) NOT NULL CHECK(性别= 男 or 性别=女 ),年龄Tinyint NOT NULL CHECK(年龄 1 and 年龄= 0 ),名次Tinyint CHECK (名
9、次= 0 ),CONSTRAINT 运动会管理系统 _比赛详情_ 运动员号 FOREIGN KEY (运动员号) REFERENCES 运动员(运动员号),CONSTRAINT 运动会管理系统 _比赛详情_ 项目号 FOREIGN KEY (项目号) REFERENCES 比赛项目(项目号),)(3) 管理基本表(3-1) 向运动员表中增加“身高”列,其数据类型为整型。SQL代码:alter table 运动员 add 身高 INT NULL原运动员表:增加了身高列:(3-2) 将运动员表中的“身高”的数据类型改为浮点型。SQL代码:alter table 运动员 alter column 身
10、高 float(3-3) 为运动员表中的“身高”属性增加取值必须大于 0 的约束条件。SQL代码:alter table 运动员 add constraint 运动会管理系统_运动员_身高 check(身高0) (3-4) 删除运动员表中的“身高”列。alter table 运动员drop constraint 运动会管理系统_运动员_身高alter table 运动员drop column 身高身高列已删除:(4) 使用 Insert 语句插入数据,各表中的数据如下:(4-1) 代表队表数据SQL代码:代表队insert into 代表队values (GLXY,管理学院, 吴道福,7,2)
11、insert into 代表队 values (JSJXY,计算机学院 ,张鹏, 6,3)insert into 代表队 values (SXXY,数学学院,宋威,3,4)insert into 代表队 values (WYXY,外语学院,王光明,8,1)打开代表队表:(4-2) 运动员表数据SQL代码:insert into 运动员values (G11001,钱翔 ,男 ,14,GLXY)insert into 运动员values (G11002,吴帆 ,男 ,16,GLXY)insert into 运动员values (G11003,石乔乔 ,女 ,16,GLXY)insert into
12、 运动员values (G11004,张桂芳 ,女 ,19,GLXY)insert into 运动员values (G11005,洪雪 ,女 ,18,GLXY)insert into 运动员values (J11001,张月 ,女 ,19,JSJXY)insert into 运动员values (J11002,田楠 ,男 ,18,JSJXY)insert into 运动员values (J11003,赵恒博 ,男 ,18,JSJXY)insert into 运动员values (J11004,徐铜铃 ,男 ,15,JSJXY)insert into 运动员values (J11005,李明 ,
13、男 ,16,JSJXY)insert into 运动员values (S11001,崔天齐 ,男 ,18,SXXY)insert into 运动员values (S11002,王尹 ,女 ,16,SXXY)insert into 运动员values (S11003,刘冰洁 ,女 ,18,SXXY)insert into 运动员values (S11004,杨中华 ,男 ,15,SXXY)insert into 运动员values (S11005,李雪平 ,女 ,15,SXXY)insert into 运动员values (W11001,叶星 ,男 ,18,WYXY)insert into 运动
14、员values (W11002,顾羽翔 ,男 ,16,WYXY)insert into 运动员values (W11003,袁建明 ,男 ,15,WYXY)insert into 运动员values (W11004,刘琼 ,女 ,17,WYXY)insert into 运动员 values (W11005,孟储强 ,男 ,19,WYXY)打开运动员表:(4-3) 比赛项目表数据SQL代码:insert into 比赛项目values (JS001M,径赛 ,男子米 ,秒)insert into 比赛项目values (JS002W,径赛 ,女子米 ,分钟)insert into 比赛项目val
15、ues (TS001M,田赛 ,男子三级跳远 ,米)insert into 比赛项目 values (TS002W,田赛 ,女子铅球 ,米)打开比赛项目表:(4-4) 比赛详情表数据SQL代码:insert into 比赛详情values (S11001,JS001M ,12.91,3,1)insert into 比赛详情values (J11005,JS001M ,13.15,2,2)insert into 比赛详情values (J11002,JS001M ,13.19,1,3)insert into 比赛详情values (S11004,JS001M ,13.55,0,4)insert
16、into 比赛详情values (W11004,JS002W ,1.24 ,3,1)insert into 比赛详情values (J11001,JS002W ,1.25 ,2,2)insert into 比赛详情values (G11004,JS002W ,1.32 ,1,3)insert into 比赛详情values (G11003,JS002W ,2.02 ,0,4)insert into 比赛详情values (W11005,TS001M ,5.47 ,3,1)insert into 比赛详情values (W11002,TS001M ,5.15 ,2,2)insert into 比
17、赛详情values (J11003,TS001M ,5.11 ,1,3)insert into 比赛详情values (S11004,TS001M ,4.98 ,0,4)insert into 比赛详情values (G11004,TS002W ,5.72 ,3,1)insert into 比赛详情values (G11003,TS002W ,5.38 ,2,2)insert into 比赛详情values (G11005,TS002W ,5.21 ,1,3)insert into 比赛详情 values (W11004,TS002W ,5.02 ,0,4)打开比赛详情表:(5) 建立和管理视
18、图(5-1) 生成一张“项目类别”为“田赛”的视图,并将该视图命名为“田赛项目” 。create view 田赛项目as select * from 比赛项目where 项目类别= 田赛打开田赛项目视图:(5-2) 生成一张“项目类别”为“径赛”的视图,并将该视图命名为“径赛项目” 。create view 径赛项目 as select * from 比赛项目 where 项目类别= 径赛打开径赛项目视图:(6) 建立和管理索引(6-1) 为运动员表中的“姓名”建立次索引。create index sportname on 运动员(姓名)(6-2) 为项目表中的“项目类别”建立次索引。crea
19、te index classification on 比赛项目(项目类别)5. 数据库访问数据查询:(1) 查询姓名为“杨中华”的运动员的运动员号和所在的代表队号。select 运动员. 运动员号,运动员.代表队号from 运动员where 姓名= 杨中华(2) 查询代表队号为“JSJXY”的所有成员姓名。select 姓名from 运动员where 代表队号= JSJXY(3) 统计项目名称为“男子 100 米”比赛的参赛运动员名称、年龄、项目号、项目名称、成绩,并按成绩由高到低排列。select 运动员. 姓名,运动员.年龄, 比赛详情.项目号, 比赛项目.项目名称,比赛详情.成绩from
20、 运动员 ,比赛详情,比赛项目where 比赛详情 .项目号= 比赛项目. 项目号and 运动员.运动员号= 比赛详情.运动员号and 项目名称= 男子米order by 比赛详情 .成绩desc(4) 查询“杨中华”参加的比赛项目的情况。select 运动员. 姓名,比赛详情.运动员号, 比赛详情.项目号,比赛项目.项目名称,比赛详情.成绩,比赛详情.积分,比赛详情 .名次from 运动员 ,比赛项目,比赛详情where 比赛详情 .项目号= 比赛项目. 项目号and 运动员.运动员号= 比赛详情.运动员号and 姓名= 杨中华(5) 列出运动员号为“G1104”的运动员的所有的个人信息及比
21、赛信息。select 比赛详情. 运动员号, 运动员.姓名, 运动员.性别,运动员.年龄,运动员.代表队号,比赛详情.项目号, 比赛项目.项目类别,比赛项目.项目名称,比赛详情.成绩, 比赛详情.积分, 比赛详情 .名次from 运动员,比赛项目,比赛详情where 比赛详情 .项目号= 比赛项目. 项目号and 运动员.运动员号= 比赛详情.运动员号and 运动员.运动员号= G11004(6) 统计代表队号为“JSJXY”的参加比赛的各个运动员的积分情况,并且按积分由大到小的顺序排序。select 比赛详情. 运动员号, 运动员.姓名, 比赛详情.积分from 运动员 ,比赛详情where
22、 运动员 .运动员号= 比赛详情. 运动员号and 运动员.代表队号=JSJXYorder by 比赛详情 .积分desc(7) 统计所有比赛项目中,同一个运动员号的运动员的积分情况。Select 运动员. 运动员号,运动员.姓名, 比赛项目.项目号,比赛详情.积分from 运动员 ,比赛详情,比赛项目where 比赛项目 .项目号= 比赛详情. 项目号and 比赛详情.运动员号=运动员. 运动员号(8) 查询个人总积分大于等于 3 的运动员的情况。Select 运动员. 运动员号,运动员.姓名, 运动员.性别, 运动员.年龄,运动员.代表队号from 运动员 ,比赛详情where 运动员 .
23、运动员号= 比赛详情. 运动员号and 比赛详情.积分=3数据更新:(1) 增加一名新的运动员,要求运动员号:S11006;姓名:王林;性别:男;年龄:17;代表队号:SXXY。insert into 运动员(运动员号,姓名,性别, 年龄,代表队号)values(S11006,王林, 男 ,17,SXXY)原来未增加运动员的运动员表:增加了运动员的运动员表:(2) 将“王林”的年龄更新为 16。update 运动员set 年龄=16 where 姓名= 王林原来王林的年龄为 16,年龄家 1后为 17:(3) 将运动员号为“S11006”的运动员的代表队号更新为“GLXY” 。update 运
24、动员set 代表队号= GLXY where 运动员号=S11006修改前运动员号为S11006的运动员队号为:SXXY,修改后为GLXY:(4) 将所有运动员的年龄加 1。update 运动员 set 年龄=年龄 +1年龄增加前后运动员表年龄对比表:(5) 由于测算问题,需要将项目号为“TS001M”的比赛成绩全部减少 0.5 米。update 比赛详情set 成绩= 成绩-0.5 where 项目号=TS001M项目号为TS001M的成绩减少前后对比表:(6) 删除运动员号为“S1106”的运动员信息。Delete from 运动员where 运动员号= S11006删除后的运动员表:(运
25、动员号为: S1106的王林运动员已被删除)6. 数据库备份(1) 使用 SQL 语句备份数据库(1-1) 创建备份设备SQL代码:EXEC sp_addumpdevice DISK,mybackup1,D:sqlmybackup(1-2) 备份数据库BACKUP DATABASE 运动会管理系统 To DISK=D:sql运动会管理系统.BAK5、课程设计小结:通过这学期对 SQL Server2005的实践设计,结合本学期对 SQL Server2005的学习,使我较为熟练的掌握了 SQL Server2005的使用。 这很大部分是老师的功劳。这次我设计了一个“运动会管理系统”的数据库。通
26、过本次的试验,我基本掌握了设计一个数据库的方法。在这次课程设计中,我体会了专注地工作的滋味。翻书本,搜资源,请教老师和同学,循序渐进,一边做设计,一边学习到了设计之外的东西。凡事要耐心专心,这样,事情就可以做好。在做设计的时候,是一个学习认识的过程,在这个过程中,我受到了很多启发,获益菲浅。由于我对编程和 SQL语句的不熟悉,在这方面遇到了不少问题,不过老师将上次所设计的“图书管理系统”数据库的代码发给了我们,在代码上给了我很大的帮助。由于自己知识的不足,在设计数据库时出现了不少大大小小的问题。一个小小的、不经意的错误都可以让你百思不得其解。这就要求我们在做课程设计时一定要小心又小心,千万不能有一丝的马虎。一个极小的错误足让你所有的心血化为乌有。 另外,在这次的课程设计中,我得到了老师和同学的热心帮助,在此要感谢老师和同学。很多时候,同学间的互助是较为直接和快捷的。同学之间还可以互相讨论,研究。许多的问题就是这样发现和得以解决的,也因此,我们同学间的合作更加紧密了。六、主要参考文献:1、 软件工程及实践 ,电子工业出版社,窦万峰,郑阿奇。2、 数据库技术与应用 ,清华大学出版社,顾斌。3、 数据库系统原理教程 ,清华大学出版社,王珊、陈虹;