数据库关系 - 访问中菜单的三明治成分

时间:2015-04-06 08:48:49

标签: database ms-access-2007 relationship database-schema

我有一个数据库设计问题。我被要求在Access 2007中为一个小餐馆做一个简单的菜单应用程序。我之前已经在2007年完成了应用程序,熟悉VBA,但我正在考虑设计这种方法的最有效方法。

餐厅有许多原料 - 蔬菜(多种类型),肉类(多种类型),酱汁(多种类型)等。这些的组合将制作三明治或沙拉(其他协会存在但我的问题让我们坚持这两个)。每种成分都以总成本和每份客户成本来衡量。说100克火腿是一个"服务" - 10克生菜 - 一个"服务"。

所以"三明治"可以有多种类型的肉类,多种类型的蔬菜,多种类型的酱汁。起初我想的是"肉"表,"蔬菜"桌子,"酱"表,所有与"三明治" table是一个位于三者之间的关联表。

所以夹心桌会有 ID,MeatID,VegID,SauceID,Name,GrossPrice(根据其他三个表计算),CustPrice(从其他3个表中计算)等。

但这让我觉得给定的三明治 可能会有几种蔬菜,肉类和酱汁。所以"终极"三明治将有火腿,牛肉,洋葱,生菜,泡菜,蛋黄酱,醋可以说。 2种肉类,3种蔬菜和2种酱汁。这不适用于简单的关联表。这也不包括像"双肉"或生菜x 5的沙拉。

显然我并不是DBA的全力以赴 - 我用这个推杆,这绝不是我的主要工作。你会如何为此设计表模式?当你想到它时,简单但复杂。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以拥有如下所示的表格结构。我已经使用了三明治的一个例子,但你可以用一个单独的三明治或沙拉的桌子,它有一个Type属性,可以区分它是沙拉还是三明治。

Table - Ingredient
------------------
IngredientID (PK)
IngredientName
IngredientType (Vegetables,Meat,Sauce)
SingleServingCost

Table - Sandwich
------------------
SandwichID (PK)
SandwichName
GrossCost
CustPrice

Table - SandwichIngredient
------------------
SandwichIngredientID (PK)
SandwichID (FK to Sandwich)
IngredientID (FK to Ingredient)
TotalServings (If a sandwich can have multiple servings of a single ingredients)