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

时间:2015-12-19 06:03:55

标签: java android sqlite orm

我的应用程序需要将 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。

您能告诉我如何设计数据库达到我的期望吗?或者请建议我一个图书馆,可以帮助我这个案例。感谢。

1 个答案:

答案 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

希望它有所帮助。