0

我的应用程序允许用户将数据保存到 sqlite 文件。为了确保唯一的表名,我只想在用户按下“保存”时创建一个具有(日期/时间)格式名称的表。有没有办法在我的 sqlite 文件中加载所有表而不明确说明所有表的名称?

我有一个 sqlite 文件中的食物列表。sqlite 文件包含一堆关于其中每个食物的信息。用户可以通过浏览 sqlite 文件并将项目添加到他们的列表来创建自己的配方。列表中的每个项目都由表格视图中的一个单元格表示。配方完成后,我希望用户能够保存它,并让系统自动将此配方添加为不同表格视图中的单元格。这样,当有人选择单元格时,整个配方会显示在下一个表格视图中(不仅仅是配方名称作为单元格标题)

4

1 回答 1

1

我认为您没有正确使用 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')

使用这样的设计,每当用户添加新配方时,您只需将行添加到配方和 recipe_ingredients 表中。或者,当他们添加新成分时,您在成分表中添加一行。

这是SQL 连接教程的链接。

于 2012-07-02T22:47:15.253 回答