У меня есть приложение, в котором я могу создавать и редактировать рецепты, состоящие из ингредиентов и их количества. Эта информация должна храниться в реляционной базе данных (вероятно, MySQL или SQLite). У меня есть таблица, в которой хранятся рецепты с первичным ключом auto_increment, и другая таблица, в которой я сохраняю ингредиенты и количества, ссылаясь на первую таблицу через ограничение внешнего ключа.
Теперь я хочу написать код обновления внутри своего приложения. Я сохраняю идентификатор рецепта в своих объектах рецепта, поэтому я могу легко ссылаться на него. Но как мне правильно обновить ингредиенты и количество? Несколько строк второй таблицы, возможно, устарели и должны быть удалены, а некоторые просто необходимо обновить (при изменении суммы).
Самым простым решением, которое я придумал, было бы просто удалить все строки, относящиеся к моему текущему рецепту, и снова вставить их. Является ли это приемлемым подходом или существует шаблон/лучшая практика для такого рода проблем?
Примечание. Я знаю, что могу просто сохранить ингредиенты и количество в списке строк varchar, но я хотел бы работать с какой-то структурой таблицы.
Изменить: Таблицы CREATE code:
CREATE TABLE `recipe` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(30) NOT NULL
PRIMARY KEY (`id`)
)
CREATE TABLE `recipe_ingredients` (
`recipe_id` INT(11) NOT NULL,
`ingredient` VARCHAR(30) NOT NULL,
`amount` FLOAT NOT NULL,
`measurement_unit` VARCHAR(10) NOT NULL,
INDEX `recipe_id` (`recipe_id`),
CONSTRAINT `recipe_ingredients_ibfk_1` FOREIGN KEY (`recipe_id`) REFERENCES `recipe` (`id`),
CONSTRAINT `recipe_ingredients_ibfk_2` FOREIGN KEY (`recipe_id`) REFERENCES `recipe` (`id`)
)