数据库课程设计说明书李双云厉涛.docx
- 文档编号:24107446
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:26
- 大小:357.18KB
数据库课程设计说明书李双云厉涛.docx
《数据库课程设计说明书李双云厉涛.docx》由会员分享,可在线阅读,更多相关《数据库课程设计说明书李双云厉涛.docx(26页珍藏版)》请在冰豆网上搜索。
数据库课程设计说明书李双云厉涛
2017届课程设计
《数据库原理》
课程设计说明书
设计题目:
酒店管理信息系统
学生姓名:
李双雲,厉涛
学号:
5011213221,5011213210
所属学院:
信息工程学院
专业:
计算机科学与技术
班级:
17-2
指导教师:
杜义君
教师职称:
讲师
一、需求分析
1.1可行性分析
【摘要】
当今社会,酒店住宿对于我们来说是非常普遍的。
作为服务业的产物,酒店这个行业的竞争越来越激烈。
想要在这个行业占有一席之位,优秀的管理手段这是一种不可或缺的要点之一。
现在的酒店多数集购物住宿饮食休闲娱乐于一身,接受信息量大,管理难度也大。
手工管理信息再也不能满足管理者的需求。
因此需要有一个比较完整的管理信息系统,来帮助管理者更好的管理酒店。
通过这个管理信息系统,可以提高管理者的管理水平,提高酒店的服务水平,对酒店各个方向的情况进行快速准确的分析,缩减时间,节省酒店的管理成本,通过这个管理信息系统,进一步贯彻全面质量管理,提高开会客户的满意程度度,建立酒店全面竞争的一些优势。
所以一个好的酒店信息管理系统对酒店来说是有需要的,也是必须得,所以市场肯定会出现对酒店管理信息系统的需求,因此我们选择了酒店管理信息系统的开发。
1.2 业务描述
1、某酒店信息管理系统需要如下信息:
房间:
编号、状态、预定时间、单价、类型等。
客户:
编号、姓名、性别、身份证号、订房编号、房间号、入住时间、住房类型、付款方式、订餐编号,预订桌子的编号付款状态等。
职员:
编号、性别、职位、电话、入职时间、基本工资、离职时间等。
餐饮:
种类、价格、编号等。
餐桌:
编号、位置、类型、状态等。
要求:
一个房间在同一时间只能被一个客户预定,一个客户可以同时预定多个房间,一个餐桌在同一时间只能被一个客户预定,一个客户可以预定多个餐桌。
1、某酒店信息管理系统需要如下信息:
房间:
编号、状态、预定时间、单价、类型等。
客户:
编号、姓名、性别、身份证号、订房编号、房间号、入住时间、住房类型、付款方式、付款状态等。
职员:
编号、性别、职位、电话、入职时间、基本工资、离职时间等。
餐饮:
种类、价格、编号等。
餐桌:
编号、位置、类型、状态等。
数据项
含义
类型
长度
备注
housenumber
房间编号
char
6
housestate
房间预订状态
smallint
1
booktime
预订时间
time
10
unitprice
房间单价
float
4
character
特点
varchar
30
username
用户姓名
varchar
10
Idcard
身份证号
varchar
20
booktime
预定时间
time
10
paystate
付款状态
smallint
1
payway
付款方式
varchar
5
tablenumber
餐桌编号
Char
5
tablevolume
几人桌
int
2
location
位置
int
2
tablestate
餐桌预订情况
Smallint
1
staffsex
员工性别
varchar
2
staffphone
职员电话
char
11
position
职位
varchar
10
staffsalary
职工工资
int
6
worktime
工作时间
time
3
cateringtype
餐饮种类
char
10
cateringprice
餐品单价
int
10
cateringnumber
餐品编号
int
3
housetype
住房类型
char
5
ueantnumber
客户预订桌子的编号
varchar
10
hunmber
客户预订房间编号
char
10
要求:
一个房间在同一时间只能被一个客户预定,一个客户可以同时预定多个房间,一个餐桌在同一时间只能被一个客户预定,一个客户可以预定多个餐桌。
1.2 数据分析
1、数据项分析:
2、 数据结构分析:
数据结构
组成成员
房间
房间编号+单价+预订状态+住房类型+被预定的时间
餐桌
餐桌编号+位置+被预定状态+类型(几人桌)
客户
客户姓名+身份证号+预订情况(房间+餐桌+菜品)+预订时间++付款状态+付款方式
职工
性别+电话+职位+职员编号+工资+工作时间+入职时间+离职时间
餐饮
类别+单价+编号
1.3人员分工
甲:
乙:
二、概念模型设计
1 、E-R图,如图1所示。
1
1
图2
2、用PowerDesigner绘制图1所示
3、ER图对应的ConcepturalDataModal,如图2所示。
三、逻辑模型设计
3.1关系模型:
房间
房间编号+单价+预订状态+住房类型+被预定的时间
餐桌
餐桌编号+位置+被预定状态+类型(几人桌)
客户
客户姓名+身份证号+预订情况(房间+餐桌+菜品)+预订时间+付款状态+付款方式+性别+接待员工编号
职工
性别+电话+职位+职员编号+工资+工作时间+入职时间+离职时间
餐饮
类别+单价+编号
3.2规范化分析
1、 房间关系中,房间编号为主键,其中函数依赖关系有:
房间编号→单价,房间编号→住房类型,房间编号→预订状态,房间编号→预订状态
因为在房间关系中不存在非主属性对码的部分函数依赖和传递函数依赖,所以房间关系是属于3NF。
2、餐桌关系中餐桌编号主键,其中函数依赖有:
餐桌编号→类型,餐桌编号→位置,餐桌编号→预订状态。
因为在餐桌关系中非不存在主属性对码的部分函数依赖和传递函数依赖,所以餐桌关系是属于3NF。
3、客户关系中身份证号,预订房间编号,预订餐桌编号,预订餐饮编号可以作主键,
客户关系中客户编号可作为主键,身份证号,预订房间编号,预订餐桌编号,接待员工编号,预订餐饮编号,作为主键,在此选用客户编号为主键。
其中函数依赖有:
客户身份证号→性别
因为客户关系中不存在非主属性对码的部分函数依赖和传递函数依赖关系,所以客户关系是属于3NF。
4、员工关系中员工号为主键,其中函数依赖有:
工号→姓名,工号→员工电话,工号→职位,工号→薪水,工号→工作内容。
因为业务员关系中不存在非主属性对码的部分函数依赖和传递函数依赖,所以业务员关系是属于3NF。
5、餐饮关系中餐饮编号可以为主键,餐饮编号→价格,餐饮编号→类型,餐饮编号→菜名。
因为餐饮关系中不存在非主属性对码的部分函数依赖和传递函数依赖,所以餐饮关系是属于3NF。
3.3视图设计
1.视图要有助于客户查询出可以预订的房间的信息
2.方便公司管理阶层容易看到职员职能,及工资。
3.方便员工查询房间预订状态及时间,方便他们及时做好卫生打扫工作
四、物理设计
4.1表汇总
数据库中涉及的表
表名
对应关系
说明
stafftable
员工表
usertable
用户表
eattable
餐桌表
housetable
房间表
statertable
餐饮表
stafftable表
属性名
含义
数据类型
长度
说明
staffsex
员工性别
varchar
2
男或女
staffphone
职员电话
char
11
position
职位
varchar
10
staffsalary
职工工资
int
6
staffnumber
员工编号
char
10
主键
stcent
员工工作内容
varchar
10
餐桌表
属性名
含义
数据类型
长度
说明
tnumber
餐桌编号
Char
5
主键
tablevolume
几人桌
int
2
location
位置
int
2
tablestate
餐桌预订情况
Smallint
1
usertable表
属性名
含义
数据类型
长度
说明
username
用户姓名
varchar
10
Idcard
身份证号
varchar
20
主键
booktime
预定时间
time
10
paystate
付款状态
smallint
1
payway
付款方式
varchar
5
tnumber
餐桌编号
Char
5
主键
hnumber
房间编号
char
10
Notnull,主键,参照房间表的hnumber
staere
餐饮编号
char
10
主键,参照餐饮表的主键
snumber
接待员工的编号
char
10
主键,参照员工表的主键
housetable表
属性名
含义
数据类型
长度
说明
housenumber
房间编号
char
6
housestate
房间预订状态
smallint
1
Notnull参照housetable中的hnumber
booktime
预订时间
time
10
unitprice
房间单价
float
4
character
特点
varchar
30
餐饮表
属性名
含义
数据类型
长度
说明
cateringtype
餐饮种类
char
10
主键
cateringprice
餐品单价
int
10
cateringnumber
餐品编号
int
3
4.2索引的设计
1.首先要方便客户查询剩余房间的类型,单价等。
2.方便公司管理阶层容易看到职员职能,及工资。
3.方便员工查询房间预订状态及时间,方便他们及时做好卫生打扫工作。
五.物理实现
5.1基本表的创建
/*创建员工表*/
createtablestafftable(
stnamevarchar(10)notnull,
stnumberchar(10)primarykey,
stphonechar(11),
stpositionvarchar(5),
stsaleryint,
stworktimedatetime,
stworkcontentvarchar(20)
)
//房间表
createtablehousetable(
hnumberchar(10)primarykey,
hstatecharcheck(hstate='忙'orhstate='闲'),
hbooktimedatetime,
hunitpricefloat(5),htypeint
)
//客户表
createtableusertable
(
unamevarchar(10)notnull,
uidcardchar(20)primarykey,
ubooktimedatetime,
paystatesmallint,
paywayvarchar(5),
/*受理员工编号*/
hnumberchar(10),
cnumberchar(5),
tnumberchar(5),
snumberchar(10),
/*建立表之间的联系*/
Pirmarykey(uidcard,hnumber,cunmber,thnumber,sunber),
foreignkey(hnumber)referenceshousetable(hnumber),
foreignkey(tnumber)referenceseattable(tnumber),
foreignkey(cnumber)referencescatertable(cnumber),
foreignkey(snumber)referencesstafftable(stnumber),
)
//餐桌表
createtableeattable(
tnumberchar(5)primarykey,
tvolumeintcheck(tvolume<30),
tlocationvarchar(6)notnull,
tstatesmallint
)
//餐饮表
createtablecatertable(
cnumberchar(5)primarykey,
cnamevarchar(6),
ctypechar(5),
cpriceint
)
/*创建视图*/
/*创建以现金为付款方式的视图方便客户查询*/
select*fromusertable
createviewvusertable(uidcard客户身份证号,uname客户名)
as
selectuidcard,unamefromusertable
wherepayway='现金'
/*创建一个车库管理员的视图*/
createviewstcontent(stname,stnumber,stphone)
as
selectstname,stnumber,stphonefromstafftable
where
stposition='车库管理员'
/*创建一个接待员与用户的视图入住005号房间是谁接待的*/
createviewuserstaff(uname,stnumber,stname)
as
selectuname,usertable.stnumber,stname
fromusertable,stafftable
whereusertable.stnumber=stafftable.stnumberandhnumber='005'
/*创建视图*/
/*创建以现金为付款方式的视图方便客户查询*/
select*fromusertable
createviewvusertable(uidcard客户身份证号,uname客户名)
as
selectuidcard,unamefromusertable
wherepayway='现金'
5.3存储过程、函数及触发器的设计
/*存储过程*/
executeuuname,stnumber
go
createprocusertable1
(
@unamevarchar(10),
@uidcardchar(20),
@hnumberchar(10)
)
asselectuname,stnumber,hnumber
fromusertable
executeusertable1uname,uidcard,hnumber
Go
/*存储过程2*/
createprocu
(
@stsaleryfloat
)
as
selectuname,stnumber
fromusertable
executeuuname,stnumber
go
/*触发器当员工编号被修改时弹出stnumbermodified*/
Gocreatetriggerst_trigger
onstafftable
forupdate
as
ifupdate(stnumber)
print'stnumbermodified'
/*创建一个当现在日期超过预订日期则清除预订信息*/
Createtriggerselecttime
Onusertable
Fordelete
as
Ifdelete(selecthbooktimefrom
Userablewhereubooktime<='2015-6-7')
go
/*以用户身份证号与预订房间的状态为基础创建索引*/
createuniqueindexin_housetable
onusertable(uidcard,hnumber)
/*以用户身份证号与预订房间编号,价格为基础创建索引*/
createuniqueindexin_housetable
onusertable(uidcard,hnumber,huntprice)
/*下面的usertable表的hnumber列创建索引,并且强制唯一性*/
SETNOCOUNTON
USEpubs
IFEXISTS(SELECT*FROMhnumber_SCHEMA.TABLES
WHERETABLE_NAME='usertable')
DROPTABLEusetable
GO
USEpubs
IFEXISTS(SELECTnameFROMsysindexes
WHEREname='hnumber')
DROPINDEXemp_pay.employeeID_ind
GO
/*4.2索引的设计
4.首先要方便客户查询剩余房间的类型,单价等。
*/
Createuniqueindexkonghouse
onhousetable(housestate,hunitprice);
5.方便公司管理阶层容易看到职员职能,及工资。
Createuniqueindexindex_yuangongon
Stafftable(stsalery,stworkcontent);
/**/
5.4基本查询
3.1查询
/*1>查询单人间的单价*/
selecthunitprice
fromhousetable
wherehtype='单人间'
/*2>查询张三丰的入职时间和职位*/
selectstworktime,stposition
fromstafftable
wherestname='张三丰'
/*3>查询九楼空闲的桌子的编号*/
selecttnumber
fromeattable
wheretlocation='九楼'andtstate='0'
/*4>查询单价在100元以下的素菜名称*/
selectcname
fromcatertable
wherectype='素'andcprice<'100'
/*5>查询杨过的房间号和身份证号以及付款状态*/
selecthnumber,uidcard,paystate
fromusertable
whereuname='杨过'
/*6>查询东方不败预订的房间的所有信息*/
select*
fromhousetable
wherehnumberin(
selecthnumber
fromusertable
whereuname='东方不败'
)
select*
fromhousetable,usertable
wherehousetable.hnumber=usertable.hnumberanduname='东方不败'
/*7>查询郭靖预订的房间单价,餐桌位置,菜单价*/
selecthunitprice,tlocation,cprice
fromhousetable,eattable,catertable,usertable
wherehousetable.hnumber=usertable.hnumberandeattable.tnumber=usertable.tnumberandumber=umber
andusertable.uname='郭靖'
/*8>查询预订004号房间的客户是谁接待的日期*/
selectstname
fromstafftable
wherestnumberin(
selectstnumber
fromusertable
wherehnumber='004'andhbooktime=’2015-3-7’
)
/*某个客户的消费总金额*/
/*9>查询3月7号预订房间的人数*/
selectcount(distinctuidcard)
fromusertable
/*10>查询公司每月支付的薪水*/
selectsum(stsalery)公司月支付的工资
fromstafftable
11/*查询某天的住房收入*/
selectsum(hunitprice)
fromhousetable
wherehbooktime='2015-3-5'
12./*查询某个客户所有的3-5日预订情况及对应的价格*/
selectuname,hunitprice,hbooktime,cprice
fromhousetable,usertable,catertable
wherehousetable.hnumber=usertable.hnumber
andumber=umber
anduname='杨过'andhbooktime='2015-3-7'
5.5数据更新
/*数据插入删除,更新*/
insertintostafftablevalues('段誉','7000010','1555555555','服务员','8000','2015/3/7','服务');
updatestafftablesetstsalery='4000'
wherestname='令狐冲'
deletefromusertablewhereuname='杨过'
/*插入一个新的客户*/
insertintousertable(uidcard,hnumber)values('5555566661','002',)
/**/
Updatehousetable
/*当房间预订信息时间小于当前时间则改成null*/
updatehousetablesethbooktime=(
selecthbooktime
fromusertable
wherehbooktime<2015-3-7)
六、安全性设计
6.1防止用户直接操作数据库的方法
/*创建登陆*/
execsp_addlogin'st'
execSP_addlogin'ceo'
execsp_addlogin'kehu'
execsp_addlogin'yuangong'
/*创造用户*/
execsp_adduser'st'
execsp_adduser'ceo'
execsp_adduser'kehu'
execs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 说明书 李双云厉涛