网吧管理系统数据库课程设计电子教案.docx
《网吧管理系统数据库课程设计电子教案.docx》由会员分享,可在线阅读,更多相关《网吧管理系统数据库课程设计电子教案.docx(27页珍藏版)》请在冰豆网上搜索。
网吧管理系统数据库课程设计电子教案
大型数据库课程设计
设计报告
题目:
网吧管理系统数据库
学号:
学生姓名:
指导教师:
提交时间:
2013-11-23
第1章 需求分析
1.1 需求分析任务
1.2需求分析过程
1.3数据字典和流程图
1.4系统功能分析
第2章概念结构设计
2.1概念结构设计的方法与步骤
2.2数据抽象与局部视图设计
2.3视图的集成
第3章 逻辑结构设计
3.1E-R图向关系模型的转换
3.2数据模型的优化
3.3数据库的结构
3.4数据库关系图
第4章 数据库物理结构设计
第5章 数据库完整性设计
5.1 主键及唯一性索引
5.2参照完整性设计
5.3 Check约束
5.5触发器设计
第6章数据库视图设计
第7章数据库存储过程设计
第8章权限设计
总结
参考文献
第一章需求分析
1.1需求分析的任务
调查网吧管理系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书。
最重要的是调查、收集信息、分析用户信息和上网流程。
处理要求、数据的安全性与完整性要求。
1.2需求分析的过程
网吧管理人员为方便用户,需开发一个网吧管理系统。
为便于用户安全,快速的上网,网吧把用户信息,包括姓名、身份证号、卡号、上机时间、通过此次数据库的课程设计,进一步将理论与实际相结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对灵据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,懂得了不少
有关数据库开发过程中的知识,在实验中建表,及其关系模式,关系代数的建立及理解,能将SQL语言很好的运用,增强了自己在数据库中应用SQL语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,主建与外键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的图书馆管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。
虽然不能达到完善系统,但也做到了尽善尽美,加强理论学习对完善系统会有很多帮助,不管怎么说,对这次做的课程设计自己觉得还算满意。
下机时间、级别等信息,输入网吧管理系统的客户端程序,系统经过查询网吧内电脑信息数据服务器后,为用户安排电脑。
在用户运行电脑期间,系统自动为用户计时,并根据不同用户的不同级别给出相应的单价,提示用户该缴纳的费用。
同时系统还给每个电脑分配电脑的网管进行电脑的维护,方便用户上网。
1.3数据字典与流程图
调查用户需求
1.普通用户管理需求
功能:
为每个上网用户登记信息,分配账号,有效而且安全的管理用户的信息。
2.费用管理需求
交费功能:
交费,上机时间,下机时间
3.电脑管理需求
管理查询功能:
查询电脑编号,并且查看各个编号的电脑型号
4.网管管理需求
查询功能:
网管编号,网管姓名,分区号
1.4系统功能分析
在调查完了用户需求之后,就要开始分析用户需求。
在此,我们采用自顶向下的结构化分析方法。
首先,定义全局概念结构的框架,如图2.2所示。
图1.1网吧管理系统总框架图
各子系统需要进一步细化。
旅客信息系统为例进一步细化,如图2.3所示。
用户信息系统
统计人数
查询用户信息
图1.2用户信息系统细化
以其中的查询用户信息功能为例进一步细化,如图2.4所示。
图1.3查询用户信息功能
图1.4电脑信息系统细化
图1.5费用信息系统细化
分区信息系统
查询分区号
查询电脑编号
查询分区名称
图1.6分区信息系统细化
网管信息系统
查询网管编号
查询分区号
查询网管姓名
图1.7网管信息系统细化
将所有子系统全部细化。
将所有用户需求分析完毕之后,就要开始构造数据字典了。
经分析之后,本系统要用到五个基本表:
用户信息表,电脑信息表,费用信息表,分区信息表,网管信息表。
数据结构定义如表2.1。
表1.8数据结构定义
数据结构名含义说明组成
用户信息定义了用户的有关信息卡号,身份证号,用户名,,级别
电脑信息定义了电脑有关信息电脑编号,电脑名称,单价
费用信息表定义了上网费用的有关信息卡号,电脑编号,上机时间,下机时间
分区信息表定义了电脑分区的有关信息分区号,电脑编号,分区名称
网管信息表定义了网管有关信息网管编号,分区号,网管姓名
第二章概念结构设计
2.1概念结构设计的方法与步骤
2.1.1概念结构设计的方法
概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。
对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。
2.1.2概念结构设计的步骤
第一步是进行局部视图的设计:
由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。
因此我们先逐一的设计分E-R图。
第二步是进行视图的集成:
各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。
我想采用一次集成两个分E-R图的方式。
2.2数据抽象与局部视图设计
按照图2.2系统总框架图,设计实体属性图以及局部E-R图。
图2.1用户信息实体属性图
图2.2费用实体属性图
图2.3电脑实体属性图
图2.4分区实体属性图
图2.5网管实体属性图
图2.6用户花费局部E-R图
图2.7用户使用电脑局部E-R图
图2.8电脑所属分区局部E-R图
图2.9网管管理电脑局部E-R图
2.3视图的集成
经过逐步细化再进行每两个一集成初步形成一个E-R图,最后得到图3.4总体概念结构E-R图。
图2.10系统总体结构E-R图
第三章逻辑结构设计
3.1E-R图向关系模型的转换
将图3.10总体概念结构E-R图转化成关系模型。
用户信息表(卡号,身份证号,用户名)
电脑信息表(电脑编号,电脑名称,单价)
费用信息表(卡号,电脑编号,上机时间,下机时间)
分区信息表(分区号,电脑编号,分区名称)
网管信息表(网管编号,分区号,网管姓名)
3.2数据模型的优化
将转化的关系模式进行优化,最终达到第三范式。
1、确定数据依赖
用户信息表(卡号,身份证号,用户名)根据这个关系写出数据依赖
卡号→用户名,卡号→身份证号
电脑信息表(电脑编号,电脑名称,单价)
电脑编号→电脑名称,电脑编号→单价
费用信息表(卡号,电脑编号,上机时间,下机时间)
(卡号,电脑编号)→上机时间,(卡号,电脑编号)→下机时间
分区信息表(分区号,电脑编号,分区名称)
分区号→电脑编号,分区号→分区名称,
网管信息表(网管编号,分区号,网管姓名)
网管编号→分区号,网管编号→网管姓名
2、对各关系模式间数据依赖进行极小化处理,消除冗余
卡号→用户名,卡号→身份证号,电脑编号→电脑名称
电脑编号→单价,(卡号,电脑编号)→上机时间,(卡号,电脑编号)→下机时间
分区号→电脑编号,分区号→分区名称,网管编号→分区号,网管编号→网管姓名
3、看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解
最终分解成第三范式:
(卡号,用户名,身份证号)(电脑编号,电脑名称,单价)(分区号,电脑编号,分区名称)(网管编号,分区号,网管姓名)(卡号,电脑编号,上机时间,下机时间)
3.3数据库的结构
根据总体结构图设计各表的结构,其相应标的定义如下:
表3.1用户信息系统的结构
字段名
数据类型
长度
约束
描述
Cardnumber
Varchar
10
主键
卡号
Usernumber
Varchar
20
不为空
身份证号
Username
Varchar
30
不为空
用户名
表3.2电脑信息系统的结构
字段名
数据类型
长度
约束
描述
Computernumber
Varchar
10
主键
电脑编号
Computername
Varchar
30
不为空
电脑名称
Price
Varchar
20
不为空
单价
表3.3费用信息表系统的结构
字段名数据类型
数据类型
长度
约束
描述
Cardnumber
Varchar
10
主键
卡号
Computernumber
Varchar
10
不为空
电脑编号
starttime
Varchar
20
可为空
上机时间
endtime
Varchar
20
可为空
下机时间
表3.4分区信息表系统的结构
字段名
数据类型
长度
约束
描述
Areanumber
Varchar
10
主键
分区号
Computernumber
Varchar
10
外键
电脑编号
Areaname
Varchar
30
不为空
分区名称
表3.5网管信息表系统结构
字段名
数据类型
长度
约束
描述
Managernumber
Varchar
10
主键
网管编号
Areanumber
Varchar
10
外键
分区号
Managername
Varchar
30
不为空
网管名字
3.4数据库关系图:
第四章数据库物理设计
4.1实现该设计的环境为WindowsXPProfessional+MSSQLServer2005或以上版本。
1、建立网吧管理系统数据库:
CREATEDATABASE[网吧管理系统]ONPRIMARY
(NAME=N'网吧管理系统',FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\DATA\网吧管理系统.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)
LOGON
(NAME=N'网吧管理系统_log',FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\DATA\网吧管理系统_log.ldf',SIZE=1024KB,MAXSIZE=2048GB,FILEGROWTH=10%)
2、建立管理员信息表:
CREATETABLE[dbo].[admin](
[Managernumber][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[Areanumber][varbinary](16)NOTNULL,
[Managername][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,
CONSTRAINT[PK_admin]PRIMARYKEYCLUSTERED
(
[Managernumber]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
3、建立电脑信息表:
CREATETABLE[dbo].[computer](
[Computernumber][varchar](8)COLLATEChinese_PRC_CI_ASNOTNULL,
[Computername][varchar](30)COLLATEChinese_PRC_CI_ASNOTNULL,
[price][money]NOTNULL,
CONSTRAINT[PK_computer]PRIMARYKEYCLUSTERED
(
[Computernumber]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
4、建立消费表:
CREATETABLE[dbo].[expence](
[Cardnumber][char](16)COLLATEChinese_PRC_CI_ASNOTNULL,
[Computernumber][varchar](12)COLLATEChinese_PRC_CI_ASNOTNULL,
[[starttime][datetime]NOTNULL,
[endtime][datetime]NOTNULL,
CONSTRAINT[PK_expence]PRIMARYKEYCLUSTERED
(
[Cardnumber]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
5、建立分区表:
CREATETABLE[dbo].[fenqu](
[Areanumber][varchar](8)COLLATEChinese_PRC_CI_ASNOTNULL,
[Computernumber][varchar](16)COLLATEChinese_PRC_CI_ASNOTNULL,
[Areaname][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
CONSTRAINT[PK_member]PRIMARYKEYCLUSTERED
(
[Areanumber]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
6.建立用户表:
CREATETABLE[dbo].[USER](
[Cardnumber][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[Username][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,
[Usernumber][varbinary](30)NOTNULL,
CONSTRAINT[PK_USER]PRIMARYKEYCLUSTERED
(
[Cardnumber]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
第五章 数据库完整性设计
6.1 主键及唯一性索引
表名
主键
建立唯一性索引
admin
([Managernumber])
createuniqueindexadmin
onadmin(Managernumber)
computer
([Computernumber])
createuniqueindexcomputer
oncomputer([Computernumber])
fenqu
([Areanumber])
createuniqueindexfenqu
onfenqu([Areanumber])
user
([Cardnumber])
createuniqueindexuser
onuser([Cardnumber])
expense
([Cardnumber],[Computernumber])
createuniqueindexexpense
onexpense([Cardnumber],[Computernumber])
5.2参照完整性设计
1、分区信息表中将属性电脑号设计为外键
altertablefenquaddforeignkey([Computernumber])referencescomputer([Computernumber])
2、网管信息表中将属性分区号设计为外键
altertableadminaddforeignkey(Areanumber)referencesfenqu(Areanumber)
5.3 Check约束
用户信息表中将卡号进行check约束:
check([Cardnumber]<90)因为现今网吧只有90台电脑,。
5.4触发器设计:
1、在用户信息表中建立删除用户触发器
createtrigger删除用户on用户信息
fordeleteas
declare@卡号varchar(12)
select@卡号=[Cardnumber]fromdeleted
declare@卡号varchar(12)
select@卡号=[Cardnumber]from用户信息
where[Cardnumber]=(select[Cardnumber]from消费信息)
begin
deletefrom用户信息where[Cardnumber]=@卡号
if(@卡号=@卡号)
begin
deletefrom[Cardnumber]where[Cardnumber]=@卡号
deletefrom[Username]where[Cardnumber]@卡号
deletefrom[Usernumber]where[Cardnumber]=@卡号
end
end
2.创建DDL触发器,当删除数据库一个表时,提示“不能删除表”,并会滚是删除表的操作。
USE网吧管理系统
GO
createtriggertable_delete
onDATABase
AFTERDROP_TABLE
AS
PRINT'不能删除表'
rollbacktransaction
3.
第6章数据库视图设计
1.建立用户信息视图:
CREATEVIEW[dbo].[用户信息]
AS
SELECTdbo.[user].*,[Cardnumber]ASExpr1,[Username]ASExpr2,[Usernumber]ASExpr3
FROMdbo.[user]
GO
2.建立管理员信息视图:
CREATEVIEW[dbo].[管理员信息]
AS
SELECTdbo.admin.*,[Managernumber]ASExpr1,[Areanumber]ASExpr2,[Managername]ASExpr3
FROMdbo.admin
GO
3.建立电脑信息视图:
CREATEVIEW[dbo].[电脑信息]
AS
SELECTputer.*,[Computername]ASExpr1,[Computernumber]ASExpr2,priceASExpr3
FROMputer
GO
4.建立分区信息视图:
CREATEVIEW[dbo].[分区信息]
AS
SELECTdbo.fenqu.*,[Areanumber]ASExpr1,[Computernumber]ASExpr2,[Areaname]ASExpr3
FROMdbo.fenqu
GO
5.建立查看还在上网人信息视图:
CREATEVIEW[dbo].[查看还在上网的人信息]
AS
SELECTdbo.[user].[Cardnumber]ASExpr1,dbo.[user].[Username],dbo.[user].[Usernumber],dbo.expense.[starttime],dbo.expense.[Computernumber]
FROMdbo.[user]INNERJOIN
dbo.expenseONdbo.[user].[Cardnumber]=dbo.expense.[Cardnumber]
WHERE(dbo.expense.[endtime]ISNULL)
GO
5.建立查看00区电脑信息视图:
CREATEVIEW[dbo].[查看分区的电脑信息]
AS
SELECTputer.price,puter.[Computernumber],dbo.fenqu.[Areanumber],puter.[Computername],dbo.fenqu.[Areaname]
FROMdbo.fenquINNERJOIN
puterONdbo.fenqu.[Computernumber]=puter.[Computernumber]
WHERE(dbo.fenqu.[Areanumber]='00')
GO
第7章数据库存储过程设计
1、建立增加管理员信息存储过程
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATEPROCEDUREadminadd
(
@[Managernumber]varchar(10),@[Areanumber]varchar(50),@[Managername]varchar(20)
)
AS
BEGIN
insertintocomputer
values(
@[Managernumber],@[Areanumber],@[Managername]
)
END
GO
1、建立增加电脑信息存储过程
USE网吧管理系统
GO
createprocedurecomputeradd
(
@[Computernumber]varchar(50),@[Computername]varchar(30),@pricemoney
)
AS
BEGIN
INSERTINTOCOMPUTER
VALUES(
@[Computernumber],@[Computername],price
)
END
RETURN
GO
第8章权限设计
.角色及权限的分配
按照SQLServer2008里固定的角色分配
根管理员:
db_owner
总结
通