您的当前位置:首页机房管理系统数据库设计

机房管理系统数据库设计

2024-09-12 来源:爱问旅游网
学院机房管理系统 数据库设计说明书

设计人: _________ 学号: _____________ 班级: _______________ 学院: ________________

目录

一、 需求分析

1. 业务流程图

2. 数据流图 3. 数据字典

二、 概念设计

1、 实体届性图

2、 全局E-R图

三、 逻辑设计

1、 表问关系图

2、 关系模式

四、 数据库实现

1、 创建数据库

2、 创建表

2、创建存储过程和触发器

一、需求分析

针对一般高校机房管理系统的需求分析、通过对学生上机过程、教学班上机过程、注 册过程、充值过程、的内容的数据流程分析一现设计如下数据项和数据结构 (1) 机房基本信息:包括机房号、机房名、计算机数目、管理人等 (2) 计算机基本信息:包括计算机 IP地址、编号、机房号、品牌、备注等

(3) 学生基本信息:包括学号、姓名、性名、行政班等 (4) 用户基本信息:包括用户名、学号、密码、余额等

(5) 学生充值基本信息:包括用户名、充值时间、金额、办理人等 (6) 机房收费标准基本信息:包括机房号、金额等 (7)

上机时间、下机时间、学号、

上机类型等 (8)

期、统计时间、费用等

机房费用统计基本信息:包括计算机 IP地址、日

学生上机过程登记基本信息: 包括计算机IP地址、日期、

1. 业务流程图

2. 数据流图

入录充值金额 上机时间 下机回* 费理- 二机总螺. 3. 数据字典

room(机房表) 字段名 rno rname number

数据类型 int char(10) smallint char(10) 能否为空 否 否 能 否 是否为主键 是 否 否 否 说明 机房号 机房名 计算机数目 管理人 manager computer(计算机表) 字段名 IP cno rno brand 数据类型 char(20) smallint int Char(20) Varchar(100) 能否为空 否 否 否 能 能 是否为主键 是 否 否 否 否 _ 说明 计算机IP地址 编勺 机房号 品牌 备注 note Student(学生表) 字段名 sno

数据类型 Int Char(10) 能否为空 否 否 是否作为主键 是 否 说明 学号 姓名 sname

sex class Char(2) Char(20) 台匕 目匕 台匕 目匕 否 否 性别 行政班 Usertable (用户表) 字段名 数据类型 uname sno pword

能否为空 否 否 否 能 是否作为主键 是 否 否 否 说明 用户名 学号 密码 余额 Char(20) int Char(20) money money Prepaid(充值表) 字段名 数据类型 uname ptime pmoney

能否为空 否 否 否 否 是否作为主键 是 是 否 否 说明 用户名 充值时间 金额 收费人员 Char(20) datetime smallmoney Char(10) trans Standard(收费标准表) 字段名 rno stime

数据类型 int Char(20) smallmoney 能否为空 否 否 否 是否作为主键 是 是 否 说明 机房号 时间段 金额/小时 smoney Record (上机过程登记表) 字段名 数据类型 IP begintime sno endtime

能否为空 否 否 否 能 否 是否作为主键 是 是 否 否 否 说明 计算机IP地址 上机时间 学号 下机时间 上机类型 「 char(20) datetime Int datetime Char(15) type statistik (机房费用统计表) 字段名 IP dates Sno moneys 数据类型 char(20) datetime int smallmoney 能否为空 否 否 否 否 是否作为主键 是 是 否 否 说明 计算机IP地址 日期 学号 费用 「 二、概念设计

1、实体届性

图一机房实体E-R图 图二学生实体E-R图

2、全局E-R图

三、逻辑设计

1、表间关系

Pfgpaid* _____________ . *

_ usertoble

2、关系模式

机房(机房号,机房名,机器数目,管理人) 学生(学号,姓名,性别,行政班) 计算机(编号,机房号,品牌,备注) 用户(用户名,学号,密码,余额)

四、数据库实现

1、创建数据库

1、创建数据库

create database room

on (name='room_data',

filename='E:\\room\\data\\room_data', size=5MB,

maxsize=10MB, filegrowth=1MB )

log on (

name='room_log',

filename='E:\\room\\log\\room_log', size=5MB,

maxsize=10MB, filegrowth=1MB )

2、 room(机房表)的创建 create table room (

rno int not null primary key, rname char(10) not null, number smallint null, manager char(10) not null )

3、 computer(计算机表)的创建 create table computer (

IP char(20) not null primary key, cno smallint not null , rno int not null, brand char(20) null, note varchar(50) null )

4、 student(学生表)的创建 create table student (

sno int not null primary key, sname char(10) not null, sex char(2) null, class char(20) not null

2、创建表

6、 User (用户表)的创建 create table usertable (

uname char(20) not null primary key, sno int not null,

pword char(20) not null, moneys money null, ) 7、 prepaid(充值表)的创建 create table prepaid (

uname char(20) not null, ptime datetime not null, pmoney smallmoney not null, trans char(10) not null,

constraint p_primary primary key(uname,ptime) ) 8、 standard(收费标准表)的创建 create table standard (

rno int not null, stime char(20) not null,

smoney smallmoney not null, constraint c_primary primary key(rno,stime) )

11、 record (上机过程登记表)的创建 create table record (

IP char(20) not null, sno int not null,

begintime datetime not null, endtime datetime null, type char(15) not null,

constraint t1 primary key(IP,begintime) )

12、 statistik(费用统计表)的创建 create table statistik (

IP char(20) not null,

dates datetime not null, sno int not null,

moneys smallmoney not null, constraint t2 primary key(IP,dates) )

2、创建存储过程和触发器

1、 创建存储过程实现各机房上机费用的统计 1)代码

create proc s_room(@rno int) as

select rname 机房名,sum(moneys)费用 from statistik inner join computer

on computer.IP=statistik.IP inner join room on room.rno=computer.rno where room.rno=@rno group by rname

2、 创建触发器实现费用登记时,自动修改该生的账户余

额。

1) 代码

create trigger u_money on statistik for insert as

update usertable

set moneys=moneys-(select moneys from inserted) where sno=(select sno from inserted) 2) 数据测试

查询插入记录前学生的余额

select sno 学号,moneys 余额 from usertable

where sno=2011508092

执行插入操作 insert into statistik

values('001',getdate(),101,2.5)

查询插入记录学生的余额

select sno 学号,moneys 余额 from usertable

where sno=2011508092

3.创建触发器实现充值时自动修改该生余额 1) 代码

create trigger un_money on prepaid for insert as

update usertable

set moneys=moneys+(select pmoney from inserted) where uname=(select uname from inserted)

2) 数据测试

select sno 学号,moneys 余额 from usertable where sno=2011508092 go

insert into prepaid

values('bbb',getdate(),5,'个 vga ') go

select sno 学号,moneys 余额 from usertable where sno=2011508092 go

select * from prepaid

因篇幅问题不能全部显示,请点此查看更多更全内容