ER 图

外卖订餐系统 ER 图模板

用户、收货地址、商家、菜品、订单、订单明细、骑手、评价八个实体的外卖订餐系统 ER 图,标出主外键与关系,订单明细保存下单时的价格。课程设计、毕业设计、电商类系统建模时改成自己的字段,免费导出 PNG、SVG、Word、PPT。

保存

下单

上架

接单

包含

被点

配送

收到

用户

string

用户编号

PK

string

昵称

string

手机号

收货地址

string

地址编号

PK

string

用户编号

FK

string

详细地址

订单

string

订单号

PK

string

用户编号

FK

string

商家编号

FK

string

骑手编号

FK

decimal

实付金额

string

状态

商家

string

商家编号

PK

string

店名

string

营业状态

菜品

string

菜品编号

PK

string

商家编号

FK

string

名称

decimal

价格

订单明细

string

订单号

FK

string

菜品编号

FK

int

数量

decimal

下单单价

骑手

string

骑手编号

PK

string

姓名

string

手机号

评价

string

评价编号

PK

string

订单号

FK

int

评分

string

内容

预览用的是「朱砂」主题,打开编辑器后可以换

适用场景

数据库课程设计、外卖或点餐小程序的毕业设计、任何「用户、商家、订单」三方平台的数据建模。答辩时最常被问的两处图上都有:订单和菜品之间用订单明细拆开;明细里单独保存下单时的单价,商家之后改价不影响历史订单。

怎么改成你的

  • 加优惠券、支付流水、退款时,各建一个实体连到订单。
  • 堂食点餐没有配送,删掉骑手和收货地址,加一个「桌台」实体。
  • 字段名可以换成英文,方便直接对应到建表语句。

Mermaid 代码

food-delivery-er.mmd
erDiagram
    用户 ||--o{ 收货地址 : 保存
    用户 ||--o{ 订单 : 下单
    商家 ||--o{ 菜品 : 上架
    商家 ||--o{ 订单 : 接单
    订单 ||--|{ 订单明细 : 包含
    菜品 ||--o{ 订单明细 : 被点
    骑手 ||--o{ 订单 : 配送
    订单 ||--o| 评价 : 收到
    用户 {
        string 用户编号 PK
        string 昵称
        string 手机号
    }
    收货地址 {
        string 地址编号 PK
        string 用户编号 FK
        string 详细地址
    }
    商家 {
        string 商家编号 PK
        string 店名
        string 营业状态
    }
    菜品 {
        string 菜品编号 PK
        string 商家编号 FK
        string 名称
        decimal 价格
    }
    订单 {
        string 订单号 PK
        string 用户编号 FK
        string 商家编号 FK
        string 骑手编号 FK
        decimal 实付金额
        string 状态
    }
    订单明细 {
        string 订单号 FK
        string 菜品编号 FK
        int 数量
        decimal 下单单价
    }
    骑手 {
        string 骑手编号 PK
        string 姓名
        string 手机号
    }
    评价 {
        string 评价编号 PK
        string 订单号 FK
        int 评分
        string 内容
    }

让 AI 按这个结构生成一份

把下面这段发给豆包、DeepSeek、Kimi 或元宝,再把它的回复整段粘贴到编辑器,会自动识别其中的代码。

prompt.txt
请用 Mermaid 的 erDiagram 语法画一张外卖订餐系统 ER 图:实体有用户、收货地址、商家、菜品、订单、订单明细、骑手、评价;用户对收货地址、用户对订单、商家对菜品、商家对订单、骑手对订单、菜品对订单明细是一对多,订单对订单明细是一对一或多,订单对评价是一对零或一;订单明细里保存数量和下单单价;每个实体列出 3 到 6 个字段并标出 PK 和 FK。只输出 mermaid 代码块。

常见问题

订单明细为什么要再存一遍单价?

菜品的价格会变。订单是历史记录,必须保留下单当时的价格,否则以后对账会出错。

||--|{ 和 ||--o{ 有什么不同?

前者是「一对一个或多个」,后者是「一对零个或多个」。一张订单至少有一条明细,所以用前者。

实体多了图很大怎么办?

按模块拆成几张,例如用户与地址、商家与菜品、订单与配送,每张图里保留和其他模块相连的实体。

同类模板

全部模板

更新于 2026-11-11