内蒙古科技大学本科生课程设计说明书题目:数据库课程设计——快餐预订系统***名:***学号:**********专业:计算机科学与技术班级:11-3班***师:**目录目录 01.需求分析 (2)1.1 课程设计题目要求 (2)1.2 系统分析 (2)1.2.1 系统开发目的 (2)1.2.2 系统分角色功能分析 (2)2.概念结构设计 (3)2.1 数据流设计 (3)2.1.1 数据流顶层图 (4)2.1.2 数据流一层图 (4)2.2 E-R图设计 (4)2.2.1 实体间总E-R图 (5)2.2.2 实体分E-R图 (5)3. 逻辑结构设计 (9)3.1 关系结构设计 (9)3.1.1 客户表client (9)3.1.2 职员表staff (9)3.1.3 分店表store (10)3.1.4 食品表food (11)3.1.5 配料表flavor (12)3.1.6 食品-配料关系表ffr (12)3.1.7 套餐表meal (13)3.1.8 订单表order (13)3.1.9 销售统计表sell (14)4. 物理设计 (15)4.1 索引存取 (15)4.1.1索引定义 (15)4.1.2 建立索引 (15)4.2 聚簇索引 (15)4.2.1 聚簇索引定义 (15)4.2.2 建立聚簇索引 (15)5. 数据库设计总结 (16)5.1 理解三个范式,正确认识数据冗余 (16)5.2 正确处理实体间多对多的关系 (16)1.需求分析1.1 课程设计题目要求客户需要注册之后才能登陆。
客户需要输入密码正确之后方可登陆系统,然后后才可以订、浏览、及取消订单。
客户当拿到食物之后才付款(可以不用考虑付款问题)客户可以选择哪一个分店来为他送订的东西。
快餐店出售套餐(两种食品组合或三种食品组合),套餐包括两菜(或三菜)另外加米饭和当天供应的汤。
用户可以自行选择由哪几样菜组成套餐。
一样菜可以另附一种或多种调料。
一个订单可以包括任意的菜,附加饮料。
经经理同意,某些食品可以打折。
1.2 系统分析1.2.1 系统开发目的快餐订餐系统是为了方便快餐公司更有利把握快餐市场,并且为消费者提供更便利的服务而设计开发的。
快餐订餐系统可为快餐公司向餐饮消费者提供更加便利的餐饮服务,也可为消费者提供更加明细的消费服务。
1.2.2 系统分角色功能分析快餐订餐系统使用用户的角色分为:客户,送货员(职员),餐饮经理(职员)。
1.客户功能1)注册订餐客户账号。
注册账号并完善个人信息。
2)订制套餐订单。
套餐可选择分店设置套餐优惠,也可根据个人喜好选择喜爱食物构成套餐。
客户可以选择同种食物的不同口味。
3)客户在订单中须写清送餐地址、个人有效联系方式,以便快餐及时送达。
4)客户收到订餐后再付费。
5)客户可对送餐服务进行满意度评价。
6)客户可取消个人快餐订单。
2.餐饮经理功能1)经理可浏览客户及所属分店职员信息。
2)经理可取消过期(一天以上)的订单信息。
3)经理可设定所属分店优惠套餐信息。
4)经理可对部分设置食物价格折扣。
3.送餐员功能1)送餐员可浏览所属分店订单信息。
2.概念结构设计2.1 数据流设计2.1.1 数据流顶层图2.1.2 数据流一层图2.2 E-R图设计2.2.1 实体间总E-R图2.2.2 实体分E-R图3. 逻辑结构设计3.1 关系结构设计注:使用数据库为MySQL数据库3.1.1 客户表client1)创建数据表CREATE TABLE `fastfood`.`client`(`client_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`client_nick` VARCHAR( 20 ) NOT NULL ,`client_pwd` VARCHAR( 20 ) NOT NULL ,`client_name` VARCHAR( 20 ) NOT NULL ,`client_tel` VARCHAR( 20 ) NOT NULL ,`client_add` VARCHAR( 1000 ) NOT NULL ,`client_time` TIME NOT NULL) ENGINE = MYISAM2)关系数据表3)数据表说明i.客户表是记录客户信息的数据表。
ii.client_id为客户数据表的主键。
iii.已注册客户(在客户表中存在的用户)可以对个人信息进行修改。
iv.分店经理可浏览所属分店客户信息。
v.送餐员没有对客户表操作的权限。
3.1.2 职员表staff1)创建数据表CREATE TABLE `fastfood`.`staff`(`staff_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `staff_num` VARCHAR( 20 ) NOT NULL , `staff_pwd` VARCHAR( 20 ) NOT NULL , `staff_name` VARCHAR( 20 ) NOT NULL , `staff_tel` VARCHAR( 20 ) NOT NULL , `staff_store` VARCHAR( 1000 ) NOT NULL , `staff_group` VARCHAR( 20 ) NOT NULL ) ENGINE = MYISAM 2) 关系数据表3) 数据表说明i. 职员表是记录分店职员信息的数据表。
ii. staff_id 是职员表的主键。
iii. 职员工号为其系统登录名。
iv. 分店经理可对其所属分店的员工信息进行修改。
v. 分店员工只可查看自己所属分店的员工信息。
vi. 客户不能对职员表进行任何操作。
3.1.3 分店表store1) 创建数据表CREATE TABLE `fastfood`.`store` (`store_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `store_name` VARCHAR( 1000 ) NOT NULL , `store_add` VARCHAR( 1000 ) NOT NULL , `store_tel` VARCHAR( 20 ) NOT NULL ) ENGINE = MYISAM 2) 关系数据表3)数据表说明i.分店表是记录快餐店各分店信息的数据表。
ii.store_id是分店表的主键。
iii.经理可浏览各店信息。
经理可对其所属分店信息进行修改。
iv.送餐员可浏览各店信息。
v.客户可浏览各店信息。
3.1.4 食品表food1)创建数据表CREATE TABLE `fastfood`.`food`(`food_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `food_name` VARCHAR( 20 ) NOT NULL ,`food_info` VARCHAR( 1000 ) NOT NULL ,`food_price` FLOAT NOT NULL ,`food_type` VARCHAR( 20 ) NOT NULL ,`food_discount` FLOAT NOT NULL) ENGINE = MYISAM2)关系数据表3)数据表说明i.食物表是记录快餐店各种食物信息的数据表。
ii.food_id是食物表主键。
iii.经理可对食物表进行添加、删除、修改的操作。
iv.送餐员可浏览该表信息。
v.客户可浏览该表信息。
3.1.5 配料表flavor1)创建数据表CREATE TABLE `fastfood`.`flavor`(`flavor_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`flavor_name` VARCHAR( 20 ) NOT NULL) ENGINE = MYISAM2)关系数据表3)数据表说明i.配料表是记录快餐各种食物所添加配料的数据表。
ii.flavor_id是配料表的主键。
iii.经理可对配料表进行添加、修改等操作。
iv.客户可浏览并依个人口味选择所选食物的配料。
3.1.6 食品-配料关系表ffr1)创建数据表CREATE TABLE `fastfood`.`ffr` (`ffr_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`flavor_id` INT NOT NULL ,`food_id` INT NOT NULL) ENGINE = MYISAM2)关系数据表3)数据表说明i.食物-配料关系表是记录食物和配料对应关系表。
ii.ffr_id是食物-配料表的主键。
iii.经理可对该表进行添加、修改的操作,设定各种食物配料对应关系。
iv.送餐员和客户无操作权限。
3.1.7 套餐表meal1)创建数据表CREATE TABLE `fastfood`.`meal` (`meal_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`meal_name` VARCHAR( 20 ) NOT NULL ,`food_id` INT NOT NULL) ENGINE = MYISAM2)关系数据表3)数据表说明i.套餐表是记录快餐店推出的优惠套餐的记录表。
(非实体表)ii.meal_id是套餐表的主键。
iii.经理可对套餐表进行修改、添加等操作。
iv.客户可浏览套餐信息。
客户也可根据个人喜好添加个人套餐信息。
3.1.8 订单表order1)创建数据表CREATE TABLE `fastfood`.`order` (`order_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`client_id` INT NOT NULL ,`store_id` INT NOT NULL ,`staff_id` INT NOT NULL ,`order_stime` TIME NOT NULL ,`order_evaluate` VARCHAR( 100 ) NOT NULL ,`order_tprice` FLOAT NOT NULL ,`order_state` VARCHAR( 100 ) NOT NULL ,`meal_id` INT NOT NULL) ENGINE = MYISAM2)关系数据表3)数据表说明i.订单记录表是记录用户订单信息的数据表。
ii.order_id是订单表的主键。
iii.经理可对订单表进行修改操作。
iv.送餐员可浏览订单表。
v.客户可添加、取消该订单。