繁体   English   中英

食品选项数据库设计

[英]Food item options database design

我正在建立一个网站,餐馆可以将他们的菜单放在网上供人们订购。 我的数据库设计有问题,我一直在设置这样的表

*/----------------*
* menus
*-----------------*
id
restaurant_id
name
active
created_at
updated_at

*/----------------*
* menu_categories
*-----------------*
id
menu_id
name
created_at
updated_at

*/----------------*
* items
*-----------------*
id
menu_id
menu_category_id
name
price
description
active
created_at
updated_at

但是我无法弄清楚如何存储菜单项的选项(变体)。 例如,菜单项与不同种类的酱汁和肉类一起供应,肉类仅影响物品的价格。 一个好的db表对于这个看起来是什么样的。 我感谢任何帮助,谢谢。

我会创建一个名为item_variations的表,看起来像

id
item_id
name
variation_type
price_variation
active
created_at
updated_at

然后,您可以在此表中使用item_id链接到该项目中的一个或多个条目。 该表将包含变体名称,类型和价格差异。 典型的记录看起来像

id: 1
item_id: 2
name: Lamb
variation_type: Meat
price_variation: 1.00
active: 1
....

要么

id: 2
item_id: 2
name: Mint sauce
variation_type: Sauce
price_variation: 0.50
active: 1
....

将我的评论转换为答案:我要说你需要一个选项表和一个items_options表,这样你就可以将很多选项与很多项联系起来。 IE: chicken_breast -> bbq_saucechicken_breast -> honey_mustardsirloin -> bbq_sauce

*/----------------* * options *-----------------* id name price? ...

*/----------------* * items_options *-----------------* id_item id_option price? ...

price可以是两个表中任何一个的一部分,具体取决于您的实施(如果您希望选项总是相同,或根据项目的不同而不同)

您应该创建另一个名为options_(menuid)的表
创建新菜单时应创建此表

*/----------------*
* options_(menuid)
*-----------------*
id
menu_category_id
menu_item_id
name
price
description
active
created_at
updated_at

基本上,您的脚本应该为每个菜单创建一个新表,以便保持群集,因为每个菜单可能会有很多选项。 menu_category_id是类别的ID,menu_item_id将是菜单项的ID。

关于查询的一些想法:

 -List Menus (SELECT * FROM menus WHERE restaurant_id='$restaurant' AND active=true)
   -List Categories (SELECT * FROM menu_categories WHERE menu_id='$menu')
     -List Menu Items (SELECT * FROM items WHERE menu_id='$menu' AND menu_category_id='$menu_category' AND active=true)
       -List item options (SELECT * FROM options_id WHERE menu_category_id='$menu_category' AND menu_item_id='$item' AND active=true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM