хранение веса в таблице базы данных - PullRequest
3 голосов
/ 25 января 2011

Я играю с изучением MVC и хочу создать приложение для записи рецептов для хранения моих рецептов.

Я использую .net с Sql Server 2008 R2, однако я не думаю, что это действительно имеет значение для чегоЯ пытаюсь сделать.

Я хочу иметь возможность записывать все меры, которые я использую.В моей стране мы используем метрику, однако я хочу, чтобы люди могли использовать имперские значения в моем приложении.

Как мне составить таблицу, чтобы справиться с различиями, я думал о сохранении всех измерений в виде целых ииметь внешний ключ для хранения веса.

В идеале я хотел бы иметь возможность делиться рецептами между людьми и отображать результаты измерений по своему усмотрению.

Это правильный путь

IngredientID PK
Weight int
TypeOfWeight int e.g. tsp=1,tbl=2,kilogram=3,pound=4,litre=5,ounce=6 etc
UserID int 

Или этот путь не по пути?Любые предложения будут великолепны!

Ответы [ 2 ]

6 голосов
/ 25 января 2011

Я думаю, что вы должны хранить веса (килограммы / фунты) и т. Д. Как один тип веса (метрика) и просто «отображать» их в правильной конвертации, используя предпочтения пользователя.Если для пользователя там установлены весовые параметры Imperial, значения, введенные в систему, также необходимо будет преобразовать.В любом случае это должно упростить ваши данные.

Как и в случае с датами, вы можете хранить каждую дату и временную зону, из которой она сделана, или иным образом сохранять все даты как одинаковые (или без часового пояса), а затем отображать их в приложении, используясмещения в соответствии с предпочтениями пользователя

5 голосов
/ 25 января 2011

Если вы храните веса (недискретное значение), я настоятельно рекомендую использовать числовые или десятичные для этих данных.У вас есть правильная идея с колонкой typeofweight.Храните справочную таблицу где-нибудь, показывающую, какой коэффициент конвертации для каждого (к определенному стандарту).

Это довольно сложно, если вы хотите отобразить унции как TSP, потому что конверсия зависит от самого ингредиента, так что вынужна третья таблица - ингредиент: идентификатор, имя, отношение объема к весу.

Пример таблицы типов веса, где единица standard - это граммы

type   | conversion
gram   | 1
ounce  | 28.35
kg     | 1000
tsp    | 5            // assuming that 1 tsp = 5 grams of water
pound  | 453.59

Пример объема ингредиента к весупреобразование

type   | vol-to-weight
water  | 1
sugar  | 1.4          // i.e. 1 tsp holds 5g of water, but 7g of sugar

Таким образом, чтобы отобразить 500 унций сахара в tsp, вы должны использовать формулу

  units x ounce.conversion x sugar.vol-to-weight
= 500   x 28.35            x 1.4

Другой пример с двумя весами

Ingredient is specified as 3 ounces of starch.  Show in grams
= 3 x 28.35    (straightforward isn't it)

или

Ingredient is specified as 3 ounces of starch.  Show in pounds
= 3 * 28.35 / 453.59
...