大数据库项目 酒店管理系统.docx
《大数据库项目 酒店管理系统.docx》由会员分享,可在线阅读,更多相关《大数据库项目 酒店管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
大数据库项目酒店管理系统
酒店管理系统
系别:
信息管理系
班级:
信息14005
:
江东流
学号:
1.需求描述
一家酒店有多个部门,每个部门拥有自己的部门号、名称、部门经理、办公地点和一定数量员工。
每个员工有员工号,,性别,年龄,工资,部门号,职务等属性。
每个顾客有顾客编号,,年龄,性别,号,级别等属性,号必须填写且唯一;根据累计消费等途径,将顾客分为不同的VIP等级,级别对应折扣级别。
酒店的客房有不同的种类可供选择,由唯一的客房号标识,位置记录每个房间的位置,状态表示此房间此时的状态,空闲、预约、有客等等。
相同类型的客房价格一样,每个类型的客房有一定的总量,可以查询剩余的数量以供选择。
酒店各部门还提供如KTV、网吧、洗衣等额外收费服务。
不同项目价格不同。
不同项目在不同地点进行。
酒店房间可以预约,每人每天只能预约一次,但可以多次更改之前的预约容。
付款时会产生唯一的款项编号,每一笔款项由一个员工进行处理,根据折扣级别给出应收款和实际收款。
2.概念结构设计
员工实体ER图
部门实体ER图
项目实体ER图
顾客实体ER图
客房实体ER图
类型实体ER图
款项实体ER图
折扣实体ER图
全局ER图
3.逻辑结构设计
员工(员工号,,性别,年龄,工资,部门号,职务,备注);
部门(部门号,名称,部门经理,办公地点,员工数量);
款项(款项编号,顾客号,员工号,时间,折扣级别,应收款,实际收款);
折扣(折扣级别,折扣情况);
项目(项目编号,项目名称,部门号,所在位置,收费标准);
选择(顾客号,项目号,发生时间,备注);
顾客(顾客编号,,年龄,性别,号,级别,备注);
客房(客房号,类型编号,位置,状态,备注);
类型(类型编号,类型名称,费用,总量,剩余量);
预约(顾客号,客房号,预约时间,备注)
住宿(顾客号,客房号,入住时间,离开时间);
员工表:
列名
数据类型
约束条件
员工号
Char(10)
主码
Char(10)
非空
性别
Char
(2)
非空
年龄
Int
工资
Int
部门号
Char(10)
外码,参照部门表中的部门号
职务
Char(10)
备注
Varchar(100)
部门表:
列名
数据类型
约束条件
部门号
Char(10)
主码
名称
Char(20)
非空
部门经理
Char(10)
外码,参照员工表中的
办公地点
Char(10)
员工数量
Int
大于等于0
款项表:
列名
数据类型
约束条件
款项编号
Char(10)
主码
顾客号
Char(10)
外码,参照顾客表的顾客号
员工号
Char(10)
外码,参照员工表的员工号
时间
Datetime
折扣级别
Int
外码,参照折扣表的折扣级别
应收款
Dec(6,2)
非空
实际收款
Dec(6,2)
非空
折扣表:
列名
数据类型
约束条件
折扣级别
Int
主码
折扣情况
Dec(3,2)
项目表:
列名
数据类型
约束条件
项目编号
Char(10)
主码
项目名称
Char(10)
非空
部门号
Char(10)
外码,参照部门表的部门号
所在位置
Char(10)
收费标准
Int
大于等于0
选择表:
列名
数据类型
约束条件
顾客号
Char(10)
联合主码;外码,参照顾客表的顾客号
项目号
Char(10)
联合主码;外码,参照项目表的项目编号
发生时间
Datetime
联合主码
备注
Varchar(100)
顾客表:
列名
数据类型
约束条件
顾客编号
Char(10)
主码
Char(10)
非空
年龄
Char
(2)
性别
Char
(2)
非空
号
Char(18)
非空;唯一
级别
Int
备注
Varchar(100)
客房表:
列名
数据类型
约束条件
客房号
Char(10)
主码
类型编号
Char(10)
外码,参照类型表的类型编号
位置
Char(10)
非空,唯一
状态
Char(4)
备注
Varchar(100)
类型表:
列名
数据类型
约束条件
类型编号
Char(10)
主码
类型名称
Char(10)
非空
费用
Dec(6,2)
大于等于0
总量
Int
大于等于0
剩余量
Int
大于等于0
预约表:
列名
数据类型
约束条件
顾客号
Char(10)
联合主码;外码,参照顾客表的顾客号
客房号
Char(10)
联合主码;外码,参照客房表的客房号
预约时间
Datetime
联合主码
备注
Varchar(100)
住宿表:
列名
数据类型
约束条件
顾客号
Char(10)
联合主码;外码,参照顾客表的顾客号
客房号
Char(10)
联合主码;外码,参照客房表的客房号
入住时间
Datetime
联合主码
离开时间
Datetime
4.物理设计
员工会经常查询自己的工资,在员工表的(工资)创建索引;
顾客每次付款时都会要查询具体的折扣详情,在折扣表的(折扣详情)创建索引;
顾客选择项目时只会给出项目名称,所以需要经常查询项目名称,在项目表的(项目名称)创建索引;
每位顾客消费时会给出,所以经常需要查询对应的顾客号,在顾客表的(号)创建索引;
顾客住宿时会给出自己想要的客房类型的名称,所以要经常查询类型名称对应的类型号,在类型表的(类型名称)创建索引;
SQL语句
createuniqueindexidx_工资on员工(工资)
createuniqueindexidx_折扣详情on折扣(折扣详情)
createuniqueindexidx_项目名称on项目(项目名称)
createuniqueindexidx_号on顾客(号)
createuniqueindexidx_类型名称on类型(类型名称)
5.数据库实施
--创建数据库
createdatabase酒店管理系统
go
use酒店管理系统
go
--创建表
--创建部门表
createtable部门(
部门号char(10)primarykey,
名称char(10)notnull,
部门经理char(10),
办公地点char(10),
员工数量intcheck(员工数量>=0),
)
go
--创建员工表
createtable员工(
员工号char(10)primarykey,
char(10)notnull,
性别char
(2)notnull,
年龄int,
工资int,
部门号char(10),
职务char(10),
备注varchar(100),
foreignkey(部门号)references部门(部门号)
)
go
--创建顾客表
createtable顾客(
顾客号char(10)primarykey,
char(10)notnull,
年龄char
(2),
性别char
(2)notnull,
号char(18)notnullunique,
级别int,
备注varchar(100)
)
go
--创建类型表
createtable类型(
类型编号char(10)primarykey,
类型名称char(10)notnull,
费用dec(6,2)check(费用>=0),
总量intcheck(总量>=0),
剩余量intcheck(剩余量>=0)
)
go
--创建客房表
createtable客房(
客房号char(10)primarykey,
类型编号char(10),
位置char(10)notnullunique,
状态char(4),
备注varchar(100),
foreignkey(类型编号)references类型(类型编号)
)
go
--折扣表
createtable折扣(
折扣级别intprimarykey,
折扣详情dec(3,2)
)
go
--创建款项表
createtable款项(
款项编号char(10)primarykey,
顾客号char(10),
员工号char(10),
时间datetime,
折扣级别int,
应收款dec(6,2)notnull,
实际收款dec(6,2)notnull,
foreignkey(顾客号)references顾客(顾客号),
foreignkey(员工号)references员工(员工号),
foreignkey(折扣级别)references折扣(折扣级别)
)
go
--创建项目表
createtable项目(
项目编号char(10)primarykey,
项目名称char(10)notnull,
部门号char(10),
所在位置char(10),
收费标准intcheck(收费标准>=0),
foreignkey(部门号)references部门(部门号)
)
go
--创建选择表
createtable选择(
顾客号char(10),
项目号char(10),
发生时间datetime,
备注varchar(100),
primarykey(顾客号,项目号,发生时间),
foreignkey(顾客号)references顾客(顾客号),
foreignkey(项目号)references项目(项目编号)
)
go
--创建预约表
createtable预约(
顾客号char(10),
客房号char(10),
预约时间datetime,
备注varchar(100),
primarykey(顾客号,客房号,预约时间),
foreignkey(顾客号)references顾客(顾客号),
foreignkey(客房号)references客房(客房号)
)
go
--创建住宿表
createtable住宿(
顾客号char(10),
客房号char(10),
入住时间datetime,
离开时间datetime,
primarykey(顾客号,客房号,入住时间),
foreignkey(顾客号)references顾客(顾客号),
foreignkey(客房号)references客房(客房号)
)
6.数据库运行
添加部门数据:
('bm001','客房部','吴庆宇','B201',20)
('bm002','餐饮部','啸','A103',10)
('bm003','娱乐部','胡展鹏','A401',20)
添加员工数据:
('yg1001','吴庆宇','男',30,4000,'bm001','部门经理','')
('yg1002','徐博雅','女',26,2700,'bm001','普通员工','')
('yg2001','啸','男',30,3500,'bm002','部门经理','')
('yg2002','穆标','男',26,2000,'bm002','普通员工','学徒')
('yg3001','胡展鹏','男',31,4000,'bm003','部门经理','')
('yg3002','戚倩倩','女',25,3000,'bm003','普通员工','休假中')
添加顾客数据:
('gk00001','董炎鑫',24,'男','5',3,'')
('gk00002','伦',20,'女','',1,'')
('gk00003','德军',31,'男','1',1,'')
('gk00004','秀春',41,'女','3',2,'')
添加类型数据:
('lx001','普通双人间',130,50,20)
('lx002','网络单人间',100,30,13)
('lx003','大床房',150,50,36)
('lx004','豪华套间',420,20,14)
添加客房数据:
('kf001','lx001','B101','空闲','')
('kf002','lx001','B102','有客','')
('kf003','lx002','B201','空闲','')
('kf004','lx003','B305','空闲','维修中')
('kf005','lx004','B404','有客','')
添加折扣数据:
(1,0.98)
(2,0.9)
(3,0.8)
添加项目数据:
('xm001','网吧','bm003','A206',3)
('xm002','KTV','bm003','A501',90)
('xm003','洗衣','bm001','B105',10)
款项、选择、预约数据随业务的进行由员工添加
模拟业务
实例1:
新客户慧预约kf003号客房(慧,女,20岁,6)
insertinto顾客values(‘gk00005’,’慧’,20,’女’,’6’,1,’’)go
insertinto预约values(‘gk00005’,’kf003’,’2015-12-06’,’’)
update客房set状态=’预约’where客房号=’kf003’
实例2:
员工徐博雅离职,删除其员工数据
deletefrom员工where=’徐博雅’
实例3:
查询年龄小于等于30岁的男性顾客的、号
select,号
from顾客
where性别=’男’and年龄<=30
实例4:
顾客伦选择KTV项目(伦,)
insertinto选择select顾客号,项目编号,'2015-12-1',''
from顾客,项目
where号=''and项目名称='KTV'
go
select*
from选择
where顾客号=(select顾客号from顾客where号='')
and项目号=(select项目编号from项目where项目名称='KTV')
and发生时间='2015-12-1'
实例5:
即实例4之后,伦结账付款,由员工戚倩倩处理
insertinto款项select‘kx00001’,顾客号,员工号,'2015-12-1',折扣级别,收费标准,收费标准*折扣详情
from顾客,项目,员工,折扣
where号=''and项目名称='KTV'and员工.=’戚倩倩’and级别=折扣级别
go
select*
from款项
where款项编号='kx00001'
7.数据库安全性
数据库管理员以Windows身份验证登录,不再另外创建登录名
为员工、经理和顾客分别创建一个登录名,例如:
为员工、经理和顾客分别创建一个用户,对应登录名,例如:
授予权限
授予顾客,对项目表和类型表的查询权限
grantselecton项目to顾客
grantselecton类型to顾客
授予员工,对员工表的查、对款项表的增查、对选择表、顾客表、客房表、预约表、住宿表的增删改查、对类型表的改查权限
grantselecton员工to员工
grantinsert,selecton款项to员工
grantinsert,delete,update,selecton选择to员工
grantinsert,delete,update,selecton顾客to员工
grantinsert,delete,update,selecton客房to员工
grantinsert,delete,update,selecton预约to员工
grantinsert,delete,update,selecton住宿to员工
grantupdate,selecton类型to员工
授予经理,对员工表的增删改查、对部门表增删改查、对项目表的增删改查权限
grantinsert,delete,update,selecton员工to经理
grantinsert,delete,update,selecton部门to经理
grantinsert,delete,update,selecton项目to经理
8.数据库备份计划
每周日24点一次完整备份,每天24点一次差异备份,每两小时一次事务日志备份
首先执行一次完整备份,否则接下来到周日的数据无法进行备份:
在创建一个“清除维护”任务,删除时间超过一个月的备份文件