2017-01-27 4 views
0

У меня есть настройка ингредиентов/блюд, где комбинации ингредиентов X могут равняться Y приемам пищи.MySQL: Как составить таблицу

Например: Ingredients «Морковь, мясо, капуста» = Meal Тушеное мясо.

Пользователь может выбрать и добавить свои собственные ингредиенты, которые затем будут производить еду. Я сделал обе эти таблицы многомиллионными отношениями. Я понял, что мне нужен третий стол для добавления ингредиентов в пищу, но проблема, с которой я столкнулся, стоит.

Например: Скажем, вы хотели сделать сэндвич-еду. Вы бы добавили хлеб (1 $), мясо (1 $) и немного сыра (2 $). Это сделало бы еду «бутербродами» 4 $.

Проблема, с которой я столкнулся, - это таблица «затраты», в моей таблице MEAL, а мои ингредиенты для еды, связанные с едой, имеют столбец «стоимость», но сначала нужно создать MEAL, а затем ингредиенты SELECTED, что означает, что он еще не ЗНАЕТ общей стоимости, потому что ингредиенты приходят последними.

Как я могу сказать mysql, что ОБЩАЯ СТОИМОСТЬ еды - это ингредиенты, которые еще нужно положить?

+2

Не могли бы вы полностью избавиться от колонки «meal.cost» и вычислить его динамически суммируя стоимость перечня ингредиентов? –

+0

Это не совсем хорошая еда, правда? – Strawberry

ответ

0

Зависит от того, как вы вводите данные, но предположим, что у вас есть интерфейс для meals и интерфейс для meal-ingredients (предположительно написанный на PHP, поскольку вы отметили это как таковое).

Что бы я сделал, когда вы обновляете или создаете ингредиент, вы либо используете триггер, который будет обновлять meals.cost. Или ваш PHP-скрипт запускает этот запрос после вставки/обновления. Таким образом, ваш cost всегда должен быть точным. В случае с полем, я бы сделал его по умолчанию 0 (еда без каких-либо ингредиентов технически не имела стоимости)

Смежные вопросы