将复杂类型存储在Fluf sqflite中

时间:2019-03-26 09:17:18

标签: flutter sqflite

例如如何在sqflite中存储复杂类型: 餐桌上的人(身份证,姓名,电子邮件,汽车列表); 汽车在哪里是具有ID和类型的实体? 有什么解决方案,例如如何存储它(例如Blob或在新表中并将其链接到人员表)?

2 个答案:

答案 0 :(得分:2)

您不能在简单的表格中。我了解您的意思,例如,您想存储以下内容:

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

这是因为sqflite是使用设备sqlite的工具,并且此数据库在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'
          ')'

我希望这会对您有所帮助。

答案 1 :(得分:1)

这实际上与移动开发无关,而与SQL DB和更一般的数据库管理有关。

要直接回答,您需要使用car-id创建汽车表,并且需要知道人与汽车之间的关系才能建立链接:

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

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

在最后一种情况下,您需要使用以下内容创建匹配表:matching-id car-id person-id