Технологические карты в MySQL

TssDragon

Новичок
Всем привет.
Подскажите, пожалуйста, идею, как реализовать технологическую карту на mysql
Т.е., у меня есть технологическая карта на приготовление, например, капучино.
Кофе - 8 грамм, Молоко - 150 мл
Мне нужно сделать так, что бы при списывании 1 чашки капучино, списывалось кофе и молоко
Я правильно понимаю, что мне нужна таблица с готовыми товарами, такими, как кофе и т.д. и таблица с ингредиентами ?
Так вот, как можно сделать автоматическое списывание ингредиентов ?
Заранее спасибо :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Правильно понимаешь, чтобы списывалось "автоматически" надо написать код, можно создать процедуру, или просто написать все ручками в коде приложения используя транзакцию.

Я бы выбрал вариант номер 2.
 

TssDragon

Новичок
просто написать все ручками в коде приложения используя транзакцию..
да, но это получается, что для каждого товара надо писать что конкретно списывать, т.е. ставить какой-нибудь switch и для каждого варианта все расписывать. Если много товаров - это ведь крайне не удобно. Да и при добавлении товара надо менять код. А можно как нибудь связать таблицы товаров и ингредиентов, чтобы написать минимум кода - только... логику что ли, что бы база сама узнала что и сколько списывать.
Или, получается, что для каждого товара надо создавать еще отдельную таблицу, в которой будут расписаны конкретные ингредиенты, а потом, на основании ее, списывать из общей таблицы ингредиентов, так ?
Или все проще, а я чего то не понимаю? :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Я думал ты меня поймешь, но ты не понял.
Не надо никаких switch-case.

Да, ты нихрена не понимаешь) Надо нормально описать, что ты делаешь, в часности у тебя будет таблица связок ингредиентов к блюдам. При заказе блюда должны браться ингредиенты, которые к блюду привязаны и "списываться", то есть их количество должно уменьшаться. Не надо никаких 1 таблица-на 1 блюдо.

Блюда>Ингредиенты

Связки по id.

И еще, база сама ничего делать не будет, надо ей сказать что ты от нее хочешь.
 

TssDragon

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

Я думал ты меня поймешь, но ты не понял.
Не надо никаких switch-case.
Да, ты нихрена не понимаешь) Надо нормально описать, что ты делаешь, в часности у тебя будет таблица связок ингредиентов к блюдам. При заказе блюда должны браться ингредиенты, которые к блюду привязаны и "списываться", то есть их количество должно уменьшаться. Не надо никаких 1 таблица-на 1 блюдо.
Блюда>Ингредиенты
Связки по id.
Вот, как их правильно связать ? :)
Допустим
табл. Ингредиенты
id | Name | Count
1 | Milk | 1000
2 | Coffee | 10

табл. Блюда
id | Name |
1 | Cappuccino |
2 | Latte |

Как тогда хранить связки ? Создать еще одну таблицу, на подобии:
id| id_dish | id_ingr_1| id_ingr_2 | ... |
1 | 1 | 1 | 2 | ... |

Извиняюсь, если это глупые вопросы, я только начинаю работать с базами ^_^
 

С.

Продвинутый новичок
Да, верно. Это канонический вариант.
 

artoodetoo

великий и ужасный
Только понадобится две цифры расхода, т.к. бывают ингридиенты с мусорным выходом: как картофель. Одна цифра чтобы списывать со склада, другая чтобы считать фактический вклад в блюдо.

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

Расчет себестоимости это вообще отдельная большая тема.

Делал столовую в своё время…
 
Сверху