在数据库中存储酒店菜单

时间:2013-07-31 10:03:43

标签: php javascript mysql json

如何在数据库中存储餐馆菜单。假设我有一个名为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)

上述内容适用于拥有大量菜肴的单一餐厅。

3 个答案:

答案 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)

使用适当的标准化模型,然后一个餐厅可以有几个菜单,可以有几个项目。

我建议您阅读数据库规范化。