0

我想在我的Android應用程序中表示播放列表。如果播放列表是空的,我的項目只是按日期顯示。如果播放列表中包含一些項目,則應按順序顯示播放列表,然後依次顯示剩餘項目(仍按日期)。在SQLite數據庫中表示LinkedList

但是,我不知道如何有效地建模。我怎樣才能以一種方式構建我的數據庫,以便在播放列表中插入項目(到任何位置)變得很容易,並且仍然以快速(合理的簡單)方式選擇它們。

示例我有一個項目A,B,C,D,E,F,G的列表。首先按順序顯示項目:

A,B,C,D,E,F,G 

用戶現在將F和D添加到他的播放列表中。該項目現在應該按此順序顯示:

F,D,A,B,C,E,G 
+0

select * from items_table – 2013-02-20 19:56:49

回答

0

我怎麼能組織我的數據庫,以這樣的方式,因此變得容易 插入項目(任意位置)

創造經典heap table它提供快速插入 - 「插入您可以插入的第一個位置。」

並且仍然以快速(且合理的簡單)方式選擇它們。

所以很可能你需要創建index。索引創建在最常發生在where clause後面的列上。通過創建索引也是b+ tree創建,所以你要小心,當你想創建任何索引。

而且有更多的方法,但它強烈地依賴於數據源類型,例如Oracle提供了多種類型的各種優點和缺點表。

你會選擇另外的具體做法也取決於數據庫 - 分貝的要求,在桌等記錄的平均數。

+0

聽起來不錯,但是如何創建一個select語句以正確的順序獲取這些項目?沒有任何特殊的模塊或Android不支持的東西。 – Markus 2013-02-20 19:06:28

+0

所以有時需要做出「妥協」。你剛剛描述的你是正確的,它不可能在db中完成。所以我的第一個想法是做經典的有序選擇,但如果你在播放列表中有一些項目 - 所以從他們那裏得到一些特定的數據(例如id),以便能夠執行下一個查詢,選擇播放列表中的項目(將它們保存爲經典列表)和第二個查詢將從數據庫中選擇其他項目(項目將保存到前一個選擇列表)。 – Sajmon 2013-02-20 19:14:14

0

如果你想基於某種時間戳的訂購物品(比如你要最新的,以先出現),則只需添加一個時間戳列的表,如創建日期或更新日期/時間。然後,在查詢表格時,使用它進行排序。

SELECT * FROM ITEMS_TABLE 
ORDER BY CREATION_DATETIME DESC; 
0

我正在使用此解決方案。我在表格中添加了一個額外的列,比如說「序列」,它將具有訂單號,在該序列號中提取記錄。當按照「序列」提取訂單時,您將獲得期望的訂單。

但插入一行或刪除一行需要大量的序列更新。