我有一个应用程序,我可以创建和编辑配方组成的成分和他们的数额。这些信息应该保存在关系数据库(可能是MySQL或SQLite)中。我有一个用自动递增主键存储菜谱的表,还有一个保存配料和数量的表,通过外键约束引用第一个表。你知道吗
现在我想在我的应用程序中编写更新代码。我把菜谱id保存在我的菜谱对象中,所以我可以很容易地引用它。但是我如何正确地更新成分和数量呢?第二个表的多个行可能已经过时,必须删除,有些行只需要更新(更改金额时)。你知道吗
我想到的最简单的解决方案就是删除所有引用我当前配方的行,然后重新插入它们。这是一种可接受的方法,还是有解决此类问题的模式/最佳实践?你知道吗
注意:我知道我可以在varchar stringlist中保存成分和数量,但是我想使用某种表结构。你知道吗
编辑:表格创建代码:
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`)
)
将自动递增主键添加到配料表中。然后,当应用程序发布更新时,您就可以通过主键识别正在更新的成分。你知道吗
我会像这样添加PK:
在您的UI中,您将遍历配料并将它们显示在单独的行中,配料id与每一行相关联。它可能看起来像这样:
现在,如果用户编辑或删除salt行,您就知道它是id为1的配料,您可以在数据库中识别它。你知道吗
相关问题 更多 >
编程相关推荐