2

如何在 sqflite 中存储复杂类型,例如:表 person(id,name,email,List cars); car 是一个有 id 和 type 的实体?是否有任何解决方案,例如如何存储它(如 Blob 或在新表中并将其链接到 person 表)?

4

2 回答 2

4

你不能在一张简单的桌子上。我理解你的意思,你想存储,例如,这样的东西:

citizen = {
  "name":"",
  "id":"",
  "childrens":{
     children1:{
       "name":"",
       "id":"",
     }
     children2:{
       "name":"",
       "id":"",
     }
  }
}

这是因为 sqflite 是一个使用设备 sqlite 的工具,并且这个 DB 在 apache 软件下工作。这意味着,Sqflite 存储数据以及 sql DB 存储数据,您不能将对象存储在 sql 表中。

您应该根据需要为每个复杂数据创建其他表。像这样的东西(作为伪代码):

'CREATE TABLE Citizen ('
          ' id INTEGER PRIMARY KEY,'
          ' name TEXT,'
          ' children1Id INTEGER,'
          ' children2Id INTEGER,'
          '); '
'CREATE TABLE Children ('
          ' id INTEGER PRIMARY KEY,'
          ' name TEXT'
          ')'

我希望这能帮到您。

于 2019-07-03T21:08:03.240 回答
2

它与移动开发无关,更多的是关于 SQL DB 和更一般的数据库管理。

要直接回答,您需要为带有 an 的汽车创建一个表,car-id并且您需要知道人和汽车之间的关系以建立链接:

  • 1 - 1:一个人只能拥有一辆车,一辆车只能属于一个人
  • 1 - n : 一个人可以拥有多辆汽车,但一辆汽车只能属于一个人
  • n - 1 : 一个人只能拥有一辆车,但一辆车可以有多个车主
  • n - n : 最后最复杂的情​​况是一个人只能拥有一辆汽车,而一辆汽车可以拥有多个车主

在前三种情况下,您在其中设置了 id(例如 1-n :您在 car 表中放置了一个字段,该字段owner-id是所有者的 id)

在最后一种情况下,您需要创建一个匹配表:matching-id car-id person-id

于 2019-03-26T10:18:45.633 回答