火锅店点餐数据库设计_第一次实验报告

点餐数据库系统设计一

应用背景

本次实验的应用背景为火锅店点餐数据库系统,我们从整个用餐流程去考虑来进行实体对象的确认

用餐流程:

  1. 顾客进入餐厅

    顾客进入餐厅以后,前台需要确认顾客的人数,以及现在相匹配餐桌的闲置情况。(关于排队取号,无需使用数据库系统,只需要对每种类型的餐桌建立一个队列,就可以实现先到先得取号)

    因此需要建立餐桌实体(桌号,座位数,使用状态)

    使用状态需要包含 用餐中,清台字段值,以判断餐桌是否是闲置的状态。

  2. 顾客入座扫码点餐

    顾客入座以后扫码点餐,此时需要考虑顾客的种类,如果说是新顾客,就需要在后台生成一个新的顾客信息。

    开始扫码点餐会涉及三个实体,餐桌,订单,顾客,订单餐品

    由于开始扫码点餐,餐桌状态需要变成用餐中,此时餐桌显示使用中的状态。

    扫码之后会生成一个订单信息,先生成一个订单编号,顾客编号,桌号,开始点单时间,订单状态显示点单中。此时需要查询顾客名单,如果没有记录,是新顾客则生成一条新的顾客记录(顾客记录涉及到折扣的问题)。

    当顾客开始选择菜品时,则会在订单餐品中生成一条记录,记录订单编号,餐品,餐品数量

    顾客信息则包含顾客编号,VIP等级,累计消费金额。在我的设想中,我们需要记录顾客的消费总金额,根据累计值确认其VIP等级,对于越忠实的用户,我们予以越大的折扣力度。

  3. 顾客提交订单

    当顾客提交订单以后,说明顾客已经确认该订单将要点这么多菜,则需要在后厨的餐品库存中扣除这么多菜品,以防菜品供不应求。如果点的餐品超过了库存,则在提交的时候显示库存不足,同时还剩下多少餐品。

    如果成功提交订单,需要根据菜品价格和顾客的VIP等级算出总金额。

    如果客户退菜,则需要删除部分菜品,然后反向冲回;如果客户在提交订单后需要加菜,则生成一个新的订单即可。

  4. 顾客结账

    当顾客结账以后,则对顾客信息的累计消费额进行更新,同时更新顾客的VIP等级

    同时,订单的信息得到更新,订单状态变为已结账,同时记录结账时间。之所以要涉及这个环节,也是便于前台人员查看顾客是否结账。

  5. 服务员清理桌面

    当顾客离开时,此时桌面信息是已结账状态,此时需要服务员去清理桌面,当服务员清理完桌面之后,餐桌状态显示为清台状态,此时该餐桌可以接待下一位顾客。

  6. 下一位顾客

数据库信息可能应用的统计分析场景

该点餐系统包含订单,以及订单详情表,其中包含了菜品的数量,品种,以及下单时间,可以统计出哪些菜品比较受欢迎。

结合餐品的信息(单价、成本)可以计算出菜品毛利,结合销量,分析出哪些是明星产品。

同时,可以求出每天的毛利,分析毛利的波动,对餐厅营收进行监控。

通过统计每天的清台次数,可以计算翻台率,计算方法为(餐桌使用次数-总台位数)÷总台位数×100%,同时可以统计餐桌的使用次数,减少某类餐桌,增加某类餐桌。

触发器在sql server中,对于批量操作,trigger只被触发一次,需要使用游标进行遍历。

数据库创建

  1. 创建数据库restaurant
    在这里插入图片描述

    2、创建文件组

在这里插入图片描述

3、定义数据库文件,并映射到文件组

SQL Server 的数据存储在文件中,文件是实际存储数据的物理实体,文件组是逻辑对象,SQL Server 通过文件组来管理文件。

sql sever通过文件组对文件进行访问,其中主文件组(Primary File Group)是系统自动创建的,用户可以根据需要添加文件组

在这里插入图片描述

4、查看数据库占用情况

在这里插入图片描述

建立概念数据模型

  1. 创建CDM模型

    • 定义实体、属性、标识、约束;定义联系、定义联系的基数约束

      以下为概念数据模型 CDM,对概念模型的解释

      订单餐品为一个关联实体,由于订单和菜品是一个多对多关系,所以需要加入一个关联实体,生成一个联系表

      餐桌和前台员工也是多对多关系,因此也需要加入关联实体。

      其他实体都是根据应用场景分析得出的结果得到的

在这里插入图片描述

 选择模型的表示方法,采取ER图的表示方法	

在这里插入图片描述

 创建实体,关联实体,创建实体间的关系都是通过如下界面进行操作的。其中2.5位表示实体,关联实体。3、6位表示实体间的联系和实体与关联实体间的联系

在这里插入图片描述

 下面为对实体属性的操作

 创建实体名称,比如订单。其中name可以重复,code为实体的唯一表示不可重复。

在这里插入图片描述

 定义实体属性,确定实体的主码,以及确定哪些属性值是不可空缺的(mandatory勾选则表示不允许为空)

在这里插入图片描述

 定义餐桌属性的取值范围,以餐桌状态为例,属性可选取值有清台、用餐中、已结帐

在这里插入图片描述

 由于在设置属性时,已经规定了主码属性,因此系统自动生成了一个主码标识码

在这里插入图片描述

 定义联系及其约束

 以餐桌和订单之间的关系为例(如果是多对多关系,则需要加入关联实体),其中一个餐桌可以对应多个订单,而一个订单只对应一个餐桌

在这里插入图片描述

 因此在设计实体之间的关系的时候,采用的多对一的关系,指的是多个订单对应一个餐桌

 其中cardinalities栏表示的最大基数约束,下面两栏表示的是最小基数约束。dependent表示实体间是否存在强弱实体关系,显然不存在强弱实体关系。

在这里插入图片描述

 定义继承关系,员工分为前台员工、后台员工,前台员工主要是服务于顾客的,在该关系图中,需要前台员工进行台面清理的工作,因此我们采用继承的方法,将两类员工分开。其中在继承中的属性-generation中设定为只继承主属性,减少内存占用量。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. CDM模型检查

在这里插入图片描述

以上提醒是由于继承关系引起的,无需考虑

建立物理数据模型

  1. 转化物理模型

在这里插入图片描述

由于我之前已经操作过一次,当我对概念模型修改时,只需要选择update选项,即可将修改操作添加到物理模型中。detail里我选择物理模型的数据删除更新规则为级联操作

在这里插入图片描述

以下为概念数据模型转物理数据模型的结果

在这里插入图片描述

  1. 查看并修改Table的定义

    点开顾客表,查看顾客属性,我发现生日属性并不是表中所需要的属性,因此我们将这个属性进行删除。

在这里插入图片描述

顾客表中选择物理存储属性,指定数据存储到FG2文件组,之后经过实验发现,textimage_on只有在使用大数据字段时,才需要将数据记录在指定的文件组中。如果将最后的脚本结果放入sql sever中运行会报错。

在这里插入图片描述

索引关系,表示了参照关系与被参照关系之间的关联关系

在这里插入图片描述

preview可以查看生成表的sql语句代码

在这里插入图片描述

表索引,以订单表为例,有主键、以及外键的对应关系。

  1. 查看并修改表之间的关联引用

    修改表之间的关联属性
    在这里插入图片描述

  2. 增加数据库对象,如触发器、视图等

​ 定义触发器:

​ 1、触发器点单:当插入一条订单信息(订单编号,顾客编号,桌号,开始点单时间,订单状态)前,对插入的信息进行判断,如果插入的顾客编号在顾客表 中没有记录,说明是一位新顾客,则需要现在顾客表中先生成一条新的顾客记录,然后再插入订单信息。否则由于被参照关系中不含该主键,会报错。同时, 当插入该条订单信息时,餐桌状态变更为 用餐中。需要注意的是,对于sql server 是没有before操作的,因此只能使用instead of,在做完插入前的操作后, 再将订单信息插入。

--这部分触发器可以正常使用
create trigger Dian on 订单 instead of insert as
begin
	declare @cus char(20),
	@ding varchar(20)
	declare gu cursor for select 顾客编号,订单编号 from inserted
	open gu
	fetch gu into @cus,@ding
	while(@@FETCH_STATUS=0)
	begin
		if(@cus not in (select 顾客编号 from 顾客))
		begin
			insert into 顾客(顾客编号,VIP等级,累计消费) values ((select 顾客编号 from inserted where 顾客编号 not in (select 顾客编号 from 顾客)),'0',0)
		end
		update 餐桌 set 餐桌状态='用餐中' where 桌号 in (select 桌号 from inserted)
		insert into 订单 select * from inserted where 订单编号=@ding
		fetch gu into @cus,@ding
	end
	close gu
	deallocate gu
end
go

​ 2、触发器点单时:在点单时,当顾客选中某一个菜品时(插入一条点单信息),如果超过库存则提醒什么菜超库存,如果未超库存,则在库存中减去相应的 菜品

--这部分触发器运行速度还行
create trigger submit on 订单餐品 after insert as
begin
    declare @ding char(20),--订单编号
            @cai varchar(20),--菜品编号
            @numb int,--餐品数量
            @nam varchar(20)

    declare s cursor for select 订单编号,菜品编号,餐品数量 from inserted
    open s
    fetch s into @ding,@cai,@numb
    while(@@fetch_status=0)
    begin
		if(@numb>(select 菜品存量 from 菜品 where 菜品编号=@cai))
		begin
			select @nam=菜品名称 from 菜品 where 菜品编号=@cai
			print '抱歉,您点的'+@nam+'已超过存量'
			delete from 订单餐品 where 订单编号=@ding and 菜品编号=@cai
		end  
		else
		begin
			update 菜品 set 菜品存量=菜品存量-@numb where 菜品编号=@cai
		end
		fetch s into @ding,@cai,@numb
    end
	close s
	deallocate s
end
go

​ 3、触发器在提交订单和结账之后依照情况,如果是提交订单之后,生成一个总金额;如果是结账之后,餐桌信息改为已结账,顾客信息的累计消费和VIP等级 随之改变。由于两层游标速度非常慢,这时我想到可以使用连接查询,很好的解决了多表遍历的 问题。

--速度可以,采用连接查询ok
create trigger Pay2 on 订单 after update as
begin
    declare @ding char(20),--订单编号
            @total float,--总金额
            @cai varchar(20),--菜品编号
            @numb int,--菜品数量
            @jia float(8), --菜品价格
            @status varchar(20), --订单状态
            @disc float(8),--折扣
            @cus char(20),--顾客编号
            @lei float(8)--顾客累计金额
    declare saa cursor for select 订单编号,订单状态,顾客编号 from inserted
    open saa
    fetch saa into @ding,@status,@cus
    while(@@fetch_status=0)
    begin
        set @total=0
        if(@status='已提交') 
          begin
           select @total=sum(a.餐品数量*b.菜品单价) from 订单餐品 as a left join 菜品 as b on a.菜品编号=b.菜品编号 where a.订单编号=@ding
		   select @total=@total*(select 折扣 from 折扣 where VIP等级=(select VIP等级 from 顾客 where 顾客编号=@cus))
		   update 订单 set 总金额=@total where 订单编号=@ding
		end
        else if(@status='已结账')
        begin
            select @total=总金额 from inserted where 订单编号=@ding
            select @lei=累计消费 from 顾客 where 顾客编号=@cus
            set @lei=@lei+@total--更新累计金额
            update 顾客 set 累计消费=@lei where 顾客编号=@cus
			update 餐桌 set 餐桌状态='已结账' where 桌号=(select 桌号 from 订单 where 订单编号=@ding)
        end
        fetch saa into @ding,@status,@cus
    end
    close saa
    deallocate saa
end
go

​ 4、如果有删除记录,如果是订单已提交,则需要对餐品库存进行冲回。订单总金额也要随之变动。

