版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
21/21目录TOC\o"1-3"\h\u289531.课题名称及目标 1307352.需求分析1221702.1数据需求19322.2事务需求2311532.3数据流3231592.4数据字典5183.数据库结构设计8177763.1概念设计8268713.1.1分E-R图的建立884323.1.2整体E-R图9227953.2逻辑设计10311303.2.1E-R图向关系模型的转换10170213.2.2优化处理1162873.2.3用户子模式建立12130134.数据库物理设计12170234.1存储过程1372324.2触发器13184815.数据库的实施13241745.1在SQL中数据库实施13154835.1.1数据库及数据库对象的建立13131125.1.2数据入库157015.2数据库测试1514535.2.1对建立的数据库及数据库对象进行测试15169796.总结29118227.附录301.课题名称及目标本次实训要设计的数据库课题名称是餐厅管理系统。餐厅管理系统的功能主要包括顾客点菜、结账、对员工资料进行管理、对餐桌信息进行统一设置、对消费情况进行查询等功能。基本功能如下:〔1菜谱信息管理:对菜谱进行增、查、改、删操作。即可查询当前餐厅所推出的菜品,增加菜品,修改菜品的价格,删除菜品。〔2餐桌信息管理:能查询当前餐厅中所有餐桌的座位数以及使用情况,客人可以对位实现的餐桌进行使用申请。〔3顾客信息管理:可以查询顾客的相关信息,如性别,年龄,联系方式等。当有新顾客时,可添加新顾客的信息。〔4顾客下订单功能:实现下订单,具有唯一的订单号,可用于结账。可根据顾客的人数选择相应的餐桌号,并且能够指定服务员。〔6顾客点菜:实现顾客点菜功能。顾客可以对所下的订单进行修改,即可删除所点的菜品或是修改数量。同时可以查询某位顾客的订单。〔7顾客结账:根据订单号进行结账〔防止有相同姓名的顾客,以致结错帐。能够根据消费金额进行对应的折扣,并把消费信息存档到消费记录中去。2.需求分析通过了解餐饮行业的特点和实际情况,从分析饭店的基本情况入手,结合要实现的功能,对系统的可行性进行分析,为提高其可行性,故做了以下数据分析。2.1数据需求餐桌数据包括餐桌号、座位数、状态〔空/有人餐厅存储有顾客信息,员工信息。菜品信息有菜品编号、名称、类别、价格等具体数据需求如下:◎下订单阶段需要的数据顾客信息:包括顾客编号。订单信息:包括订单编号、消费时间。餐桌信息:包括编号、可容人数、使用状态等员工信息:包括员工工号。◎点菜阶段需要的数据订单信息:订单编号菜品信息:包括菜品编号、菜品名称、菜品数量等。◎结账阶段需要的数据:订单信息:包括订单编号、顾客编号菜品信息:包括菜品编号、菜品名称、菜品数量等。员工信息:包括员工工号折扣信息:包括消费金额、折扣数◎员工管理需要的数据:员工档案:包括工号、姓名、性别、工资◎顾客管理需要的数据:顾客档案:包括编号、姓名、性别等。◎消费记录管理需要的数据有:消费信息:订单编号、消费金额、折扣后金额、结账时间2.2事务需求数据录入录入顾客信息录入餐桌信息录入员工信息录入菜品信息数据更新/删除更新/删除餐桌信息更新/删除菜谱菜品信息更新/删除员工信息更新/删除顾客信息更新/删除订单菜品信息数据查询查询可用餐桌信息查询在售菜品信息查询订单信息查询顾客点菜信息查询员工信息查询顾客消费信息2.3数据流〔1顶层数据流P1订单处理E2P1订单处理E2服务员E1顾客负责F1F1变更信息第一层数据流P2.2点菜处理F2.1P2.2点菜处理F2.1折扣P2.1P2.1直接下单E2.1顾客E2.3服务员P2.3结账E2.2E2.1顾客E2.3服务员P2.3结账E2.2订单<3>第二层数据流点菜业务申请变更点菜处理反馈变更点菜处理查看菜谱判断变更方式查看菜谱判断变更方式变更处理加菜、减菜变更处理直接下单直接下单存储账单订单顾客就位生成账单存储账单订单顾客后台处理存储订单后台处理存储订单点菜业务2.4数据字典数据项Foodtable<餐桌>数据项属性存储代码类型长度餐桌号Foodtablenovarchar10座位数seatingnoint使用状态Foodtablestatevarchar10Menus〔菜谱数据项属性存储代码类型长度编号Dishnovarchar10名称Dishnamevarchar10类别Dishclassvarchar10价格DishpricefloatWorker〔员工数据项属性存储代码类型长度工号Workernovarchar10姓名Workernamevarchar10性别Workersexvarchar4年龄Workerageint工资WorkersalaryintCustomer〔顾客数据项属性存储代码类型长度编号Customernovarchar10姓名Customernamevarchar10性别Customersexvarchar4联系方式Customerphonenovarchar20Oder〔订单数据项属性存储代码类型长度订单编号Odernovarchar10顾客编号Customernovarchar10消费时间consumetimedatetime餐桌编号Foodtablenovarchar10服务员编号Workernovarchar10Menus_Oder〔点菜数据项属性存储代码类型长度订单编号Odernovarchar10菜品编号Dishnovarchar10菜品名称Disnnamevarchar10菜品数量Dish_amountintDiscount_rules〔折扣规则数据项属性存储代码类型长度消费金额Consumptionfloat折扣DiscountfloatSales_bill〔消费账单数据项属性存储代码类型长度订单编号Odernovarchar10消费金额Consumptionfloat折扣后金额after_discountfloat账单时间Billtimeint数据结构编号数据结构名属性1餐桌信息餐桌号、座位数、使用状态2菜谱编号、名称、类别、价格3员工信息工号、姓名、性别、年龄、工资4顾客信息编号、姓名、性别、联系方式5订单信息订单编号、顾客编号、消费时间、餐桌编号、服务员编号6点菜订单编号、菜品编号、菜品名称、菜品数量7折扣规则消费金额、折扣8消费账单订单编号、消费金额、折扣后金额、账单时间数据流编号数据流名输入输出1菜品信息修改菜品菜谱2空闲餐桌选择餐桌订单3点菜信息加菜退菜点菜4记入账单订单结账5结账折扣方式结账数据存储编号数据存储名输入输出1顾客信息更新顾客新信息顾客信息2菜谱更新新增菜品菜谱3订单储存订单订单信息4餐桌更新新增餐桌餐桌5账单存储消费信息账单记录处理过程编号处理过程名输入数据流输出数据流1顾客点菜菜谱订单2结账订单账单记录3.数据库结构设计3.1概念设计3.1.1分E-R图的建立订单形成过程1n111nnn1n负责包含菜品选择菜谱顾客查看生成订单1n111nnn1n负责包含菜品选择菜谱顾客查看生成订单服务员服务员
〔2结账形成过程消费金额包含支付顾客订单对应消费金额包含支付顾客订单对应折扣规则对应3.1.2整体E-R图折扣规则对应111对应1111111对应1111111nnnnn工资对应员工折扣销售记录账单支付保存位置餐桌负责订单下单包含菜品选择查看顾客菜谱3.2逻辑设计111对应1111111对应1111111nnnnn工资对应员工折扣销售记录账单支付保存位置餐桌负责订单下单包含菜品选择查看顾客菜谱3.2.1E-R图向关系模型的转换转换规则一个实体型转换成一个关系模型。实体的属性就是关系的属性,实体的码就是关系的码。实体型间的联系常有如下不同的情况:一个1:1联系可以转换为一个独立的关系模式,也可以任意一端对应的关系模式合并。一个1:n联系可以转换成一个独立的关系模式,也可以与n端对应的关系模式合并。一个m:n联系转换成一个关系模式。3或3个以上实体间的一个多联系可以转换成一个关系模式。具有相同码的关系模式可合并。B.根据以上规则得到如下关系模型〔下划线的属性为主码菜谱〔菜品编号,菜品名称,菜品类别,菜品价格顾客〔顾客编号,姓名,性别,年龄,联系方式餐桌〔餐桌号,座位数,使用状态员工〔工号,姓名,性别,年龄,工资订单〔订单编号,顾客编号,消费时间,餐桌编号,服务员编号菜谱_订单〔订单编号,菜品编号,菜品名称,菜品数量消费记录〔订单号,消费金额,折扣后金额,账单时间折扣规则〔消费金额,折扣3.2.2优化处理确定数据依赖。对各个关系模式间的数据依赖进行极小化分析,减小冗余。按照数据依赖的理论对关系模式进行分析,看是否存在部分函数依赖或函数传递或多值依赖等,确保各关系模式满足第三范式。按照需求分析阶段得到的处理要求,分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解。对关系模式进行必要的分解,分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解。3.2.3用户子模式建立名称描述插入新顾客信息若是新顾客,则插入顾客的信息,姓名,性别等下单就位顾客来餐,下订单,分配餐桌点菜存储顾客所点的菜品删除菜品删除顾客所点的某菜品修改菜品数量修改顾客所点的某菜品的数量查询顾客点菜信息查询顾客所点的菜品消费总额计算顾客本次消费的总额。顾客支付完账单时,把消费信息存档到消费记录中结账后更改餐桌状态当顾客结账后,把餐桌状态改为"空"删除菜谱中菜品删除菜谱中存在的某菜品修改菜品价格修改菜谱中某菜品的价格向菜谱添加菜品向菜谱添加新菜品trig_discount触发器,顾客进行结账时,消费金额在不同的区间会有不同的折扣。trig_Sales_bill触发器,当消费金额达到一定额数时,会送相应优惠券trig_Menus触发器,当向菜谱添加新菜品,若该菜品名称含有"红"字,会发出"此后生意必定红红火火"的祝福语。4.数据库物理设计数据库在物理设备上的存储结构与存取方法就是数据库的物理结构,它依赖于选定的数据库管理系统,为一个给定的逻辑数据模型选取一个最合适的应用环境的物理结构过程,就是数据库的物理设计。这一阶段主要任务时确定数据库的物理结构,并不断的进行优化处理,主要建立索引,触发器,存储过程。4.1存储过程存储过程可以实现数据库操作的增删改功能,在执行时需要调用。御用像函数一样,也可以有参数的参与。定义存储过程提供了过程封装的效果,执行只需要调用,在更大程度上简化了数据处理过程。餐饮管理具体存储过程名称和作用详见3.2.3,具体代码详见第5.2.1部分4.2触发器餐饮管理具体触发器的名称和作用详见3.2.3,具体代码详见第5.2.1部分5.数据库的实施5.1在SQL中数据库实施5.1.1数据库及数据库对象的建立createdatabaseRestaurant_Management建表createtableMenus--菜谱<Dishnovarchar<10>primarykey,Dishnamevarchar<10>,Dishclassvarchar<10>,Dishpricefloat,>createtableCustomer--顾客<Customernovarchar<10>primarykey,Customernamevarchar<10>notnull,Customersexvarchar<4>check<Customersex='男'orCustomersex='女'>notnull,Customerphonenovarchar<20>uniquenotnull,>createtableFoodtable--餐桌<Foodtablenovarchar<10>primarykey,seatingnointnotnull,Foodtablestatevarchar<6>check<Foodtablestate='空'orFoodtablestate='有人'>,>droptableOdercreatetableOder--订单<Odernovarchar<10>primarykey,Customernovarchar<10>notnull,consumetimedatetimenotnull,Foodtablenovarchar<10>notnull,Workernovarchar<10>notnull,foreignkey<Customerno>referencesCustomer<Customerno>,foreignkey<Foodtableno>referencesFoodtable<Foodtableno>,foreignkey<Workerno>referencesWorker<Workerno>,>createtableWorker--员工<Workernovarchar<10>primarykey,Workernamevarchar<10>,Workersexvarchar<4>check<Workersex='男'orWorkersex='女'>,Workerageint,Workersalaryint,>droptableMenus_OdercreatetableMenus_Oder--点菜<Odernovarchar<10>,Dishnovarchar<10>,Disnnamevarchar<10>,Dish_amountintnotnull,Primarykey<Dishno,Oderno>,foreignkey<Dishno>referencesMenus<Dishno>,foreignkey<Oderno>referencesOder<Oderno>,>droptableSales_billcreatetableSales_bill--销售账单<Odernovarchar<10>primarykey,Consumptionfloat,after_discountfloat,Billtimedatetime,foreignkey<Oderno>referencesOder<Oderno>>droptableDiscount_rulescreatetableDiscount_rules--折扣规则<Consumptionfloatprimarykey,Discountfloat,>5.1.2数据入库本系统采用将数据逐条录入的方法。5.2数据库测试5.2.1对建立的数据库及数据库对象进行测试〔1存储过程插入新顾客信息dropprocedure插入新顾客信息createprocedure插入新顾客信息<@Customernovarchar<10>,@Customernamevarchar<10>,@Customersexvarchar<4>,@Customerphonenovarchar<20>>asinsertintoCustomervalues<@Customerno,@Customername,@Customersex,@Customerphoneno>select*fromCustomer验证execute插入新顾客信息'112699','李阳','男',下单就位dropprocedure下单就位createprocedure下单就位<@Odernovarchar<10>,@Customernovarchar<10>,@consumetimedatetime,@Foodtablenovarchar<10>,@Wokernovarchar<10>>asbegintransaction--开始事务insertintoOdervalues<@Oderno,@Customerno,@consumetime,@Foodtableno,@Wokerno>if<<selectFoodtablestatefromFoodtablewhereFoodtableno=@Foodtableno><>'空'>beginprint'该餐桌有人,请重选餐桌。'RollbacktranreturnendelsebeginupdateFoodtablesetFoodtablestate='有人'whereFoodtableno=@Foodtablenoprint'下单成功,请就位开始点菜'endcommittran验证execute下单就位'O_001','112699','2013-12-26','TB_005','W_002'execute下单就位'O_002','112698','2013-12-26','TB_004','W_003'当餐桌有人时,则显示成功下单时,则显示查看下单情况select*fromOderselect*fromFoodtable菜谱的查询select*fromMenus删除菜谱中菜品createprocedure删除菜谱中菜品@Dishnovarchar<10>asdeletefromMenusWhereDishno=@Dishnoselect*fromMenus验证execute删除菜谱中菜品'D_112'修改菜品价格createprocedure修改菜品价格<@Dishnovarchar<10>,@Dishpricefloat>asupdateMenussetDishprice=@DishpriceWhereDishno=@Dishnoselect*fromMenus验证execute修改菜品价格'D_113','30'向菜谱增加菜品createprocedure向菜谱增加菜品<@Dishnovarchar<10>,@Dishnamevarchar<10>,@Dishclassvarchar<10>,@Dishpricefloat>asinsertintoMenusvalues<@Dishno,@Dishname,@Dishclass,@Dishprice>select*fromMenus验证execute向菜谱增加菜品'D_112','时蔬','小炒类','20'点菜的增加、查询、删除、修改点菜createprocedure点菜<@Odernovarchar<10>,@Dishnovarchar<10>,@Disnnamevarchar<10>,@Dish_amountint>asinsertintoMenus_Odervalues<@Oderno,@Dishno,@Disnname,@Dish_amount>select*fromMenus_OderwhereOderno=@Oderno验证execute点菜'O_001','D_111','小炒河虾','2'execute点菜'O_001','D_114','鸡蛋炒芹菜','1'execute点菜'O_001','D_115','三鲜汤','3'查询客户点菜信息createprocedure查询顾客点菜信息@Customernovarchar<10>asselectCustomerno=@Customerno,Menus.Dishno,Dishname,Dish_amountfromMenus,Menus_Oder,OderwhereOder.Customerno=@CustomernoandMenus.Dishno=Menus_Oder.DishnoandOder.Oderno=Menus_Oder.Oderno验证execute查询顾客点菜信息'112699'删除菜品createprocedure删除菜品<@Odernovarchar<10>,@Dishnovarchar<10>>asdeletefromMenus_OderWhereOderno=@OdernoandDishno=@Dishnoselect*fromMenus_OderwhereOderno=@Oderno验证execute删除菜品'O_001','D_111'修改菜品数量createprocedure修改菜品数量<@Odernovarchar<10>,@Dishnovarchar<10>,@Dish_amountint>asupdateMenus_OdersetDish_amount=@Dish_amountWhereOderno=@OdernoandDishno=@Dishnoselect*fromMenus_OderwhereOderno=@Oderno验证execute修改菜品数量'O_001','D_111','3',计算总消费额DROPprocedure消费总额createprocedure消费总额<@Odernovarchar<10>,@Consumptionfloatoutput,@discountfloatoutput>asselect@Consumption=SUM<Dishprice*Dish_amount>fromMenus_Oder,Menus,OderwhereMenus.Dishno=Menus_Oder.DishnoandOder.Oderno=Menus_Oder.OdernoandOder.Oderno=@Odernobegintran启用事务ifexists<selectConsumptionfromDiscount_ruleswhereConsumption=@Consumption>--判断Discount_rules中是否有对应折扣beginselect@discount=DiscountfromDiscount_ruleswhereConsumption=@ConsumptionendELSEbeginINSERTintoDiscount_rules<Consumption>VALUES<@Consumption>--将@Consumption插入到Discount_rulesselect@discount=DiscountfromDiscount_ruleswhereConsumption=@Consumption--获取对应折扣endifexists<selectOdernofromSales_billwhereOderno=@Oderno>--判断消费账单是否已有该消费记录beginprint'消费记录已插入消费账单,别重复插入'endelsebegininsertintoSales_bill<Oderno,Consumption,after_discount,Billtime>values<@Oderno,@Consumption,@Consumption*@discount,GETDATE<>>print'成功将消费记录插入到消费账单'endcommittran--提交事务验证declare@Consumptionfloat,@discountfloat,@Odernovarchar<10>='O_001'execute消费总额'O_001',@Consumptionoutput,@discountoutputselectOderno,Customername,@Consumption总消费,@discount折扣fromOder,CustomerwhereCustomer.Customerno=Oder.CustomernoandOderno=@Oderno并把消费信息插入到消费记录中若已经结账,则提示结账后餐桌状态createprocedure结账后更改信息@Odernovarchar<10>asupdateFoodtable修改餐桌状态setFoodtablestate='空'whereFoodtableno=<selectFoodtablenofromOderwhereOderno=@Oderno>验证execute结账后更改信息'O_001'对菜谱的操作查询菜谱select*fromMenus删除菜谱中菜品createprocedure删除菜谱中菜品@Dishnovarchar<10>asdeletefromMenusWhereDishno=@Dishnoselect*fromMenus验证execute删除菜谱中菜品'D_112'执行前:执行后:修改菜品价格createprocedure修改菜品价格<@Dishnovarchar<10>,@Dishpricefloat>asupdateMenussetDishprice=@DishpriceWhereDishno=@Dishnoselect*fromMenus验证execute修改菜品价格'D_113','40'执行后:向菜谱增加菜品createprocedure向菜谱增加菜品<@Dishnovarchar<10>,@Dishnamevarchar<10>,@Dishclassvarchar<10>,@Dishpricefloat>asinsertintoMenusvalues<@Dishno,@Dishname,@Dishclass,@Dishprice>select*fromMenus验证execute向菜谱增加菜品'D_112','时蔬','小炒类','20'执行后:〔2触发器折扣DROPtriggertrig_discountcreatetriggertrig_discountonDiscount_rulesforinsertasbegindeclare@expandfloatselect@expand=ConsumptionFrominsertedif<@expand<50>beginupdateDiscount_rulessetDiscount=1whereConsumption=@expandendelseif<@expand>=50and@expand<100>beginupdateDiscount_rulessetdiscount=0.95whereConsumption=@expandendelseif<@expand>=100and@expand<150>beginupdateDiscount_rulessetdiscount=0.90whereConsumption=@expandendelseif<@expand>=150and@e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 打架保证书告别冲动珍爱生命
- 下滑成绩的悔过保证书
- 苗木采购合同范本格式格式
- 短期借款合同
- 防火重于泰山生命高于一切
- 生鲜鸡蛋买卖协议
- 城市更新拆迁补偿
- 饲料购销半年合同
- 电信服务合同法律适用规定
- 惠州二手房买卖合同签订步骤
- 生态鸡养殖项目建议书
- 东北三省精准教学2024年12月高三联考语文试卷(含答案详解)
- 2024年竞聘公司经理演讲稿模版(3篇)
- 统编版(2024)七年级上册道德与法治第四单元追求美好人生测试卷(含答案)
- 《Python程序设计》课件-2:变量和数据类型
- 《住院患者身体约束的护理》团体标准解读课件
- 2024年安全员C证考试题库附答案很全
- 危险化学品生产装置和储存设施风险基准
- 2024年驾照新规理论考试C1理论考试试题题库及答案(共500题)
- 非遗“潮”起来 课件 2024-2025学年湘美版(2024)初中美术七年级上册
- 国家开放大学00335《电子商务概论》
评论
0/150
提交评论