苍穹外卖系统核心实体关系设计:Category、Dish、Setmeal 解析

外卖系统核心实体关系设计:Category、Dish、Setmeal 解析

作为外卖系统的核心数据模型,Category(分类)、Dish(菜品)、Setmeal(套餐)的关系设计直接决定了系统的业务扩展性和用户体验。本文从系统架构用户需求双重视角,拆解三者的关联逻辑,为外卖系统的设计与开发提供清晰的参考。

一、业务场景与用户需求映射

外卖用户的核心操作流程(浏览→选择→下单),与这三个实体的关系紧密绑定:

用户场景关联实体业务价值
浏览“川菜”“主食套餐”分类Category帮助用户快速定位需求,减少决策成本
选择“麻婆豆腐”“水煮鱼”Dish满足用户对单一菜品的点单需求
购买“盖饭套餐”“夜宵套餐”Setmeal满足用户对“组合优惠”“一站式用餐”的需求
自定义菜品规格(不要葱蒜)Dish 扩展属性提升用户用餐体验,适配个性化饮食需求

二、实体数据模型设计

1. Category 实体:分类总控台

Category 是外卖系统的“分类中枢”,通过 type 字段区分菜品分类套餐分类,实现对 DishSetmeal 的统一管理。

字段名类型说明业务约束
idLong主键ID,唯一标识一个分类自增、非空
typeInteger分类类型(1=菜品分类,2=套餐分类)仅允许1或2
nameString分类名称(如“川菜”“人气套餐”)非空、长度≤32
sortInteger排序值(决定分类在界面的展示顺序)非空、默认0
statusInteger状态(0=禁用,1=启用)非空、仅允许0或1
createTimeLocalDateTime创建时间自动填充
updateTimeLocalDateTime更新时间自动填充
createUserLong创建人ID-
updateUserLong修改人ID-

2. Dish 实体:具体菜品载体

Dish 存储单一菜品的详细信息,通过 categoryId 关联到对应的“菜品分类”(Category.type=1)。

字段名类型说明业务约束
idLong主键ID,唯一标识一个菜品自增、非空
nameString菜品名称(如“麻婆豆腐”)非空、长度≤32
categoryIdLong所属菜品分类ID(关联Category.id非空(需关联有效分类)
priceBigDecimal菜品价格非空、≥0
imageString菜品图片地址-
descriptionString菜品描述(如“麻辣鲜香,川味经典”)-
statusInteger状态(0=停售,1=起售)非空、仅允许0或1
createTimeLocalDateTime创建时间自动填充
updateTimeLocalDateTime更新时间自动填充
createUserLong创建人ID-
updateUserLong修改人ID-

3. Setmeal 实体:套餐组合载体

Setmeal 存储套餐的整体信息,通过 categoryId 关联到对应的“套餐分类”(Category.type=2),并通过中间表与 Dish 形成多对多关系。

字段名类型说明业务约束
idLong主键ID,唯一标识一个套餐自增、非空
categoryIdLong所属套餐分类ID(关联Category.id非空(需关联有效分类)
nameString套餐名称(如“盖饭套餐A计划”)非空、长度≤32
priceBigDecimal套餐价格非空、≥0
statusInteger状态(0=停用,1=启用)非空、仅允许0或1
descriptionString套餐描述(如“含主食+荤菜+素菜”)-
imageString套餐图片地址-
createTimeLocalDateTime创建时间自动填充
updateTimeLocalDateTime更新时间自动填充
createUserLong创建人ID-
updateUserLong修改人ID-

三、实体关系ER图

用ER图直观展示三者的关联逻辑:

CategoryLongidPKIntegertypeStringnameIntegersortIntegerstatusLocalDateTimecreateTimeLocalDateTimeupdateTimeLongcreateUserLongupdateUserDishLongidPKStringnameLongcategoryIdFKBigDecimalpriceStringimageStringdescriptionIntegerstatusLocalDateTimecreateTimeLocalDateTimeupdateTimeLongcreateUserLongupdateUserSetmealLongidPKLongcategoryIdFKStringnameBigDecimalpriceIntegerstatusStringdescriptionStringimageLocalDateTimecreateTimeLocalDateTimeupdateTimeLongcreateUserLongupdateUserSetmeal_DishLongsetmealIdFKLongdishIdFKIntegerquantityviatype=1 → 一对多type=2 → 一对多多对多

四、关系设计的业务价值

  1. 分类驱动的用户体验Category 作为“导航入口”,让用户快速筛选菜品/套餐,符合外卖用户“找得快、选得准”的核心需求。

  2. 灵活的业务扩展性

    • 新增“海鲜分类”“下午茶套餐”时,只需在 Category 中新增记录,DishSetmeal 关联即可,无需修改系统架构。
    • 菜品规格(如“不要葱蒜”)可通过 Dish 扩展属性支持,满足个性化点餐需求。
  3. 数据一致性保障:通过外键关联和分类类型约束,确保 Dish 仅属于“菜品分类”、Setmeal 仅属于“套餐分类”,避免数据混乱。

五、总结

CategoryDishSetmeal 的关系设计是外卖系统的“数据骨架”,既支撑了用户从“浏览分类”到“选择菜品/套餐”的全流程体验,又为系统的业务扩展(新增分类、新增菜品)提供了灵活的架构支持。理解这三者的关联逻辑,是设计高可用、易扩展外卖系统的关键一步。

posted @ 2025-11-02 20:38  WILK  阅读(0)  评论(0)    收藏  举报  来源