2011-02-27 136 views
4

我在設計我的數據庫時遇到問題。 我必須做一個女巫包含讓我們說一個食譜。 我有包含讓我們說的表:香料,肉類,蔬菜。食譜數據庫設計建議

好吧,現在我需要從香料,肉類,蔬菜中獲取數據,並在食譜表中創建食譜。我的問題是如何將所有這些映射到食譜中,因爲一種食譜可以有更多的蔬菜,更多類型的見面和更多的香料。

謝謝。

+3

這功課嗎? – 2011-02-27 12:42:16

+0

不,這不是家庭作業,只是我想要一些建議的個人項目。 – 2012-01-31 19:25:22

回答

8

肉,蔬菜和香料是成分IngredientType(M,V,S)用於識別每個組。

enter image description here

如果由於某種原因你覺得每種成分都需要自己的表,因爲他們有不同的列,然後使用此模式。保留Ingredient表中的所有常用列。

enter image description here

+0

非常感謝您的解決方案......另一個問題是如果我實現了將自己的表中的成分分開的設計,我該如何添加多個翻譯?你建議什麼方法? – 2011-03-06 16:06:02

+0

在連接成分和成分類型的'X'中,半月的含義是什麼? – Hexatonic 2016-10-28 16:50:46

+0

@Hexatonic,亞型鑑別 - 互斥。 – 2016-10-29 14:32:11

1

這是我會做的。

我會使用繼承映射,每個ORM都有它,並且幾乎所有的Web語言都有它(php有doctrine,java和.net有Hibernate等)。

正如link顯示的示例,您的層次結構頂部有一個表格,對於您的系統,我將其稱爲Ingredient,然後將veggie/meat/spices作爲子表格。然後,我會製作一張名爲Recipe的表格,並且它與成分表格有一對多的關係。

我希望你爲此使用ORM,它會爲你節省一噸時間,並且會導致很少的錯誤。

謝謝你提出一個有趣的問題,它有一個更主觀的設計類型問題來獲得創造性的果汁。

0

您可以這樣做..在配方表中列出食譜名稱(例如x)的詳細信息,該信息爲配方項目的每個內容重複,然後您可以使用配方創建另一個表格項目名稱和編號..在原始表中使用此編號..簡而言之正常化配方表..你可以做每個成分的進一步。

0

你有一個所謂的n:m食譜和配料之間的關係。在關係數據庫中解決這個問題的常用方法是引入映射表。說你的每個食譜都有一個ID(RecipeID),每個成分也有一個ID(IngredientID)。然後創建一個包含RecipeID列和IngredientID列的新表格。此表中的每條記錄都將配料映射到配方,反之亦然。

如果您想進一步限定關係,這樣的表格也很方便。例如,您可以在映射表中添加另一列,其中包含描述配方需要多少配料的描述。

4

在我看來,你是在談論一個納米關係:

  • 配方可以有很多香料/肉類 /素食者
  • 香料/肉類/蔬菜每一個 可連接到多食譜。

您通常將其存儲在數據庫中的方式是使用配方和例如蔬菜之間的關聯表。

Recipe <----> RecipeVeggies <----> Veggies 

配方和蔬菜必須分別具有唯一的主密鑰(ID)和表RecipeVeggies商店既主鍵,以在兩個之間的關聯。

這裏有一個小結構示例:

Recipe : id, name, description 
Veggies : id, name 
RecipeVeggies : recipe_id, veggies_id 

的RecipeVeggies表創建商店食譜和素食之間的關係。

您必須創建類似的香料和肉類表。

我希望我很清楚,否則隨時提出更多問題,我會改進我的答案。