我正在为数据库设计表格。
在Android应用程序中,我从服务器下载JSON中的有序列表。我将列表及其项目插入到SQLite数据库中。
列表的列:
+ list_id
+ timestamp
列表项表的列:
+ item_id
+ timestamp
+ list of list_ids (a list item can be in multiple lists)
当我检索列表的项目时,它们应该与我下载它们时的顺序相同。存储“列表顺序"”的最有效方法是什么?一个选项是让项目具有一个列,其中包含一对列表,如:list:indexInList。赞赏有关更好的方法的建议。
澄清:项目可以多次出现在列表中,例如列表中的item_ids:1,2,3,1,5。
答案 0 :(得分:1)
如果您有一个带有自动增量的id列,请在查询中添加ORDER BY id
。
您可以重新排序表格。
ALTER TABLE tbl_name ORDER BY col_name
答案 1 :(得分:1)
当您可能需要访问单个项目时,绝不应在列中存储值列表。
对于像这样的M:N关系,您通常使用third table:
CREATE TABLE items_in_lists (
list_id INTEGER REFERENCES lists(list_id),
item_id INTEGER REFERENCES items(item_id),
PRIMARY KEY(list_id, item_id)
);
一旦有了这个表,就可以在列表中存储项目的顺序。