2014-02-23 40 views
0

我有一個關於數據庫的問題,我目前正在嘗試設計,我也想提一提,我是初學者,所以請記住這一點。飲食數據庫模型

因此,我目前正在設計的數據庫將用於我爲學校項目開發的應用程序。該應用程序將是一個健身應用程序,它具有許多功能,但主要側重於根據用戶提供的一些信息創建飲食。生成這種飲食的所有數據將從DB中獲得,例如食物及其營養素等。

我想構建這種飲食的方式是這樣,它會創建一個爲期7天的樣本飲食。每天會有5頓飯,每頓飯都包含一些產品,如100克雞胸肉,100克糙米,100克西蘭花。

我做了一個ERD圖,以幫助我這個模型,你可以通過以下鏈接

http://imgur.com/0ivcM5x

看到你可以從我創建食品表的圖片,這將容納所有看到可以用來製作餐食的各種食物,而且這是我卡住的地方。在我的模型中,我已將它分解成單獨的表格,但我不知道這是否正確並且可行。

我也不確定如何創建「MealTable」到目前爲止我已將meal_id作爲PK和food_id作爲FK,但是我能夠創建包含多個食物的餐餐或將它作爲1餐「食物」表中有1項。

類似於「DietTable」和「dayOfTheWeek」我試圖在這裏採取類似的方法,所以我已經獲得了diet_id作爲PK和day_id作爲FK,但是這將允許我在同一飲食中有多個「日」實例。

我知道這個問題並不是真的具體,但我只是想了解如何建模,以及這種方法是否正確。它會起作用嗎?還有其他的替代方法來模擬類似的問題。

任何幫助或建議,將不勝感激。

回答

0

我覺得你的ERD圖看起來還不錯,但我注意到有兩件事情:

  • 它看起來像你的MealTable表將具有每餐多行,所以我將其重命名爲MealFood到列出每餐中的所有食物。如果你需要的字段添加到每一餐(如用餐的名稱),然後做一個單獨的表名爲Meal,將有每餐
  • 只有一行我會從DietTable刪除day_id,而是有一個diet_iddayOfTheWeek表。如果你將這些信息與一個mealOfTheDay列,你可以做跨diet_id, day_id, mealOfTheDay一個唯一的密鑰,以確保每一個飲食只有一天的每一餐

例一頓飯dayOfTheWeek表:

| diet_id | day_id | mealOfTheDay | meal_id | 
--------------------------------------------- 
| 1  | 1  | 1   | 999  | 
| 1  | 1  | 2   | 642  | 
| 1  | 1  | 3   | 242  | 
| 1  | 1  | 4   | 298  | 
| 1  | 1  | 5   | 322  | 
| 1  | 1  | 5   | 111  | <- Unique key will not allow 
                this row as it's the second 
                fifth meal on same day for 
                diet 1 
  • 另外,請儘量保持您的命名一致。你們中有些人的名字以Table結尾,有些則沒有。
+0

這是我尋找的那種幫助和澄清,非常感謝。 – user3058242

+0

太棒了!如果它幫助你,然後點擊打勾接受答案。 – theon

0

我一直在尋找你的數據庫模型,並且有一些東西丟失,其他需要改變(我的觀點)。我已經推出了一個類似的模型,不是爲了健身,但我需要遵循膳食蛋白質來治療PKU疾病。你的最終模型是(我認爲)真的比我設計的更接近:

以下是表格列表: 食物:正如你所做的,除了在我的情況下,我用它來描述100克這種食物的蛋白質。 FOOD_UNIT:質量單位(mg,g,...,Kg),體積(ml,cl,...,L) FOOD_CATEGORY:蔬菜,水果,... 日曆:日期,一天一天...我認爲這比使用簡單的星期ID和餐飲ID更適合您。如果soneine在星期一和星期五開始飲食,他們會吃完全相同的食物,但實際上第一個人可能需要比另一個更多或更少的食物。其實你在這方面有一個很大的問題。 MEAL_PERIOD:早上,晚上。在這裏使用時間有助於確保在清晨或附近從午餐時間進餐 PERSON:您正在編輯膳食的人。幾個不同的人需要蛋白質,脂肪,... 餐:我想你知道該把什麼放在這裏(person_id,calendar_id,meal_period_id主鍵)。在此表中添加所有食物和數量。不要忘記在food_unit_id上添加外鍵,在你的情況下,你的diet_id

現在不能繪製模式,但通常你有所有的元素來繪製一個通常符合你需要的很酷的圖。

+0

非常感謝我會牢記這一點,並且可能會做出一些改變,因爲您的解決方案聽起來非常合理。 – user3058242

+0

我認爲這是一個很好的解決方案。我每天都在爲我的第一個兒子使用它。如果你想使用這個模型,也很容易做一些報告 – aviel