如何为主表中的每一行设计带有表子集的sql数据库?

0 database-design

考虑一个餐厅数据库,其中有一张餐厅表(带有一些附加信息),并且对于该表中的每个餐厅(每一行),您都有一组包含信息的表(比如菜单等)。有这么多桌子(有数千家餐厅)可以吗,或者有没有更好的方法来设计这种关系?

为了更好的想象力: 这种数据库的例子

Phi*_*lᵀᴹ 5

我会去做类似的事情:

restaurants table (stores all of your restaurants):
restaurant_id INT PRIMARY KEY
restaurant_name
etc

menus table (stores all of your menus):
menu_id INT PRIMARY KEY
menu_name

restaurant_menus table (stores which restaurants serve which menus):
restaurant_id INT, -- references restaurants.restaurant_id
menu_id       INT  -- references menus.menu_id

ingredients table (stores all available ingredients):
ingredient_id INT PRIMARY KEY
name
etc

menu_items table (stores each available menu item):
menu_item_id INT PRIMARY KEY
name
etc

menu_item_ingredients table (stores which ingredients make up a given menu item)
menu_item_id  INT, -- references menu_items.menu_item_id
ingredient_id INT, -- references ingredients.ingredient_id
name
quantity
etc 

menu_item_items (stores which items are on a given menu):
menu_id      INT, -- references menus.menu_id
menu_item_id INT -- references menu_items.menu_item_id
Run Code Online (Sandbox Code Playgroud)

menu_item_items并且menu_items可能需要更好的名字(菜肴menu_items,也许?)。