2011-01-12 69 views
0

相關問題一個表中的一個一對多關係:Android: SQLite one-to-many design安卓的SQLite上有記錄的訂單變更頻繁

這是我在這裏的第一篇文章,這也是我第一次處理數據庫。如果有任何澄清或更正,我可以做,請讓我知道。

我試圖設置一個SQLite數據庫,以更好地存儲從RSS源收集的項目。我正在嘗試設置3個表格。它看起來像這樣:

表1:頻道表(物品留在恆定的順序)

_id | Feed位置|頻道標題|頻道描述| ...


表2:項目表(該物品應存放在按時間順序排列,以便於訪問和刪除)

_id |商品標題| ... |頻道ID | ...

其中通道ID具有該項目所屬的通道所在的行號。

這部分很簡單,但這是我的問題。我希望能夠通過與它們相關的類別查詢項目。它們包含在將要解析的XML中,並且按照這些值進行排序會很棒。於是我開始建立另一張桌子,並實施上述相同的一對多關係,但後來我遇到了一個問題。由於在解析更多項目時,這些項目的ID可能會發生變化,因此這些ID不是靜態的,而且我無法按照以前的方式進行鏈接。另外,我發現的另一個挑戰是每個類別可能都需要指向許多不同的項目,因爲項目可能與相同的類別有關。

這就是我卡住的地方。

回答

0

現在我不確定我是否正確理解您的情況:是類別的非靜態ID?這似乎有點奇怪,因爲ID的整個想法是它在整個生命週期中保持不變。

如果仍然如此,我會嘗試實現我自己的id結構並確保它是不變的。你也許可以根據類別名稱來計算一個id(使用md5或sha1 sum作爲id,過度殺傷但保證保持靜態和唯一)。爲你的類別建立一個唯一的id結構將允許你使用與之前相同的表格結構(在項目和頻道上)。

在計算id之前,將類別名稱中的所有字母改爲小寫字母並刪除非alpha/numeric值也許甚至是個想法。通過這種方式,您可以擺脫最可能相同的類別(「類別」將等於「Cat-e-gory」)。

我不知道我其實回答了你的問題,但我希望你能做出一些使用它:-)

+0

嗯,你已經回答了我的問題的一部分。類別可能會隨時更改,因爲可能會隨時從數據庫中添加和刪除項目。我選擇刪除舊的項目,因爲沒有人想要查看RSS閱讀器並查看舊項目。我要實現唯一的ID來解決這個問題。謝謝。 – scottmacwatters 2011-01-13 03:31:57