📊 查询目的
查询每天每个餐段出产什么菜品
记录每日餐段(早中晚)的菜品安排
查询每天每个套餐配的什么菜品
每日各 套餐名(农博动力,元气小厨等) 下的菜品
查询做生产次序出品计划用
查某天某餐段,还有哪些出品菜可选,也就是出品的菜,是一个个调配入各餐段
查询做套餐组合用
查某天某个套餐,还有哪些出品的菜可选入套餐
📋 数据表结构
| 表名 | 建表目的 | 字段说明 | 主要字段 | 详细文档 |
|---|---|---|---|---|
| 菜品基础表 (dishes) | 菜品数据的基础字典 | 主要存储菜品名称,分类(荤素菜等)、口味、加工厨具,作者信息,图片资料,文字说明,收藏记录,点赞数,评分,本月排名,推广相关信息 | id(主键), name(菜品名称), category(分类), taste(口味), author(作者), likes(点赞数), rating(评分), image(图片), description(说明), favorites(收藏), rank(排名), promotion(推广) | 查看详情 |
| 食材基础表 (ingredients) | 食材数据的基础字典 | 名称 各 食材大小类(肉蛋鱼等) | id(主键), type(分类), name(名称), created_at(创建时间), updated_at(更新时间) | 查看详情 |
| 食材规格表 (ingredient_specs) | 食材规格标准库 | 对应给菜品的食材加工规格尺寸 | id(主键), name(食材名称), unit(单位), type(分类), code(规格编码), status(状态), note(备注), created_at(创建时间), updated_at(更新时间), ingredient(食材名), ingredient_id(关联食材ID) | 查看详情 |
| 菜品配料表 (dish_ingredients) | 菜品配料关系的基础字典 | 菜品的配料和分类(荤素等) | id(主键), dish_id(菜品ID), name(名称), amount(用量), unit(单位), category(分类) | 查看详情 |
| 每日菜品表 (daily_dishes) | 记录每日餐段菜品 | 记录每日餐段(早中晚)的菜品安排 | id(主键), meal_type(餐次), dish_name(菜品名), dish_id(菜品ID), menu_date(菜单日期) | 查看详情 |
| 每日菜单表 (daily_menu) | 按套餐名的里面在菜品 | 每日各 套餐名(农博动力,元气小厨等) 下的菜品 | id(主键), menu_id(菜单ID), meal_type(餐次), dish_category(菜品分类), dish_id(菜品ID), combo_name(套餐名) | 查看详情 |
🔗 表关系网络图
dishes
菜品基础表
ingredients
食材基础表
ingredient_specs
食材规格表
dish_ingredients
菜品配料表
外键关联
外键关联
数据关联
外键关联
数据关联
基础表 (dishes, ingredients, ingredient_specs, dish_ingredients)
菜单表 (daily_menu, daily_dishes)
🔍 查表方案
查询一:某天各餐段出品
使用表: daily_dishes
查询SQL:
SELECT menu_date, meal_type, dish_name FROM daily_dishes WHERE menu_date = '2024-01-15' ORDER BY meal_type, dish_name;
查询二:团餐社餐录菜
使用表: daily_menu, dishes
查询SQL:
SELECT menu_date, combo_name, dish_name FROM daily_menu dm JOIN dishes d ON dm.dish_id = d.id WHERE menu_date = '2024-01-15' ORDER BY combo_name, dish_name;
查询三:录入菜品查重或新增
使用表: dishes
查询SQL:
-- 查重逻辑
SELECT id, name, category, taste
FROM dishes
WHERE name = '新菜品名称'
AND category = '菜品分类'
AND taste = '口味';
-- 新增逻辑(如果查重无结果)
INSERT INTO dishes (name, category, taste, created_at)
VALUES ('新菜品名称', '菜品分类', '口味', NOW());
说明:每天新录入的菜品要在菜品库里进行查重,有的直接引用,没有的要新增
查询四:套餐和出品的差别菜品列表
使用表: daily_dishes, daily_menu
查询SQL:
-- 查询某天某套餐未选入的出品菜品 SELECT dd.dish_id, dd.dish_name, dd.meal_type FROM daily_dishes dd LEFT JOIN daily_menu dm ON dd.dish_id = dm.dish_id AND dd.menu_date = dm.menu_date AND dm.combo_name = '农博动力' WHERE dd.menu_date = '2024-01-15' AND dm.dish_id IS NULL ORDER BY dd.meal_type, dd.dish_name;
说明:出品可组合多个套餐,往往多于套餐,返回有多少未选入本套餐的菜品