【问题标题】:Store complex type in flutter sqflite在flutter sqflite中存储复杂类型
【发布时间】:2019-08-16 14:51:40
【问题描述】:

如何在 sqflite 中存储复杂类型,例如: 表人(id,姓名,电子邮件,列出汽车); car 是一个有 id 和 type 的实体? 是否有任何解决方案,例如如何存储它(如 Blob 或在新表中并将其链接到人员表)?

【问题讨论】:

  • 只有两个表(peoplecars)?我不认为它是一个复杂的“类型”

标签: flutter sqflite


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    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'
              ')'
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 2020-04-13
      • 2019-12-03
      • 1970-01-01
      • 2019-05-06
      • 2013-01-21
      • 2022-09-30
      • 1970-01-01
      • 2020-01-11
      相关资源
      最近更新 更多