【发布时间】:2019-08-16 14:51:40
【问题描述】:
如何在 sqflite 中存储复杂类型,例如: 表人(id,姓名,电子邮件,列出汽车); car 是一个有 id 和 type 的实体? 是否有任何解决方案,例如如何存储它(如 Blob 或在新表中并将其链接到人员表)?
【问题讨论】:
-
只有两个表(
people和cars)?我不认为它是一个复杂的“类型”
如何在 sqflite 中存储复杂类型,例如: 表人(id,姓名,电子邮件,列出汽车); car 是一个有 id 和 type 的实体? 是否有任何解决方案,例如如何存储它(如 Blob 或在新表中并将其链接到人员表)?
【问题讨论】:
people 和 cars)?我不认为它是一个复杂的“类型”
这与移动开发无关,更多的是关于 SQL DB 和更一般的数据库管理。
要直接回答,您需要创建一个带有car-id 的汽车表,并且您需要知道人和汽车之间的关系才能建立链接:
在前三种情况下,您在其中设置 id(例如 1-n:您在 car 表中放入一个字段 owner-id,这是所有者的 id)
在最后一种情况下,您需要创建一个匹配表:matching-id car-id person-id
【讨论】:
你不能在一张简单的桌子上。我理解你的意思,你想存储例如这样的东西:
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'
')'
希望对你有帮助。
【讨论】: