2.5 数据库实施阶段
2.5.1 建立数据库
用SQL语句建立数据库,具体定义如下:
create database hotel
2.5.2 建立数据表
用SQL语句建立数据表,具体定义如下:
create table customer
(Cno char(10),
Cname char(10),
Cage int,
Csex char(2),
IDno char(18),
primary key(Cno)
)
create table room
(Rno char(10),
Rtype char(10),
Rstatus char(4),
Rprice int,
primary key(Rno)
)
create table information
(Cname char(10),
Rno char(10),
IDno char(18),
Thedate datetime,
days int
primary key(Cname,Rno)
)
create table checkout
(Cno char(10),
Rno char(10),
primary key(Cno)
)
create table menu
(Sname char(10),
Sprice int,
primary key(Sname)
)
create table service
(Rno char(10),
Sname char(10),
Samount int,
primary key(Rno,Sname)
)
2.5.3 数据库入库
本次数据采用Excel表导入的方法导入数据。数据导入后基本表如下所示:
1. 基本表—customer
2. 基本表 room。
3. 基本表 menu。
4. 基本表 information。
5. 基本表 service
6. 基本表checkout
2.6 调试与测试
2.6.1 触发器定义
定义房间信息在有人入住之后更新的触发器
create trigger in_status
on information
after insert,update
as
declare @Rno char(10)
select @Rno = Rno
from inserted
update room
set Rstatus = '满'
where room.Rno = @Rno
定义房间信息在有人退房之后更新的触发器
create trigger out_status
on checkout
after insert,update
as
declare @Rno char(10)
select @Rno = Rno
from inserted
update room
set Rstatus = '空'
where room.Rno = @Rno
2.6.2 视图的定义
建立空房间信息视图
create view view_eroom
as
select *
from room
where Rstatus = '空'
建立满房间视图
create view view_froom
as
select *
from room
where Rstatus = '满'
建立客房所有顾客应缴纳的房间费用视图
create view view_roomcost(Cname,rcost)
as
select information.Cname,Rprice*Days
from room,information
where room.Rno in
(select Rno
from information
) and information.Rno=room.Rno
建立所有顾客应缴纳服务费用的视图
create view view_servicecost(Rno,cost)
as
select service.Rno,sum(Samount*Sprice)
from menu,service
where menu.Sname=service.Sname
group by service.Rno
建立顾客应缴纳的总费用的视图
create view view_allcost(Rno,allcost)
as
select view_servicecost.Rno,cost+Rprice*Days
from view_servicecost,room,information
where view_servicecost.Rno=room.Rno and room.Rno = information.Rno
2.6.3 存储过程定义
建立查询某个房间信息的存储过程
create procedure roominf
@Rno char(10)
as
select *
from room
where Rno = @Rno
roominf '101'
建立查询某个房间价格的信息的存储过程
create procedure priceinf
@pRno char(10)
as
select Rprice
from room
where Rno = @pRno
priceinf '101'
建立某个房间状态的存储过程
create procedure statusinf
@sRno char(10)
as
select Rstatus
from room
where Rno= @sRno
某个客人入住,建立存储过程更新房间信息
create procedure updateinf
@P_Cname char(10),
@P_Rno char(10),
@P_IDno char (18),
@P_Thedate datetime,
@P_Days int
as
insert into information
values(@P_Cname,@P_Rno,@P_IDno,@P_Thedate,@P_Days)
2.6.4 数据操纵验证
数据操纵验证见附录
3 收获与体会
经历了两周的数据库课程设计,我从开始只知道写几句SQL语句到对数据库设计有了一个全新的认识,从理论上升到了实践的高度,收获颇丰。
在实习的过程当中,我遇到了很多问题,特别是在开始需求分析阶段,觉得什么也不会做,什么也不知道去做。后来在网上了解到了好多关于客房管理的知识,对数据库设计也有了一定的了解,在自己的努力下和老师悉心教导了下,我学到了课堂上学不到的很多东西,虽然也被老师批评过,但是批评之后,我对知识的记忆将更加深刻。
从中我知道了,只要我们不畏艰辛,坚持不懈,我们能做到很多不敢想不敢做的事情,经历风雨,就是彩虹!
4 存在的问题与建议
4.1 存在问题
1. 对书本知识不熟悉,课程设计过程当中需要不断的查阅课本,这样造成了时间的浪费。
2. 对SQL Server 2000 操作不熟悉,导致导入数据是经常出错,造成了一些不必要的麻烦,应该提高操作熟练程度。 |