武汉理工大学毕业设计(论文)
4 数据库设计
酒店管理系统中,建立用于菜单列表及用户列表管理的数据库是一大重点,本系统除了管理菜单列表需要数据库以外,还要对各种数据记录进行管理。因此,对于本系统来说,建立良好的数据库,为系统提供高效的数据支持,尤其是提供实时有效的菜单及用户列表是系统实现的一个关键之处。
4.1数据库的引入
数据库(Database),是按照数据结构来组织、存储和管理数据的仓库,是用于查询的大量数据的存储区域。使用数据库可以带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间,实现数据资源的充分共享等等。此外,数据库技术还为用户提供了非常简便的使用手段,使用户易于编写有关数据库应用程序。特别是近年来推出的计算机关系数据库管理系统,操作直观,使用灵活,编程方便,功能强大,环境适应广泛,数据处理能力极强。
数据库的设计是指对一个给定的应用环境,构造数据库模式,建立数据库及其应用系统,满足各种用户需求。作为信息资源开发、管理和服务的一种有效的手段,数据库技术的应用已越来越广泛,从小型的单项事务处理系统到大型的信息系统大都用先进的数据库技术来保持系统数据的安全性、完整性和共享性。对一个实际的系统来说,数据库表的设计在遵循数据库理论的同时,必须能用开发工具来实现用户在各方面提出的功能要求。
一个真正的、完整的站点是离不开数据库的,因为少量的数据,如网页访问人数等完全可以存储在文本文件中,但实际应用中,需要保存的数据远不止这一点点,而且这些数据之间往往还有关联,利用数据库来管理这些数据,可以很方便的查询和更新。可以说一个动态网站的建设是离不开一个设计最优的数据库的。我们现在可以使用的数据库有很多种,如:Fox数据库(.dbf)、Access数据库(.mdb)、DB2、Informix、Oracle和SQL Server等等。在本次设计中,选择了甲骨文的Oracle数据库工具。
21
武汉理工大学毕业设计(论文)
4.2数据库的表设计
系统采用JDBC-ODBC桥接器方式访问数据库。用Oracle建立一个数据库ORCL,该数据库有如下表。
1) 菜单信息表menu_inf
如表4.1所示。菜单信息表menu_inf保存了所有菜品及音频信息,添加的菜品或饮品信息即存入该表中。该表中的菜品及饮品记录是整个系统中各项功能的数据基础。
MENU_MARK是菜单标记,0为菜品,1为饮品,MENU_ID是菜品编号,MENU_MARK与MENU_ID为表的联合主键;MENU_NAME是菜品或饮品名称,MENU_STYLE为菜品或饮品所属系列(如:川菜、粤菜…);MENU_TYPE为菜品或饮品所属种类(例如:蒸菜、炒菜、炖菜…);MENU_PRICE为菜品或饮品价格,MENU_DISCOUNT为菜品或饮品折扣信息;NATIONAL_INF为菜品或饮品的所属国籍;WEIGHT_INF为菜品或饮品的权重,这个字段便于推荐菜品的管理;MENU_STATE为菜品或饮品的状态标记,0为供应,1为缺货。
表4.1菜单信息表menu_inf
字段名称 MENU_MARK MENU_ID MENU_NAME MENU_STYLE MENU_TYPE MENU_PRICE 数据类型 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 说明 菜单标记,不允许空值。 菜品或饮品编号,不允许空值。 菜品或饮品名称,不允许空值。 菜品或饮品所属系列,允许空值。 菜品或饮品所属种类,允许空值。 菜品或饮品价格,不允许空值。 菜品或饮品折扣,允许空值。 菜品或饮品所属国籍,允许空值。 菜品或饮品权重,不允许空值。 菜品或饮品状态,不允许空值。 MENU_DISCOUNT VARCHAR2 NATIONAL_INF WEIGHT_INF MENU_STATE VARCHAR2 VARCHAR2 VARCHAR2 2) 菜单状态信息menu_state_inf
如表4.2所示。根据菜品状态标记,可以独立地对菜单状态做删改,STATE_MARK为菜单状态标记,是该表中的主键,STATE_NAME为状态名称。
表4.2菜单状态表menu_state_inf 字段名称 STATE_MARK
数据类型 VARCHAR2 说明 菜单状态标记,不允许空值。 22
武汉理工大学毕业设计(论文)
VARCHAR2 菜单状态名称,不允许空值。 STATE_NAME 3) 订单详情表ordered_menu_inf
如表4.3所示。根据顾客的点单,将点单信息存入该表中,COUSTOM_NAME为点单的顾客用户名;ROOM_NAME为顾客所在的房间名;TABLE_ID为顾客所在的房间编号;DRINKS_OR_MENU_NAME为顾客所点菜单的名称;DRINKS_OR_MENU_PRICE为顾客所点菜单的价格;DISCOUNT_INF为所点菜单的折扣;THE_TIME_OF_ODERED_MENU
为顾客点单时间;
THE_SERVING_STATE为顾客点单后的服务状态标记;MENU_MARK为顾客点单的菜单标记;MENU_ID为顾客的点单编号。
表4.3订单详情表ordered_menu_inf
字段名称 COUSTOM_NAME ROOM_NAME TABLE_ID DRINKS_OR_MENU_NAME DRINKS_OR_MENU_PRICE DISCOUNT_INF 数据类型 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 说明 顾客用户名,允许空值。 顾客所在房间名,允许空值。 顾客所在桌位编号,允许空值。 所点的菜品或饮品名称,允许空值。 所点的菜品或饮品价格,允许空值。 所点的菜品或饮品折扣,允许空值。 点单时间,允许空值。 服务状态标记,允许空值。 所点菜品或饮品标记,允许空值。 所点菜品或饮品编号,允许空值。 THE_TIME_OF_ODERED_MENU DATE THE_SERVING_STATE MENU_MARK MENU_ID VARCHAR2 VARCHAR2 VARCHAR2 4) 服务状态信息表serving_state_inf
如表4.4所示。在服务状态表中,前台服务员可根据菜品未做、在做、已做来告知顾客所点菜品状态,以便确定是否可以实现退订操作。SERVING_STATE_MARK
为服务状态标记,是改变的主键;
SERVING_STATE_NAME为服务状态标记所对应的的服务状态名称(例如:待做、正做菜、已上菜)。
表4.4服务状态信息表serving_state_inf
字段名称 数据类型 说明 服务状态标记,不允许空值。 服务状态名称,不允许空值。 SERVING_STATE_MARK VARCHAR2 SERVING_STATE_NAME VARCHAR2 5) 包房信息表room_inf
23
武汉理工大学毕业设计(论文)
如表4.5所示。包房信息表中,ROOM_ID为房间编号,是表中的主键;NUM_OF_TABLE为包间中桌位的数量;ROOM_NAME为包间名称;CAN_ACC_NUM为包间可容纳人数;ROOM_STATE为包间状态标记。
表4.5包房信息表room_inf
字段名称 ROOM_ID NUM_OF_TABLE ROOM_NAME CAN_ACC_NUM ROOM_STATE 数据类型 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 说明 包房编号,不允许空值。 包房桌位数量,不允许空值。 包房名称,不允许空值。 包房可容纳人数,不允许空值。 包房状态标记,不允许空值。 6) 桌位信息表dining_table_and_viprooms_inf
如表4.6所示。桌位信息表中CUSTOMER_NAME为顾客用户名,初始状态该字段为空,当有用户登录时,系统根据客户端主机名,将客户姓名更新到该字段;ROOM_ID为房间编号,ROOM_TABLE_ID为桌位编号,ROOM_ID与ROOM_TABLE_ID为该表的联合主键;LOCALHOST_NAME为主机名,考虑到一个表只有一个主键,该表中将LOCALHOST_NAME作为表的唯一约束,即唯一非聚集索引。TABLE_STATE为桌位状态,初始时,该状态为0;CAN_ACC_NUM桌位可容纳人数。
表4.6桌位信息表dining_table_and_viprooms_inf
字段名称 CUSTOMER_NAME ROOM_ID ROOM_TABLE_ID LOCALHOST_NAME TABLE_STATE CAN_ACC_NUM 数据类型 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 说明 客户用户名,允许空值。 包房编号,不允许空值。 桌位编号,不允许空值。 客户端主机名,不允许空值。 桌位状态标记,允许空值。 桌位可容纳人数,不允许空值。 7) 桌位状态信息表table_state_inf
如表4.7所示。桌位状态信息表中,STATE_MARK为桌位状态标记,是该表的一个主键;STATE_NAME为状态名称。
表4.7桌位状态信息表table_state_inf 字段名称 STATE_MARK STATE_NAME 数据类型 VARCHAR2 VARCHAR2 说明 桌位状态标记,不允许空值。 桌位状态名称,不允许空值。 8) 历史订单信息表the_history_menu_inf
24