Ингредиенты для питья новой таблицы или строки в столбце? - PullRequest
0 голосов
/ 16 февраля 2012

Я думаю о своем заявлении и хочу сохранить данные о напитках. Теперь я думаю, что лучше всего, если я сохраню ингредиенты так же, как столбец nvarchar в таблице с напитком, или если я создаю новую таблицу с ингредиентами и создаю отношения один ко многим? Я хочу, чтобы база данных была только для чтения, и я хочу иметь опцию фильтра по ингредиентам. Так что же лучше для Windows Phone (для производительности)? И если новая таблица будет лучшим выбором, я должен использовать EntitySet, EntityRef, я прав? А мне бы для каждого ингредиента новую строку в таблице? Допустим, у меня есть 100 напитков, в среднем, что каждый напиток имеет 4 ингредиента, поэтому у меня в первом столе 100 и 400 кубов? Спасибо за помощь

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

На самом деле оба предложенных решения неверны.Напиток может содержать много ингредиентов, а ингредиент может использоваться во многих напитках.Следовательно, у нас здесь есть отношения многие ко многим.Правильный способ моделирования этого заключается в следующем (я добавляю данные, чтобы он был более понятным):

Ингредиенты (PK: Id)

+----+--------------------+
| Id |        Name        |
+----+--------------------+
|  1 | Water              |
|  2 | Sugar              |
|  3 | Coffe              |
|  4 | Virgin Islands Tea |
|  5 | Ice                |
+----+--------------------+

Напитки (PK: Id)

+----+-------------+
| Id |    Name     |
+----+-------------+
|  1 | Black Coffe |
|  2 | Tea         |
|  3 | Ice Tea     |
+----+-------------+

Drinks_Ingredients (PK: Drink_Id, Ingredient_Id)

+----------+---------------+------------+
| Drink_Id | Ingredient_Id | Proportion |
+----------+---------------+------------+
|        1 |             1 |         70 |
|        1 |             2 |         10 |
|        1 |             3 |         20 |
|        2 |             1 |         90 |
|        2 |             4 |         10 |
|        3 |             1 |         80 |
|        3 |             4 |         10 |
|        3 |             5 |         10 |
+----------+---------------+------------+

Я добавляю это Proportion столбец, чтобы показать вам, как добавить данные, которые зависят от пары напиток-ингредиент.Теперь, если вас беспокоит размер таблиц, он будет довольно маленьким, поскольку единственными таблицами, которые будут иметь более сложные типы данных (varchars), будут таблицы ингредиентов и напитков, в которых будет минимальное количество записей.возможно: по одному на каждый напиток и по одному на каждый ингредиент.

Если у вас все еще есть сомнения, продолжайте смотреть на пример, вы получите его:)

0 голосов
/ 16 февраля 2012

Я бы сделал таблицу для ингредиентов с описанием и идентификатором и сохранил бы идентификаторы на столе для напитков, потому что это элегантный способ сделать это.Для 100 напитков вы не увидите разницы в производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...