SQLite データベースを正しく使用していないと思います。
ユーザーデータ項目ごとにテーブルを使用しているようです。
データベースの強みは、複数のユーザー、複数のアイテム、または複数のデータをいくつかのテーブルに格納し、後で特定のユーザーまたはアイテムのデータのみを取得できることです。テーブルには行を追加、更新、または削除する必要がありますが、一般に、テーブルを個別のデータ要素として作成および破棄することはできません。
あなたが理解していないのは、結合の概念だと思います。
あなたが説明するデザインは、次のようになります。
User
---------------
ID
First_Name
Last_Name
Email_Address
Ingredient
---------------
ID
Name
Description
Recipe
---------------
ID
User_ID
Name
Description
Serving_size
Ingredients_ID
Date_Created
Recipe_Ingredients
---------------------
ID
Ingredient_ID
Quantity
Unit_of_measure
So to get to get a list of recipes for John Doe (this query assumes you can only have one John Doe), you'd do:
select * from Recipe r
where r.User_ID = (select ID from User where First_Name = 'John' and Last_Name='Doe')
または、材料を含むレシピのリストを取得するには:
select * from Recipe r
join Recipe_Ingredients ri on r.Ingredients_ID = ri.ID
join Ingredient i on ri.Ingredient_ID = i.ID
where r.User_ID = (select ID from User where First_Name = 'John' and Last_Name='Doe')
このような設計を使用すると、ユーザーが新しいレシピを追加するたびに、レシピとレシピ_成分表に行を追加するだけです。または、新しい材料が追加されたら、材料テーブルに行を追加します。
これは、 SQL 結合のチュートリアルへのリンクです。