gpt4 book ai didi

java - 如果模型包含另一个列表模型,如何设计数据库 SQLITE

转载 作者:行者123 更新时间:2023-11-29 20:13:48 25 4
gpt4 key购买 nike

我的应用程序需要将 Model_A 存储到 SQLITE 数据库中,并且 Model_A 包含一个 Model_B 的 ArrayList,正如我在下面的示例代码中所描述的:

class Model_A {
String name;
String description;
int number;
List<Model_B> list_Model_B;
}

class Model_B {
String title;
int quantity;

}

我搜索并知道我可以使用 GSON(或 JSONObject)将 Model_B 转换为 json 字符串文件并将此 json 存储在 Model_A 的表中。但是这种方式不利于处理数据。我只想在不使用 GSON 的情况下这样做。我考虑过为 Model_A 和 Model_B 创建两个表。 Model_A 的表将存储 Model_B 的列 ID。但是这种方式只能存储一个对象Model_B,而不是我期望的List。

你能告诉我如何设计数据库才能达到我的期望吗?或者请给我推荐一个可以帮助我解决这个问题的图书馆。谢谢。

最佳答案

根据关系数据库理论,您需要建立一对多关系,使用两个表 - 第一个用于Model_A,第二个用于模型_B。这种关系的主要思想是将两个实体与外键 连接起来,以便进行查询。让我们编写一些 SQL 来创建这样的关系:

CREATE TABLE model_a (
_id INTEGER PRIMARY KEY,
field TEXT NOT NULL
);

-- Table for Model_B
CREATE TABLE model_b (
_id INTEGER PRIMARY KEY,
model_a_id INTEGER NOT NULL,
field_2 TEXT NOT NULL,
FOREIGN KEY model_a_id REFERENCES model_a(_id)
);

好的,我们创建了两个表。但是我们怎样才能得到List<Model_B>从这样的计划?有两种方法可以做到这一点。第一个 - 对每个 Model_A 进行两次选择类对象:一个来自 model_a 的这个对象的“细节”表,一个用于 Model_B 的列表元素:

SELECT *
FROM model_a
WHERE _id = ?

-- For list of Model_B
SELECT *
FROM model_b
WHERE model_a_id = ?

第二种方式——获取关于一个Model_A的所有信息通过一个查询。对于这个任务,我们需要特殊的 SELECT查询:

SELECT *
FROM model_a ma
INNER JOIN model_b mb ON (ma._id = mb.model_a_id)
WHERE (mb.model_a_id = ?)

希望对您有所帮助。

关于java - 如果模型包含另一个列表模型,如何设计数据库 SQLITE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34367835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com