我的应用程序需要将 Model_A 存储到SQLITE数据库中,而 Model_A 包含 Model_B 的ArrayList,正如我在下面的示例代码中所描述的那样:< / p>
[
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]
]
我搜索并知道我可以使用GSON(或JSONObject)将Model_B转换为json String文件,并将此json存储在Model_A的表中。但这种方式不利于处理数据。我只是想在不使用GSON的情况下这样做。 我想为Model_A和Model_B创建两个表。 Model_A表将存储Model_B的列ID。但是这种方式只能存储对象Model_B,而不是我期望的List。
您能告诉我如何设计数据库达到我的期望吗?或者请建议我一个图书馆,可以帮助我这个案例。感谢。
答案 0 :(得分:2)
根据关系数据库理论,你需要建立一对多关系,使用两个表 - 第一个用于 Model_A ,第二个用于 Model_B 即可。 这种关系的主要思想是使用外键连接两个实体,以便有可能进行查询。 让我们编写一些SQL来创建这样的关系:
myVar +=! " world!"
好的,我们创建了两个表。但是我们如何才能从这种方案中获得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>
类对象选择两个:一个用于&#34;详细信息&#34;此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
希望它有所帮助。