--该触发器正常使用
create trigger Tui on 订单餐品 after delete as
begin
    declare @ding char(20),--订单编号
            @cai varchar(20),--菜品编号
            @numb int,--餐品数量
            @sta varchar(20),--订单状态
            @jia float(8),--菜品单价
            @cus char(20),--顾客编号
            @mon float(8),--某一菜品需要的价格
            @zhe float(8)--折扣
    declare sa cursor for select 订单编号,菜品编号,餐品数量 from deleted
    open sa
    fetch sa into @ding,@cai,@numb
    while(@@fetch_status=0)
    begin
        select @sta=订单状态,@cus=顾客编号 from 订单 where 订单编号=@ding
        if(@sta='已提交')
        begin
            update 菜品 set 菜品存量=菜品存量+@numb where 菜品编号=@cai--更新库存
            select @jia=菜品单价 from 菜品 where 菜品编号=@cai
            select @zhe=折扣 from 折扣 where VIP等级=(select VIP等级 from 顾客 where 顾客编号=@cus)
            set @mon=@numb*@jia*@zhe
            update 订单 set 总金额=总金额-@mon where 订单编号=@ding  
        end
        else if(@sta='点单中')--直接冲回即可
        begin
        	update 菜品 set 菜品存量=菜品存量+@numb where 菜品编号=@cai--更新库存
        end
        fetch sa into @ding,@cai,@numb
    end
	close sa
	deallocate sa
end
go

​ 5、清理餐桌如果增加一条记录,则相应的餐桌状态改变为 清台

create trigger Clean on 清理餐桌 after insert as
begin
    update 餐桌 set 餐桌状态='清台' where 桌号 in (select 桌号 from inserted)
end
go

其中,对于批量操作,触发器只执行一次,则需要对触发器内加游标。

但是,加入在触发器中加入游标的方式,对于系统效率会有所降低,因此可以采用子查询的方式来进行代替。因此将订单的触发器修改,当提交订单的时候只需要将顾客的累计消费部分进行更新。当顾客信息更新完毕以后,引发触发器,将VIP等级进行修改,此时减少了触发器内游标操作程序。

create trigger cha on 顾客 after updated as
begin    
    update 顾客 set VIP等级='0' where 顾客编号 in (select 顾客编号 from inserted where 累计消费<1000)
    update 顾客 set VIP等级='1' where 顾客编号 in (select 顾客编号 from inserted where 累计消费>=1000 and 累计消费<2000)
    update 顾客 set VIP等级='2' where 顾客编号 in (select 顾客编号 from inserted where 累计消费>=2000 and 累计消费<4000)
    update 顾客 set VIP等级='3' where 顾客编号 in (select 顾客编号 from inserted where 累计消费>=4000 and 累计消费<10000)
    update 顾客 set VIP等级='4' where 顾客编号 in (select 顾客编号 from inserted where 累计消费>10000)
end            

测试数据

use Hotpot

insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('DAXS1BRGM0JY536', 'HVXNCGFANLH4EWSGHWX', '1', '2022-9-1 14:26:33', null,null,null, '点单中')

insert into 订单餐品(订单编号,菜品编号,餐品数量) values ('DAXS1BRGM0JY536','DU574',500),
('DAXS1BRGM0JY536','YJ673',100)

update 订单 set 提交订单时间='2022-9-1 14:30:33',订单状态='已提交' where 订单编号='DAXS1BRGM0JY536'
update 订单 set 提交订单时间='2022-9-1 15:10:33',订单状态='已结账' where 订单编号='DAXS1BRGM0JY536'
insert into 清理餐桌(桌号,员工号,清台时间) values ('1','194226','2022-9-1 15:20:33')

insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('AAAAABRGM0JY536', 'HVXNCGFANLH4EWSGHWX', '5', '2022-10-1 14:26:33', null,null,null, '点单中')

insert into 订单餐品(订单编号,菜品编号,餐品数量) values ('AAAAABRGM0JY536','DU574',10),
('AAAAABRGM0JY536','YJ673',20),
('AAAAABRGM0JY536','OL813',20)

