[英]How should I handle units of measure in an ingredient database?
我剛剛開始用MySQL / MariaDB學習SQL,我認為一個好的項目是為我(實際)當地的比薩餅店建立一個營養和價格信息數據庫。 我的整體概念:
一個表格提供有關成分營養信息的信息。
一張成分價格信息表。
一份食譜表,顯示每個披薩中每種成分的含量。
我有幾個問題:
營養信息的不同成分和方面通常使用不同的單位:每杯鹽的毫克鈉,每液體盎司醬的毫克鈉,每磅面粉的蛋白質克數,每磅面粉的卡路里等。我該如何處理? 理論上,最干凈的方法是測量除卡路里以毫克為單位的所有營養素,以及所有成分(千克),但之后我需要一張密度表(並不總是隨時可用)以及一些方法來隔離用戶那個爛攤子。 並且卡路里仍然是偏執的。
披薩,面團和醬汁的兩個關鍵方面,作為(幾乎)各種比薩餅的“子食譜”。 處理這個問題的正確方法是什么?
由於問題是征求意見,所以很難給你並“回答”這個問題,但我的意見是:
---------------------------------------------- | id | item | quantity | unit | ----------------------------------------------- 1 flour 2 kg 2 eggs 4 count 3 paste 3 g ============================ | unit1 | unit2 | convt | ----------------------------- g kg 0.01
我沒有在這里完成,但你有一個單位表,並在轉換表中使用他們的ID。 某些單位類型(如count)將無法轉換,因此轉換表中未找到的任何單位都不允許進行轉換。 同樣的方法可用於營養元素。
Recipes ------------------------- | id | name | ------------------------- | 1 | dough | | 2 | sauce | | 3 | pizza | Recipe Ingredients --------------------------------------------------------- | recipe | ingredient | quantity | unit | key ref | --------------------------------------------------------- | 1 | flour | 400 | g | NULL | | 1 | egg | 3 | count | NULL | | 1 | water | 5 | foz | NULL | | 2 | tomatoes | 1 | kg | NULL | | 2 | onions | 3 | count | NULL | | 3 | dough | 1 | recipe| 1 | | 3 | sauce | 1 | recipe| 2 |
現在,您的應用程序代碼需要捕獲recipe
條目並循環回來以獲取其“真實”成分並繼續這樣做,直到沒有更多的recipe
條目。 你必須小心確保你的應用程序防止無限循環的可能性,就像一個自己的配方。
有些人會爭辯說我在這里使用單位列來保存不是“單位”的數據(記住這實際上只是指向你的單位表的ID)但我認為這是一個沒有實際意義的點,可能會爭辯說食譜是一個有效的'單位',但嘿。
我不是說這是最好的設計,只是一些想法讓你開始提出你提出的兩點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.