数据库项目酒店管理系统.docx
- 文档编号:6633320
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:48
- 大小:517.71KB
数据库项目酒店管理系统.docx
《数据库项目酒店管理系统.docx》由会员分享,可在线阅读,更多相关《数据库项目酒店管理系统.docx(48页珍藏版)》请在冰豆网上搜索。
数据库项目酒店管理系统
酒店管理系统
系别:
信息管理系
班级:
信息14005
姓名:
江东流
学号:
14120200517
1.需求描述
一家酒店有多个部门,每个部门拥有自己的部门号、名称、部门
经理、办公地点和一定数量员工。
每个员工有员工号,姓名,性别,年龄,工资,部门号,职务等
属性。
每个顾客有顾客编号,姓名,年龄,性别,身份证号,级别等属
性,身份证号必须填写且唯一;根据累计消费等途径,将顾客分为不
同的VIP等级,级别对应折扣级别。
酒店的客房有不同的种类可供选择,由唯一的客房号标识,位置
记录每个房间的位置,状态表示此房间此时的状态,空闲、预约、有
客等等。
相同类型的客房价格一样,每个类型的客房有一定的总量,可以
查询剩余的数量以供选择。
酒店各部门还提供如KTV、网吧、洗衣等额外收费服务。
不同项
目价格不同。
不同项目在不同地点进行。
酒店房间可以预约,每人每天只能预约一次,但可以多次更改之
前的预约内容。
付款时会产生唯一的款项编号,每一笔款项由一个员工进行处理,
根据折扣级别给出应收款和实际收款。
2.概念结构设计
性别
姓名年龄
员工号员工工资
备注部门号
职务
员工实体ER图
部门经理
名称办公地点
部门号部门员工数量
部门实体ER图
部门号
项目名称所在位置
项目编号项目收费标准
项目实体ER图
年龄
姓名性别
顾客编号客户身份证号
级别电话
顾客实体ER图
位置
类型编号状态
客房号客房备注
客房实体ER图
收费标准
类型名称总量
类型编号类型剩余量
类型实体ER图
员工
n
隶属
1
部门
客房
n
分类
1
类型
员工号
顾客号
款项编号款项
应收款
款项实体ER图
折扣级别折扣
折扣实体ER图
1
开展
n
项目
入住
离开
m
时间
时间
选择
m
住宿
n
n
1
顾客
m
预约
n
预约
备注
时间
时间
折扣级别
实际收款
折扣情况
折扣
发生
1
时间
打折
备注
n
1
应付款项
全局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(
剩余量intcheck(
总量>=0),
剩余量>=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(foreignkey(
顾客号,项目号,发生时间),
顾客号)references顾客(顾客号),
项目号)references项目(项目编号)
)
go
--创建预约表
createtable预约(
顾客号char(10),
客房号char(10),
预约时间datetime,
备注varchar(100),
primarykey(foreignkey(foreignkey(
顾客号,客房号,预约时间),
顾客号)references顾客(顾客号),
客房号)references客房(客房号)
)
go
--创建住宿表
createtable住宿(
顾客号char(10),
客房号char(10),
入住时间datetime,
离开时间datetime,
primarykey(foreignkey(foreignkey(
顾客号,客房号,入住时间),
顾客号)references顾客(顾客号),
客房号)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,'男','320830199110241215',3,'')
('gk00002','李伦',20,'女','34260199511134523',1,'')
('gk00003','杨德军',31,'男','140603198402016231',1,'')
('gk00004','张秀春',41,'女','320829197405104943',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岁,140100199510211546)
insertinto顾客
insertinto预约
update客房set
values(‘gk00005沈慧’’,20,’女’’140100199510211546,’’,1,)go’’
values(‘gk00005’,’kf003-12’-06,’’2015),’’
状态=’预约’where客房号=’kf003’
实例2:
员工徐博雅离职,删除其员工数据
deletefrom员工where姓名=’徐博雅’
实例3:
查询年龄小于等于30岁的男性顾客的姓名、身份证号
select姓名,身份证号
from顾客
where性别=’男’and年龄<=30
实例4:
顾客李伦选择KTV项目(李伦,34260199511134523)
insertinto选择select顾客号,项目编号,'2015-12-1',''
from顾客,项目
where身份证号='34260199511134523'and项目名称='KTV'
go
select*
from选择
where顾客号=(select顾客号from顾客where身份证号='34260199511134523')
and项目号=(select项目编号from项目where项目名称='KTV')
and发生时间='2015-12-1'
实例5:
即实例4之后,李伦结账付款,由员工戚倩倩处理
insertinto款项select‘kx00001’,顾客号,员工号,'2015-12-1',折扣级别,收费标准,收费标准*折扣详情from顾客,项目,员工,折扣
where身份证号='34260199511134523'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点一次差异备份,每两小时一次事务日志备份
首先执行一次完整备份,否则接下来到周日的数据无法进行备份:
在创建一个“清除维护”任务,删除时间超过一个月的备份文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 项目 酒店 管理 系统