如何在数据库中存储餐馆菜单。假设我有一个名为hotel
的数据库,其中包含一个名为restaurant
的表。这是架构。
restaurant(Type, Name, Description, Pictures, Address, Menu)
类型,名称,描述,地址是字符串,如varchar.
图片是blob类型。
现在如何存储菜单?假设一家餐馆有超过100件商品。为每个菜单项设置一个coloumn变得毫无意义。那么我该如何存储呢?
我可以用Json来克服这个问题吗?如果是这样的话?
菜单示例:
Pasta: 5 euros
Pizza: 10 euros
.
.
.
similarly many items
这不是我想要的方式:
item(restrnt id, item, price)
上述内容适用于拥有大量菜肴的单一餐厅。
答案 0 :(得分:1)
您有一个菜单项表,该表的一列将是一个外键,它将匹配restaurant
表中的主键,以将菜单项与特定餐厅相关联。
如果菜单项可以在多家餐馆之间共享,请改为使用junction table(第三个包含两列的表 - 两个外键,一个在restaurant
表上,一个在{{1}上} table。
答案 1 :(得分:0)
制作表格items(id, name, description)
。此表格将包含您餐厅的所有物品。您可以随时更新它。
制作另一张表item_prices(id, item_id,restaurant_id, price, update_date)
。这里item_id
是您从items
表引用的项的ID。从长远来看,这种模式很有用,因为它易于维护。您只需更新item_prices
表即可进行任何价格变动。
同样,您可以restaurants(id, reatauran_name, ... )
最好将图像存储在文件系统中,而不是blob。
答案 2 :(得分:0)
我会从这样的事情开始,当然必须对其进行编辑以满足您的需求。
item (id, title, description)
menu (id, restaurant_id, title, description, active_from, active_to)
menu_item (id, menu_id, restaurant_id, price)
picture (id, title, description, filename, active)
restaurant (id, type, name, description, address)
restaurant_picture (id, restaurant_id, picture_id)
使用适当的标准化模型,然后一个餐厅可以有几个菜单,可以有几个项目。
我建议您阅读数据库规范化。