数据库项目-酒店管理系统(共27页).docx
精选优质文档-倾情为你奉上酒店管理系统系别:信息管理系班级:信息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联合主码离开时间Datetime4. 物理设计员工会经常查询自己的工资,在员工表的(工资)创建索引;顾客每次付款时都会要查询具体的折扣详情,在折扣表的(折扣详情)创建索引;顾客选择项目时只会给出项目名称,所以需要经常查询项目名称,在项目表的(项目名称)创建索引;每位顾客消费时会给出身份证,所以经常需要查询身份证对应的顾客号,在顾客表的(身份证号)创建索引;顾客住宿时会给出自己想要的客房类型的名称,所以要经常查询类型名称对应的类型号,在类型表的(类型名称)创建索引;SQL语句create unique index idx_工资 on 员工(工资)create unique index idx_折扣详情 on 折扣(折扣详情)create unique index idx_项目名称 on 项目(项目名称)create unique index idx_身份证号 on 顾客(身份证号)create unique index idx_类型名称 on 类型(类型名称)5. 数据库实施-创建数据库create database 酒店管理系统gouse 酒店管理系统go-创建表-创建部门表create table 部门(部门号 char(10) primary key,名称 char(10) not null,部门经理 char(10),办公地点 char(10),员工数量 int check(员工数量>=0),)go-创建员工表create table 员工(员工号 char(10) primary key,姓名 char(10) not null,性别 char(2) not null,年龄 int,工资 int,部门号 char(10),职务 char(10),备注 varchar(100),foreign key (部门号) references 部门(部门号)go-创建顾客表create table 顾客(顾客号 char(10) primary key,姓名 char(10) not null,年龄 char(2),性别 char(2) not null,身份证号 char(18) not null unique,级别 int,备注 varchar(100)go-创建类型表create table 类型(类型编号 char(10) primary key,类型名称 char(10) not null,费用 dec(6,2) check(费用>=0),总量 int check(总量>=0),剩余量 int check(剩余量>=0)go-创建客房表create table 客房(客房号 char(10) primary key,类型编号 char(10),位置 char(10) not null unique,状态 char(4),备注 varchar(100),foreign key (类型编号) references 类型(类型编号)go-折扣表create table 折扣(折扣级别 int primary key,折扣详情 dec(3,2)go-创建款项表create table 款项(款项编号 char(10) primary key,顾客号 char(10),员工号 char(10),时间 datetime,折扣级别 int,应收款 dec(6,2) not null,实际收款 dec(6,2) not null,foreign key (顾客号) references 顾客(顾客号),foreign key (员工号) references 员工(员工号),foreign key (折扣级别)references 折扣(折扣级别)go-创建项目表create table 项目(项目编号 char(10) primary key,项目名称 char(10) not null,部门号 char(10),所在位置 char(10),收费标准 int check(收费标准>=0),foreign key (部门号) references 部门(部门号)go-创建选择表create table 选择(顾客号 char(10),项目号 char(10),发生时间 datetime,备注 varchar(100),primary key(顾客号,项目号,发生时间),foreign key (顾客号) references 顾客(顾客号),foreign key (项目号) references 项目(项目编号)go-创建预约表create table 预约(顾客号 char(10),客房号 char(10),预约时间 datetime,备注 varchar(100),primary key(顾客号,客房号,预约时间),foreign key (顾客号) references 顾客(顾客号),foreign key (客房号) references 客房(客房号)go-创建住宿表create table 住宿(顾客号 char(10),客房号 char(10),入住时间 datetime,离开时间 datetime,primary key(顾客号,客房号,入住时间),foreign key (顾客号) references 顾客(顾客号),foreign key (客房号) 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,'男','',3,'') ('gk00002','李伦',20,'女','',1,'') ('gk00003','杨德军',31,'男','',1,'') ('gk00004','张秀春',41,'女','',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岁,)insert into 顾客 values (gk00005,沈慧,20,女,1,) goinsert into 预约 values (gk00005,kf003,2015-12-06,)update 客房 set 状态=预约 where 客房号=kf003实例2:员工徐博雅离职,删除其员工数据delete from 员工 where 姓名=徐博雅实例3:查询年龄小于等于30岁的男性顾客的姓名、身份证号select 姓名,身份证号from 顾客where 性别=男 and 年龄<=30 实例4:顾客李伦选择KTV项目(李伦,)insert into 选择 select 顾客号,项目编号,'2015-12-1','' from 顾客,项目 where 身份证号='' and 项目名称='KTV'goselect *from 选择where 顾客号=(select 顾客号 from 顾客 where 身份证号='') and 项目号=(select 项目编号 from 项目 where 项目名称='KTV') and 发生时间='2015-12-1'实例5:即实例4之后,李伦结账付款,由员工戚倩倩处理insert into 款项 select kx00001,顾客号,员工号,'2015-12-1',折扣级别,收费标准,收费标准*折扣详情 from 顾客,项目,员工,折扣 where 身份证号='' and 项目名称='KTV' and 员工.姓名=戚倩倩 and 级别=折扣级别goselect *from 款项where 款项编号='kx00001'7. 数据库安全性数据库管理员以Windows身份验证登录,不再另外创建登录名为员工、经理和顾客分别创建一个登录名,例如:为员工、经理和顾客分别创建一个用户,对应登录名,例如:授予权限授予顾客,对项目表和类型表的查询权限grant select on 项目 to 顾客grant select on 类型 to 顾客授予员工,对员工表的查、对款项表的增查、对选择表、顾客表、客房表、预约表、住宿表的增删改查、对类型表的改查权限grant select on 员工 to 员工grant insert,select on 款项 to 员工grant insert,delete,update,select on 选择 to 员工grant insert,delete,update,select on 顾客 to 员工grant insert,delete,update,select on 客房 to 员工grant insert,delete,update,select on 预约 to 员工grant insert,delete,update,select on 住宿 to 员工grant update,select on 类型 to 员工授予经理,对员工表的增删改查、对部门表增删改查、对项目表的增删改查权限grant insert,delete,update,select on 员工 to 经理grant insert,delete,update,select on 部门 to 经理grant insert,delete,update,select on 项目 to 经理8. 数据库备份计划每周日24点一次完整备份,每天24点一次差异备份,每两小时一次事务日志备份首先执行一次完整备份,否则接下来到周日的数据无法进行备份: 在创建一个“清除维护”任务,删除时间超过一个月的备份文件 专心-专注-专业