簡體   English   中英

我應該如何處理配料數據庫中的計量單位?

[英]How should I handle units of measure in an ingredient database?

我剛剛開始用MySQL / MariaDB學習SQL,我認為一個好的項目是為我(實際)當地的比薩餅店建立一個營養和價格信息數據庫。 我的整體概念:

  1. 一個表格提供有關成分營養信息的信息。

  2. 一張成分價格信息表。

  3. 一份食譜表,顯示每個披薩中每種成分的含量。

我有幾個問題:

  1. 營養信息的不同成分和方面通常使用不同的單位:每杯鹽的毫克鈉,每液體盎司醬的毫克鈉,每磅面粉的蛋白質克數,每磅面粉的卡路里等。我該如何處理? 理論上,最干凈的方法是測量除卡路里以毫克為單位的所有營養素,以及所有成分(千克),但之后我需要一張密度表(並不總是隨時可用)以及一些方法來隔離用戶那個爛攤子。 並且卡路里仍然是偏執的。

  2. 披薩,面團和醬汁的兩個關鍵方面,作為(幾乎)各種比薩餅的“子食譜”。 處理這個問題的正確方法是什么?

由於問題是征求意見,所以很難給你並“回答”這個問題,但我的意見是:

  1. 在您的成分表上保留一個“單位”類型的字段,如果您需要匯總配方的內容,則可能需要另一個表格,用於從一個單位到另一個單位的轉換比率。
 ---------------------------------------------- | 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)將無法轉換,因此轉換表中未找到的任何單位都不允許進行轉換。 同樣的方法可用於營養元素。

  1. 對於食譜中的食譜,您需要一個設置,這意味着食譜也可以是一種成分,因此,假設您有一個食譜表指向一組成分,它還需要能夠參考食譜鍵(可能是單位)也可以用於此)。 也許是這樣的:
  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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM