基于Android的点菜系统数据库设计.docx
- 文档编号:4470111
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:23
- 大小:152.51KB
基于Android的点菜系统数据库设计.docx
《基于Android的点菜系统数据库设计.docx》由会员分享,可在线阅读,更多相关《基于Android的点菜系统数据库设计.docx(23页珍藏版)》请在冰豆网上搜索。
基于Android的点菜系统数据库设计
本科学生综合性实验报告
课程名称:
数据库系统原理
实验项目名称:
基于Android的酒店点菜系统数据库设计
数据库总体设计
班级教育技术09-2班第01组
指导老师:
秦勇、杨忠明
2010至2011学年第二学期
2011年07月13日
酒店点菜系统数据库设计
项目组长:
邱炳发
成员:
邱炳发
丘润桂
祁睿
梁文桂
《数据库系统原理》课程
目录
1需求分析4
1.1编写目的4
1.2背景4
1.3目标4
1.4需求分析5
1.4.1系统总体需求5
1.4.2软硬件平台设计6
2概念设计(E-R图设计)7
2.1实体服务员与桌子之间的联系7
2.2实体服务员(负责人)与房间之间的联系7
2.3厨师和菜表之间的联系8
2.4总E-R图8
3逻辑设计9
3.1表设计9
3.2视图设计10
4物理设计12
4.1触发器12
(1)建立触发器room_waiter_insert(保证一名服务员最多只能负责一个房间)12
(2)建立触发器T2:
12
4.2存储过程12
(1)建立存储过程total_sum,输入一桌子和房间编号,即可查出该桌顾客的消费总额12
(2)建立存储过程total_sum_detail,输入一桌子和房间编号,即可查出该桌顾客的消费总额13
(3)建立存储过程P2,输入一服务员的编号,即可查出服务员的相关信息14
(4)建立存储过程P3,输入一厨师编号,查询厨师的相关信息:
14
(5)建立存储过程P3,根据顾客的需求,输入一房间编号,选择不同型号的桌子14
5数据库设计脚本14
1需求分析
1.1编写目的
使用该文档的使用成员为实现基于android的酒店点菜系统的开发人员以及酒店具体组织管理人员。
小组各成员所做的工作:
邱炳发分析设计,概念设计,逻辑设计,表项设计,E-R图设计
丘润桂逻辑设计,物理设计,表项设计,E-R图设计
祁睿逻辑设计,物理设计,数据处理
梁文桂表项分析,数据处理,脚本编写
1.2背景
项目名称:
基于android的酒店点菜管理系统。
项目提出者:
系统项目组织人员。
项目开发者:
系统项目开发小组。
项目鉴定者:
暂无。
项目开始时间:
2011-07-13。
1.3目标
目前大多数酒店由于规模的限制,忽略了点菜系统的重要性,而本系统专为具有一定规模和经济条件的大型酒店设计。
通过集成从顾客定桌、点菜、上菜到结帐等一系列功能,为每个环节明确分工,并通过可视化的软件支持,有效减小了人为差错的概率,代之以高效、便捷、准确的数字化服务系统,使酒店的管理更加规范化。
用户分为两类:
普通操作员(酒店服务员):
只须具有初级的计算机操作能力,一般高中生以上经过稍稍培训都可胜任,只是负责点菜进行时一些简单数据的插入、更新、查询。
管理人员:
这些人员应具备一定的数据库知识,不过只要了解就行,这些人员负责对数据库中重要数据及基本数据的更新,如对静态表的重新定义,普通用户的权限分配。
1.4需求分析
1.4.1系统总体需求
(l)通过对酒店点菜各个步骤、所需的各项信息等的分析,我们规定:
1对于整个系统而言,拥有两种用户:
普通操作人员和管理人员.
2一名服务员可以负责多张桌的点菜任务,一张桌只能由一名服务员负责点菜.
3一个房间仅由一名服务员作为负责人,一名负责人只能负责一个房间.
4一个厨师可以做多样菜,一个菜式有多个厨师会做。
(2)通过对酒店点菜各方面分析,酒店点菜中包含的实体有服务员、厨师、房间、桌子、菜表。
包含的数据项分别如下:
1服务员编号,服务员姓名,服务员性别,服务员年龄,雇佣时间,职位.
2房间编号,房间名,房间容纳人数,桌子数,房间型号,房间状态、房间负责人等.
3桌子编号,桌子容纳人数,桌子房间号、桌子状态.
4菜编号,菜名,价格,菜类别等.
5厨师编号,厨师姓名,厨师性别,厨师年龄,厨师雇佣时间,厨师职称,厨师状态.
(3)实体之间的联系有:
①服务员(负责人)与房间之间(1:
1).
②服务员与桌子之间(1:
M).
③厨师与菜表(N:
M).
(4)通过以上分析,酒店点菜数据库包含的模块有:
①输入模块 主要是各种信息的输入,如服务员信息、厨师信息、房间信息、桌子信息、菜表信息等.
②输出模块 主要是各种查询结果的输出等.
编号
数据流名
输入
输出
1
变更服务员
变更信息
服务员信息
2
查询服务员
服务员编号
服务员信息
3
变更厨师
变更信息
厨师信息
4
查询厨师
厨师编号
厨师信息
5
变更房间
变更信息
房间信息
6
查询房间
房间编号
房间信息
7
变更餐桌
变更信息
餐桌信息
8
查询餐桌
桌子编号
餐桌信息
9
变更菜单
变更信息
菜单信息
10
菜单
菜号
菜名、菜价
11
查询空闲房间
房间状态限制条件
空闲房间信息
12
查询空闲餐桌
餐桌状态限制条件
空闲餐桌信息
13
结账
餐桌号、房间编号
用餐信息
14
提交点菜请求
服务员号、桌号、日期、菜号
点菜信息
15
获得点菜请求
点菜信息
菜号、桌号、房间号、菜名
16
提交做菜信息
菜号、桌号、房间编号
点菜信息
17
提交上菜信息
菜号、桌号、房间编号
点菜信息
18
变更厨师分工信息
厨师号、菜号
厨师分工信息
19
预定餐桌
餐桌号、房间编号
餐桌信息
20
预定房间
房间编号
房间信息
21
交款
桌号、房间编号
餐桌信息、房间信息
(5)功能需求分析
1 服务员信息的管理:
查询、增、删、改
2 菜单信息的管理:
查询、增、删、改
3 厨师信息的管理:
查询、增、删、改
4 房间信息的管理:
查询、增、删、改
5 餐桌信息的管理:
查询、增、删、改
6 前台定桌:
顾客可以根据自己的需求,选择不同型号的房间或大厅
7 房间/大厅点菜:
服务员按照用户需求为其点菜并提交菜单给厨房
8 厨师和菜的分组:
厨师和菜分别分组,每组厨师和一组菜一一对应,该组每位厨师会做该组所有的菜。
9 厨师做菜管理:
厨师可以获得自己的待做菜单,并对已做的菜进行标记。
10 上菜管理:
服务员对已上菜和待上菜进行管理。
11 结帐服务:
审核菜单,协助顾客结帐。
1.4.2软硬件平台设计
(1)软件平台:
windows系列操作系统(后台管理)、基于android的操作系统(点菜)、Sql-Server2008数据库
(2)硬件平台:
基于android的手持型电子菜单
2概念设计(E-R图设计)
2.1实体服务员与桌子之间的联系
相关说明:
上述E-R图表示一名服务员负责多张桌子的点菜,一张桌子可以由多名服务员服务。
2.2实体服务员(负责人)与房间之间的联系
上述E-R图表示一个房间只能由一个房间负责人负责,一个房间负责人只能负责一个房间。
2.3厨师和菜表之间的联系
相关说明:
上述E-R图表示一名厨师可以做多样菜,一样菜有多名厨师会做。
2.4总E-R图
将上述分E-R全部合并,并化简的到如下的总E-R图(为简化画图工作,上述各实体中的属性未画出):
上述E-R图中服务员、桌子和房间之间的联系如上述3中的E-R图一样,厨师和菜表之间表示的联系如上述2中的E-R图一样。
服务员、桌子、房间、厨师和菜表这五者之间通过点菜联系起来。
3逻辑设计
3.1表设计
本次设计的数据库在SQLServer2008上实现,将概念结构设计中的E-R图转换成SQLSever2008支持的关系数据模型后,结合上述分析得到如下数据表:
(1)服务员表(waiter):
主码为服务员编号:
waiter_no
属性
数据类型
默认值
备注
属性说明
waiter_no
char(10)
Notnull
primarykey
服务员编号
waiter_name
char(20)
Null
服务员姓名
waiter_sex
char(4)
Null
服务员性别
waiter_age
int
Null
服务员年龄
hire_date
date
Null
雇用日期
headship
char(20)
Null
普通或负责人
职位
(2)桌子表(tables):
主码为桌子编号:
table_no
属性
数据类型
默认值
备注
属性说明
table_no
char(10)
notnull
primarykey
桌子编号
table_volume
int
Null
桌子容纳人数
table_room
char(10)
Notnull
foreignkey
桌子房间号
status
char(4)
Null
忙或空闲
桌子状态
(3)房间表(room):
主码为房间编号:
room_no
属性
数据类型
默认值
备注
属性说明
room_no
char(10)
Notnull
Primarykey
房间编号
room_name
char(20)
Notnull
房间名
room_volume
int
Null
房间容纳人数
table_num
int
Null
桌子数量
room_size
char(6)
Null
小、中、大、豪华
房间型号
status
char(4)
忙或空闲
房间状态
room_manager
char(10)
Notnull
foreignkey(依据服务员表中的服务员编号)
负责人
(4)厨师表(cook):
主码为厨师编号:
cook_no
属性
数据类型
默认值
备注
属性说明
cook_no
char(10)
Notnull
Primarykey
厨师编号
cook_name
char(20)
Notnull
厨师姓名
cook_sex
char(4)
厨师性别
cook_age
int
厨师年龄
hire_date
date
雇用时间
headship
char(20)
初、中、高级等
职称
status
char(4)
忙或闲
状态
(5)菜表(food_scheme):
主码为:
food_no
属性
数据类型
默认值
备注
属性说明
food_no
char(10)
Notnull
Primarykey
菜编号
food_name
char(20)
Null
菜名
price
float
Null
价格
food_class
int
Null
菜所属类别
(6)服务员-桌子表【服务】(server_table):
主码是waiter_no+table_no
属性
数据类型
默认值
备注
属性说明
waiter_no
char(10)
Notnull
primary
服务员编号
table_no
char(10)
Notnull
桌子编号
menu_time
date
Null
点菜时间
(7)菜单表(menu):
主码为服务员编号、桌子编号、房间编号、厨师编号和菜编号构成waiter_no+table_no+room_no+cook_no+food_no;外码为服务员编号、桌子编号、房间编号、厨师编号和菜编号分别受服务员表、桌子表、房间表、厨师表和菜表中相应属性的约束。
属性
数据类型
默认值
备注
属性说明
waiter_no
char(10)
Notnull
primary
服务员编号
table_no
char(10)
Notnull
桌子编号
room_no
char(10)
Notnull
房间编号
cook_no
char(10)
Notnull
厨师编号
food_no
char(10)
Notnull
菜编号
menu_time
date
Null
点菜时间
made
char(4)
Null(可以为空)
默认否
是否做完
served
char(4)
Null(可以为空)
默认否
是否上菜
3.2视图设计
1、空闲房间(房间号,负责人)
从房间基本表导出
createviewfree_room
as
selectroom_no,room_manager
fromroom
wherestatus='空闲'
2、大厅空闲桌(桌号,可容纳人数)
从桌子基本表导出
createviewfree_tables
as
selecttable_no,table_volume
fromtables
wherestatus='空闲'
3、所有房间、桌空闲信息(房间号,桌号,空闲状态)
从房间和桌子基本表导出
createviewfree_tables_room
as
selectroom_no,table_no,a.status
fromtablesa,roomb
4、结帐(房间号,桌号,菜号,菜名,单价)
从点菜表、菜表导出
createviewsum
as
selectroom_no,table_no,food_no,food_name,price
frommenu,food_scheme
5、服务员点菜生成视图
菜单(桌号,服务员号,点菜时间,菜的编号,菜号,菜名,价格,是否已上)
从点菜表、菜表导出
createviewmenu_view
as
selectwaiter_no,room_no,table_no,food_no,food_name,price,menu_time,servered
frommenu,food_scheme
6、厨师做菜视图
做菜(房间号,桌号,菜号,菜名,是否已上)
从点菜表、菜表导出
createviewmade_food
as
selectroom_no,table_no,food_no,food_name,made
frommenu,food_scheme
4物理设计
为了加速表的查询,根据所设计的表的特点,我们决定在对服务员表中的‘服务员编号waiter_no’,厨师表中的‘厨师编号cook_no’,菜息表中的‘菜编号food_no‘,房间表中的‘房间编号room_no’分别建立索引.
createuniqueindexindex_waiter_noonwaiter(waiter_no)
createuniqueindexindex_cook_noonwaiter(cook_no)
createuniqueindexindex_food_noonwaiter(food_no)
createuniqueindexindex_room_noonwaiter(room_no)
4.1触发器
(1)建立触发器room_waiter_insert(保证一名服务员最多只能负责一个房间)
createtriggerroom_waiter_insert
onroom
forinsert
as
ifexists(select*fromInserted)
begin
print'对不起,一个房间只能有一名服务员负责!
'
rollbacktransaction
end
(2)建立触发器T2:
4.2存储过程
(1)建立存储过程total_sum,输入一桌子和房间编号,即可查出该桌顾客的消费总额
createproceduretotal_sum@tab_nochar(10),@r_nochar(10),@sumfloatout
as
begin
declare@pricefloat,@numberint
set@sum=0
set@number=0
declarecurSumcursorfor
selectprice,num
fromfood_schemea,menub
wherea.food_no=b.food_noandb.table_no=@tab_noandb.room_no=@r_no
opencurSum
fetchcurSuminto@price,@number
while(@@FETCH_STATUS=0)
begin
set@sum=@sum+@price*@number
fetchcurSuminto@price,@number
end
closecurSum
deallocatecurSum
select@sumas消费总额
end
(2)建立存储过程total_sum_detail,输入一桌子和房间编号,即可查出该桌顾客的消费总额
createproceduretotal_sum_detail@tab_nochar(10),@r_nochar(10),@sumfloatout
as
begin
declare@pricefloat,@foodnamechar(20),@foodnochar(10),@foodclasschar(6)
declare@numberint
select@sum=0,@number=0
createtable#sumTemp
(
foodNochar(10),
foodNamechar(20),
foodPricefloat,
numberint,
foodClasschar(6)
)
declarecurSumcursorfor
selectb.food_no,food_name,price,num,food_class
fromfood_schemea,menub
wherea.food_no=b.food_noandb.table_no=@tab_noandb.room_no=@r_no
groupbyb.food_no,food_name,price,num,food_class
opencurSum
fetchcurSuminto@foodno,@foodname,@price,@number,@foodclass
while(@@FETCH_STATUS=0)
begin
set@sum=@sum+@price*@number
insert#sumTempvalues(@foodno,@foodname,@price,@number,@foodclass)
fetchcurSuminto@foodno,@foodname,@price,@number,@foodclass
end
closecurSum
deallocatecurSum
select*from#sumTemp
select@sumas消费总额
end
(3)建立存储过程P2,输入一服务员的编号,即可查出服务员的相关信息
createprocedurecha_xuan_wait(@sNochar(10))
as
select*
fromwaiter
wherewaiter_no=@sNo
(4)建立存储过程P3,输入一厨师编号,查询厨师的相关信息:
createprocedurecha_xuan_cook(@sNochar(10))
as
select*
fromcook
wherecook_no=@sNo
(5)建立存储过程P3,根据顾客的需求,输入一房间编号,选择不同型号的桌子
Createprocedurefree_tabl_room(@room_namechar(20))
As
Selecttables_no
Fromtablesa,roomb
Wherea.tables_room=b.room_noandroom_name=@room_nameanda.status='空闲'andb.status='空闲'
5数据库设计脚本
--------------------数据库初始化工作-----------------------
setnocounton
setdateformatmdy
go
usemaster
go
ifexists(select*fromsysdatabaseswherename='orderSystem')
dropdatabaseorderSystem
go
--------------------数据库的建立-----------------------------
createdatabaseorderSystem
ONprimary
(NAME='orderSystem_data',
FILENAME='d:
\VisualStudio2008\orderSystem_data.MDF',
SIZE=3,
FILEGROWTH=1,
MAXSIZE=10)
LOGON
(NAME='orderSystem_Log',
FILENAME='d:
\VisualStudio2008\orderSystem_Log.LDF',
SIZE=1,
FILEGROWTH=1,
MAXSIZE=5)
GO
------------------表的建立---------------------------------
useorderSystem
ifexists(select*fromsysobjectswherename='waiter')
droptabledbo.waiter
go
print'droptablewaiter'
print'createwaiter'
GO
createtablewaiter(
waiter_nochar(10)Notnull/*服务员编号*/
constraintw_nochkc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 点菜 系统 数据库 设计