2015-01-21 69 views
0

我正在爲數據庫設計表格。從SQLite數據庫檢索有序的列表項目

在Android應用程序中,我從服務器下載JSON中的有序列表。我將列表及其項目插入到SQLite數據庫中。

名單表的列:

+ list_id 
+ timestamp 

列表項表的列:

+ item_id 
+ timestamp 
+ list of list_ids (a list item can be in multiple lists) 

當我檢索列表中的項目,他們應該有相同的順序,當我下載它們。什麼是最有效的方式來存儲「列表順序」?一種選擇是讓項目有一個列表的列如列表:indexInList。讚賞建議在更好的方法做到這一點。

澄清:一個項目可以在列表中多次出現,例如列表中的item_ids:1,2,3,1,5

回答

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

一旦你有這樣的表,它是存儲項目的列表順序的天然場所。

1

如果您有一個自動增量的id列,然後將ORDER BY id添加到您的查詢中。

您可以重新排序表。

ALTER TABLE tbl_name ORDER BY col_name 
+0

謝謝。如果某個物品可以多次列入清單會怎樣? – 2015-01-21 06:14:08

+0

如果你想要的話,這沒關係。但是你可能需要一個輔助列到ORDER BY。如果您不希望重複使用UNIQUE索引來禁止重複。如果你想索引一個重複的列,你只需要使用INDEX而不是UNIQUE索引。您可以在索引中使用多個列。 – Misunderstood 2015-01-21 07:21:21