update 订单 set 提交订单时间='2022-10-1 14:30:33',订单状态='已提交' where 订单编号='AAAAABRGM0JY536'
update 订单 set 提交订单时间='2022-10-1 15:10:33',订单状态='已结账' where 订单编号='AAAAABRGM0JY536'
insert into 清理餐桌(桌号,员工号,清台时间) values ('5','194230','2022-10-1 15:20:33')


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('BBBAABRGM0JY536', 'ANLH4EWSGHWX', '10', '2022-10-1 14:26:33', null,null,null, '点单中')

insert into 订单餐品(订单编号,菜品编号,餐品数量) values ('BBBAABRGM0JY536','DU574',10),
('BBBAABRGM0JY536','YJ673',20),
('BBBAABRGM0JY536','OL813',20)

update 订单 set 提交订单时间='2022-10-1 14:30:33',订单状态='已提交' where 订单编号='BBBAABRGM0JY536'
delete from 订单餐品 where 订单编号='BBBAABRGM0JY536' and 菜品编号='OL813'
update 订单 set 提交订单时间='2022-10-1 15:10:33',订单状态='已结账' where 订单编号='BBBAABRGM0JY536'
insert into 清理餐桌(桌号,员工号,清台时间) values ('10','194229','2022-10-1 15:20:33')

insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('CBBAABRGM0JY536', 'ANLH4EWSGHWX', '10', '2022-10-1 14:26:33', null,null,null, '点单中')

insert into 订单餐品(订单编号,菜品编号,餐品数量) values ('CBBAABRGM0JY536','DU574',10),
('CBBAABRGM0JY536','YJ673',20),
('CBBAABRGM0JY536','OL813',20)

update 订单 set 提交订单时间='2022-11-1 14:30:33',订单状态='已提交' where 订单编号='CBBAABRGM0JY536'
delete from 订单餐品 where 订单编号='CBBAABRGM0JY536' and 菜品编号='OL813'
update 订单 set 结账时间='2022-11-1 15:10:33',订单状态='已结账' where 订单编号='CBBAABRGM0JY536'
insert into 清理餐桌(桌号,员工号,清台时间) values ('10','194229','2022-11-1 15:20:33')

5、定义数据库、视图、架构、存储过程

由于暂时没有考虑到视图、架构、存储过程的应用场景,因此只展示操作过程

定义数据库

在这里插入图片描述

定义架构
在这里插入图片描述

定义视图

在这里插入图片描述

定义存储过程

之后对数据库数据进行统计分析时会使用到存储过程

在这里插入图片描述

数据库连接与对象操作

  1. 数据库连接

    • 连接配置

      创建ODBC数据源,这里我创建了一个新的数据源-Study1,建立连接

在这里插入图片描述

  • 数据库连接

    需要注意的是,建立连接的时候,需要选择一个sql sever服务器,需要在sql server配置管理器中打开SQL server的浏览器服务,否则将无法显示可选择的服务器

在这里插入图片描述

  • 数据库连接信息
    在这里插入图片描述
  1. 生成数据库

    指的是将物理模型转化为sql sever语句,生成脚本文件
    在这里插入图片描述

数据导入和导出\生成测试数据

  1. 生成测试数据

    首先,初步想法是对于菜品,折扣,员工,前台员工,后台员工,餐桌初始信息并不使用随机产生数据的方法,而是直接导入csv/excel文件的方式,其他表的外键则依据文件中的值进行随机生成,其中,对于顾客信息的随机生成插入,则使用了触发器判断,用于保证随机插入的数值VIP等级与累计消费能够匹配。

    首先我生成了下列的数据表格,然后采用任务-导入的方式导入所有的数据

在这里插入图片描述

导入数据,注意要先导入最初的主键,注意参照对象与被参照对象插入数据的先后顺序,以下是导入数据的界面(选择数据源excel,目标为Microsoft OLE DB for sql server)。同时注意导入数据库表的excel列名也需要一一对应。

在这里插入图片描述

这是其中一个表的数据导入结果

在这里插入图片描述

接着我们需要随机生成一些数据用于生成大量的随机测试数据,显然,测试数据的外键需要与主键对应。餐桌信息先插入,全变为清台状态

在这里插入图片描述

生成了一个随机插入测试数据的脚本,经过测试发现,随机生成的测试数据并不能很好的满足要求,需要在插入之后做进一步修改。

