1、 员工管理需要的数据: 员工档案:包括工号、姓名、性别、工资 顾客管理需要的数据: 顾客档案:包括编号、姓名、性别等。 消费记录管理需要的数据有: 消费信息:订单编号、消费金额、折扣后金额、结账时间2.2事务需求 数据录入 录入顾客信息 录入餐桌信息 录入员工信息 录入菜品信息 数据更新/删除 更新/删除餐桌信息 更新/删除菜谱菜品信息 更新/删除员工信息 更新/删除顾客信息 更新/删除订单菜品信息 数据查询 查询可用餐桌信息 查询在售菜品信息 查询订单信息 查询顾客点菜信息 查询员工信息 查询顾客消费信息2.3数据流(1)顶层数据流 负责(2)第一层数据流 菜谱 就位 生成 账单(3)第二层
2、数据流点菜业务 申请变更 反馈变更 加菜、减菜 点菜业务2.4数据字典1)数据项Foodtable(餐桌)数据项属性存储代码类型长度餐桌号Foodtablenovarchar10座位数seatingnoint使用状态FoodtablestateMenus(菜谱)数据项编号Dishno名称Dishname类别Dishclass价格DishpricefloatWorker(员工)数据项工号Workerno姓名Workername性别Workersex4年龄Workerage工资WorkersalaryCustomer(顾客)数据项CustomernoCustomernameCustomersex联
3、系方式Customerphoneno20Oder(订单)数据项Oderno顾客编号消费时间consumetimedatetime餐桌编号服务员编号Menus_Oder(点菜)数据项菜品编号菜品名称Disnname菜品数量Dish_amountDiscount_rules(折扣规则)数据项消费金额Consumption折扣DiscountSales_bill(消费账单)数据项折扣后金额after_discount账单时间Billtime2)数据结构数据结构名1餐桌信息餐桌号、座位数、使用状态2菜谱编号、名称、类别、价格3员工信息工号、姓名、性别、年龄、工资顾客信息编号、姓名、性别、联系方式5订单
4、信息订单编号、顾客编号、消费时间、餐桌编号、服务员编号6点菜订单编号、菜品编号、菜品名称、菜品数量7折扣规则消费金额、折扣8消费账单订单编号、消费金额、折扣后金额、账单时间3)数据流编号 数据流名 输入 输出 1 菜品信息 修改菜品 菜谱 2 空闲餐桌 选择餐桌 订单 3 点菜信息 加菜退菜 点菜 4 记入账单 订单 结账 5 结账 折扣方式 结账4)数据存储编号 数据存储名 输入 输出 1 顾客信息更新 顾客新信息 顾客信息 2 菜谱更新 新增菜品 菜谱 3 订单储存 订单 订单信息 4 餐桌更新 新增餐桌 餐桌 5 账单存储 消费信息 账单记录5)处理过程编号 处理过程名 输入数据流 输出
5、数据流 1 顾客点菜 菜谱 订单 2 结账 订单 账单记录3.数据库结构设计3.1概念设计(1)订单形成过程(2)结账形成过程3.2逻辑设计3.2.1 E-R图向关系模型的转换A.转换规则一个实体型转换成一个关系模型。实体的属性就是关系的属性,实体的码就是关系的码。实体型间的联系常有如下不同的情况:a.一个1:1联系可以转换为一个独立的关系模式,也可以任意一端对应的关系模式合并。b.一个1:n联系可以转换成一个独立的关系模式,也可以与n端对应的关系模式合并。c.一个m:n联系转换成一个关系模式。d.3或3个以上实体间的一个多联系可以转换成一个关系模式。e.具有相同码的关系模式可合并。B.根据以
6、上规则得到如下关系模型(下划线的属性为主码)菜谱(菜品编号,菜品名称,菜品类别,菜品价格)顾客(顾客编号,姓名,性别,年龄,联系方式)餐桌(餐桌号,座位数,使用状态)员工(工号,姓名,性别,年龄,工资)订单(订单编号,顾客编号,消费时间,餐桌编号,服务员编号)菜谱_订单(订单编号,菜品编号,菜品名称,菜品数量)消费记录(订单号,消费金额,折扣后金额,账单时间)折扣规则(消费金额,折扣)1)确定数据依赖。2)对各个关系模式间的数据依赖进行极小化分析,减小冗余。3)按照数据依赖的理论对关系模式进行分析,看是否存在部分函数依赖或函数传递或多值依赖等,确保各关系模式满足第三范式。4)按照需求分析阶段得
7、到的处理要求,分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解。5)对关系模式进行必要的分解,分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解。3.2.3 用户子模式建立描述插入新顾客信息若是新顾客,则插入顾客的信息,姓名,性别等下单就位顾客来餐,下订单,分配餐桌存储顾客所点的菜品删除菜品删除顾客所点的某菜品修改菜品数量修改顾客所点的某菜品的数量查询顾客点菜信息查询顾客所点的菜品消费总额计算顾客本次消费的总额。顾客支付完账单时,把消费信息存档到消费记录中结账后更改餐桌状态当顾客结账后,把餐桌状态改为“空”删除菜谱中菜品删除菜谱中存在的某菜品修
8、改菜品价格修改菜谱中某菜品的价格向菜谱添加菜品向菜谱添加新菜品trig_discount 触发器,顾客进行结账时,消费金额在不同的区间会有不同的折扣。trig_Sales_bill触发器,当消费金额达到一定额数时,会送相应优惠券trig_Menus触发器,当向菜谱添加新菜品,若该菜品名称含有“红”字,会发出“此后生意必定红红火火”的祝福语。4.数据库物理设计数据库在物理设备上的存储结构与存取方法就是数据库的物理结构,它依赖于选定的数据库管理系统,为一个给定的逻辑数据模型选取一个最合适的应用环境的物理结构过程,就是数据库的物理设计。这一阶段主要任务时确定数据库的物理结构,并不断的进行优化处理,主
9、要建立索引,触发器,存储过程。4.1存储过程存储过程可以实现数据库操作的增删改功能,在执行时需要调用。御用像函数一样,也可以有参数的参与。定义存储过程提供了过程封装的效果,执行只需要调用,在更大程度上简化了数据处理过程。4.2 触发器5.数据库的实施5.1在SQL中数据库实施create database Restaurant_Management-建表-create table Menus-菜谱(Dishno varchar(10) primary key, Dishname varchar(10), Dishclass varchar(10), Dishprice float,)creat
10、e table Customer-顾客(Customerno varchar(10) primary key,Customername varchar(10) not null,Customersex varchar(4) check (Customersex=男or Customersex=女) not null,Customerphoneno varchar(20) unique not null,create table Foodtable-餐桌(Foodtableno varchar(10) primary key,seatingno int not null,Foodtablesta
11、te varchar(6)check(Foodtablestate=空 or Foodtablestate=有人),drop table Odercreate table Oder-订单(Oderno varchar(10) primary key,Customerno varchar(10) not null,consumetime datetime not null,Foodtableno varchar(10) not null,Workerno varchar(10) not null,foreign key(Customerno) references Customer(Custom
12、erno),foreign key(Foodtableno)references Foodtable(Foodtableno),foreign key(Workerno) references Worker(Workerno),create table Worker-员工(Workerno varchar(10) primary key,Workername varchar(10), Workersex varchar(4) check(Workersex= or Workersex=Workerage int,Workersalary int,drop table Menus_Odercre
13、ate table Menus_Oder-点菜(Oderno varchar(10),Dishno varchar(10),Disnname varchar(10),Dish_amount int not null,Primary key(Dishno,Oderno),foreign key(Dishno) references Menus(Dishno),foreign key(Oderno) references Oder(Oderno),drop table Sales_billcreate table Sales_bill-销售账单(Oderno varchar(10) primary
14、 key ,Consumption float,after_discount float,Billtime datetime,foreign key(Oderno) references Oder(Oderno)drop table Discount_rulescreate table Discount_rules-折扣规则(Consumption float primary key, Discount float, 本系统采用将数据逐条录入的方法。5.2 数据库测试(1)存储过程-插入新顾客信息-drop procedure 插入新顾客信息create procedure 插入新顾客信息 (
15、Customerno varchar(10), Customername varchar(10), Customersex varchar(4), Customerphoneno varchar(20) )as insert into Customer values(Customerno,Customername,Customersex,Customerphoneno)select * from Customer-验证-execute 插入新顾客信息112699,李阳,-下单就位-drop procedure 下单就位create procedure 下单就位(Oderno varchar(1
16、0) ,Customerno varchar(10),consumetime datetime,Foodtableno varchar(10),Wokerno varchar(10)asbegin transaction -开始事务into Oder values(Oderno,Customerno,consumetime,Foodtableno,Wokerno ) if (select Foodtablestate from Foodtable where Foodtableno=Foodtableno) begin print 该餐桌有人,请重选餐桌。 Rollback tran retu
17、rn end else begin update Foodtable set Foodtablestate = where Foodtableno=Foodtableno下单成功,请就位开始点菜commit tran-验证-execute 下单就位O_0012013-12-26TB_005W_002O_002112698TB_004W_003当餐桌有人时,则显示成功下单时,则显示-查看下单情况-select * from Oder select * from Foodtable -菜谱的查询-select * from Menus-删除菜谱中菜品-create procedure 删除菜谱中菜
18、品Dishno varchar(10)deletefrom MenusWhere Dishno=Dishno-验证-execute 删除菜谱中菜品 D_112-修改菜品价格-create procedure 修改菜品价格Dishno varchar(10),Dishprice floatupdate Menusset Dishprice=Dishpriceselect * from Menus -验证-execute 修改菜品价格 D_11330-向菜谱增加菜品-create procedure 向菜谱增加菜品(Dishno varchar(10), Dishname varchar(10),
19、 Dishclass varchar(10), Dishprice floatinsert into Menusvalues(Dishno,Dishname,Dishclass,Dishprice)-验证-execute 向菜谱增加菜品时蔬小炒类20-点菜的增加、查询、删除、修改-点菜-create procedure 点菜(Oderno varchar(10),Disnname varchar(10),Dish_amount intinsert into Menus_Odervalues(Oderno,Dishno,Disnname,Dish_amount)select * from Men
20、us_Oder where Oderno=Oderno-验证-execute 点菜D_111小炒河虾2D_114鸡蛋炒芹菜1D_115三鲜汤3-查询客户点菜信息-create procedure 查询顾客点菜信息Customerno varchar(10)select Customerno=Customerno,Menus.Dishno,Dishname,Dish_amountfrom Menus,Menus_Oder,Oderwhere Oder.Customerno=Customerno and Menus.Dishno=Menus_Oder.Dishno and Oder.Oderno=Menus_Oder.Oderno-验证-execute 查询顾客点菜信息 -删除菜品-create procedure 删除菜品from Menus_OderWhere Oderno=Oderno and Dishno=Dishnoselect * from Menus_Oder where Oderno=Oderno execute 删除菜品 -修改菜品数量-create procedure 修改菜品数量update Menus_Oderset Dish_amount=Dish_amounte
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1