Магазин комплексного типа во флаттере sqflite - PullRequest
0 голосов
/ 26 марта 2019

как хранить сложный тип в sqflite например: таблица person (id, name, email, list cars);где автомобиль это сущность, которая имеет идентификатор и тип?Есть ли какое-либо решение, например, как его сохранить (например, BLOB-объект или новую таблицу и связать ее с таблицей лиц)?

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

Вы не можете в простой таблице. Я понимаю вашу точку зрения, вы хотите сохранить, например, что-то вроде этого:

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 голос
/ 26 марта 2019

На самом деле речь идет не о разработке мобильных приложений, а о SQL DB и, в более общем смысле, об управлении базами данных.

Чтобы ответить напрямую, вам нужно создать таблицу для автомобиля с car-id, и вам нужно знать связь между человеком и автомобилем, чтобы сделать ссылку:

  • 1 - 1: у человека может быть только одна машина, а машина может принадлежать только одному человеку
  • 1 - n: у человека может быть несколько машин, но машина может принадлежать только одному человеку
  • n - 1: у человека может быть только одна машина, но у машины может быть несколько владельцев
  • n - n: наконец, самый сложный случай, когда у человека может быть только машина, а у машины может быть несколько владельцев

В трех первых случаях вы устанавливаете идентификатор в одном (например, 1-n: вы помещаете в таблицу машин поле owner-id, которое является идентификатором владельца)

В последнем случае вам нужно создать соответствующую таблицу с: matching-id car-id person-id

...