以下为最终的生成测试数据部分

use Hotpot
go

insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('V91MA6SVUSK2G2X', 'LchasWZRc8', '9', '2022-2-20 10:48:45', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('Q2EPU5EXCGWP0C2', '9D8G0t8Az8', '2', '2022-6-5 12:57:44', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('JG42SE5LJADRA3N', 'SDK07kIH4M', '3', '2023-12-18 22:54:20', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('SFP84FFTYK3R7HM', 'c7ialKtSsS', '4', '2023-6-23 20:13:21', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('G0GVQ226DWUG9SH', 'zbbGOPVuio', '1', '2022-3-14 11:22:6',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('OMXB4OQ3A1FSAJT', 'yFbZ9eoLla', '5', '2022-10-14 16:10:41', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('63KB3HLVDP03YY1', 'wGMqcVFO4s', '6', '2022-9-23 15:27:13', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('FUQSKSXXLQWS6SE', 'UgZPmRD6YU', '10', '2022-7-23 13:54:38',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('ITRJHW3MV6R1YT4', '5M76ZzJ0ti', '11', '2023-3-26 18:58:22',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('8MAQNAEXXSSX2S5', 'jUATBo7NTs', '12', '2022-1-1 10:0:0',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('VVOGTKR84L0XRSV', 'RpkqT5GI41', '13', '2022-11-7 16:58:26',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('EMO57X73RYUDJ82', 'IXHcaLiqGE', '14', '2023-10-7 21:44:37',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('M0B0C2G3QJUKS5I', '5pfJyCU40o', '16', '2023-8-16 21:6:17', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('V4TTI14UIQO1B0Y', 'B3qa1Bedmz', '17', '2022-8-17 14:32:50', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('RHK3I229AJLO1L5', 'rpfp6DxCZg', '19', '2023-2-21 18:31:8',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('1NMYP1QQ6B7GTFU', '6Hn69hEJyc', '22', '2023-11-17 22:14:50', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('DCYFQBS5OOHN74F', '3SopkokSqG', '23', '2023-1-14 18:10:36',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('OFYBSDCO40MT8UI', 'NeP9mpa0Cd', '24', '2023-5-6 19:48:44',  null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('FWE4PBQALAC6PMB', 'C3RlmmVJrO', '25', '2022-4-14 12:21:36', null, null,null, '点单中')
go


insert into 订单 (订单编号, 顾客编号, 桌号, 开始点餐时间, 提交订单时间, 总金额, 结账时间, 订单状态) values ('0SP7G7K3O5YCWAQ', '8chpxzLOgI', '40', '2022-12-21 17:23:11',  null, null,null, '点单中')
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('V91MA6SVUSK2G2X', 'DU574', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('Q2EPU5EXCGWP0C2', 'YJ673', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('JG42SE5LJADRA3N', 'IP121', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('SFP84FFTYK3R7HM', 'UB779', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('G0GVQ226DWUG9SH', 'OL813', 2)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('OMXB4OQ3A1FSAJT', 'LM445', 9)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('63KB3HLVDP03YY1', 'TW151', 6)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('FUQSKSXXLQWS6SE', 'IA894', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('ITRJHW3MV6R1YT4', 'BP789', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('8MAQNAEXXSSX2S5', 'GI146', 6)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('VVOGTKR84L0XRSV', 'NB418', 8)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('EMO57X73RYUDJ82', 'NX838', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('M0B0C2G3QJUKS5I', 'KO513', 5)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('V4TTI14UIQO1B0Y', 'BP836', 2)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('RHK3I229AJLO1L5', 'KO513', 8)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('1NMYP1QQ6B7GTFU', 'FY382', 9)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('DCYFQBS5OOHN74F', 'KO513', 7)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('OFYBSDCO40MT8UI', 'IZ698', 5)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('FWE4PBQALAC6PMB', 'ER224', 7)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('0SP7G7K3O5YCWAQ', 'VZ412', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('V91MA6SVUSK2G2X', 'NH816', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('Q2EPU5EXCGWP0C2', 'MI592', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('JG42SE5LJADRA3N', 'YF469', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('SFP84FFTYK3R7HM', 'FZ283', 2)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('G0GVQ226DWUG9SH', 'BW430', 9)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('OMXB4OQ3A1FSAJT', 'RC559', 6)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('63KB3HLVDP03YY1', 'SH163', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('FUQSKSXXLQWS6SE', 'VY870', 1)
go

insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('ITRJHW3MV6R1YT4', 'PJ684',6)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('8MAQNAEXXSSX2S5', 'HD182', 8)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('VVOGTKR84L0XRSV', 'MP823', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('EMO57X73RYUDJ82', 'OC558', 5)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('M0B0C2G3QJUKS5I', 'KZ909', 2)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('V4TTI14UIQO1B0Y', 'KT413', 8)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('RHK3I229AJLO1L5', 'BL419', 9)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('1NMYP1QQ6B7GTFU', 'MP241', 7)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('DCYFQBS5OOHN74F', 'VX842', 5)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('OFYBSDCO40MT8UI', 'TS675', 7)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('FWE4PBQALAC6PMB', 'FC185', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('0SP7G7K3O5YCWAQ', 'FP733', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('V91MA6SVUSK2G2X', 'WI800', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('Q2EPU5EXCGWP0C2', 'JW615', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('JG42SE5LJADRA3N', 'XQ605', 2)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('SFP84FFTYK3R7HM', 'AX232', 9)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('G0GVQ226DWUG9SH', 'AV780', 6)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('OMXB4OQ3A1FSAJT', 'RI575', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('63KB3HLVDP03YY1', 'KZ445', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('FUQSKSXXLQWS6SE', 'OQ436', 6)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('ITRJHW3MV6R1YT4', 'IA435', 8)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('8MAQNAEXXSSX2S5', 'MK161', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('VVOGTKR84L0XRSV', 'DO181', 5)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('EMO57X73RYUDJ82', 'FZ283', 2)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('M0B0C2G3QJUKS5I', 'FC185', 8)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('V4TTI14UIQO1B0Y', 'KT413', 9)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('RHK3I229AJLO1L5', 'FZ283', 7)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('1NMYP1QQ6B7GTFU', 'FZ283', 5)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('DCYFQBS5OOHN74F', 'FC185', 7)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('OFYBSDCO40MT8UI', 'KT413', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('FWE4PBQALAC6PMB', 'LM445', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('0SP7G7K3O5YCWAQ', 'LM445', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('V91MA6SVUSK2G2X', 'BW430', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('Q2EPU5EXCGWP0C2', 'BW430', 2)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('JG42SE5LJADRA3N', 'BW430', 9)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('SFP84FFTYK3R7HM', 'HD182', 6)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('G0GVQ226DWUG9SH', 'HD182', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('OMXB4OQ3A1FSAJT', 'MP241', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('63KB3HLVDP03YY1', 'MP241', 6)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('FUQSKSXXLQWS6SE', 'MP241', 8)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('ITRJHW3MV6R1YT4', 'FC185', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('8MAQNAEXXSSX2S5', 'JW615', 5)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('VVOGTKR84L0XRSV', 'JW615', 2)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('EMO57X73RYUDJ82', 'FC185', 8)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('M0B0C2G3QJUKS5I', 'YF469', 9)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('V4TTI14UIQO1B0Y', 'YF469', 7)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('RHK3I229AJLO1L5', 'YF469', 5)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('1NMYP1QQ6B7GTFU', 'RI575', 7)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('DCYFQBS5OOHN74F', 'BL419', 4)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('OFYBSDCO40MT8UI', 'DO181', 3)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('FWE4PBQALAC6PMB', 'BL419', 1)
go


insert into 订单餐品 (订单编号, 菜品编号, 餐品数量) values ('0SP7G7K3O5YCWAQ', 'DO181', 1)
go



  1. 逆向工程

    在选择时,注意选择对应的数据库

在这里插入图片描述

逆向工程生成结果与物理模型一致

在这里插入图片描述

数据导出

在这里插入图片描述

生成报告

Report—generate report

在这里插入图片描述

报告结果
在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值