[英]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_sauce
, chicken_breast -> honey_mustard
, sirloin -> 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.