0

如何将餐厅菜单存储在数据库中。假设我有一个hotel名为restaurant. 这是架构。

restaurant(Type, Name, Description, Pictures, Address, Menu)

Type、Name、Description、Address 是字符串,比如varchar. Pictures 是 blob 类型。

现在如何存储菜单?假设一家餐厅有超过 100 种商品。每个菜单项都有一个列变得毫无意义。那么我该如何存储呢?

我可以使用 Json 来克服这个问题吗?如果有怎么办?

菜单示例:

Pasta: 5 euros
Pizza: 10 euros
.
.
.
similarly many items

这不是我正在寻找的方式:

item(restrnt id, item, price)

以上方法适用于有大量菜肴的单一餐厅。

4

3 回答 3

1

您有一个菜单项表,该表的一列将是一个外键,它将匹配restaurant表中的主键以将菜单项与特定餐厅相关联。

如果可以在多个餐厅之间共享菜单项,请改用联结表(第三张表有两列 - 两个外键,一个在restaurant桌子上,一个在menu_items桌子上。

于 2013-07-31T10:06:05.560 回答
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)

使用适当的标准化模型,一家餐厅可以有多个菜单,其中可以有多个项目。

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

于 2013-07-31T10:26:39.830 回答
0

做一张桌子items(id, name, description)。此表将包含您在餐厅中拥有的所有物品。您可以随时更新它。

再做一张桌子item_prices(id, item_id,restaurant_id, price, update_date)。这是您从表item_id中引用的项目的 ID 。items从长远来看,这种模式将被证明是有用的,因为它易于维护。您只需要item_prices针对任何价格变化更新表格。

同样你做restaurants(id, reatauran_name, ... )

并且更好地将图像存储在文件系统中,而不是作为 blob。

于 2013-07-31T10:21:22.810 回答