我基本上想在SQLite中做補充集操作,但不知道如何。如何高效批量更新SQLite中項目的標籤列表?
說我有標籤列表在內存中像這樣的項目:
"red", "blue", "green", "yellow"
和數據庫與同一項目相關的這些標籤:
"red", "orange", "purple"
我想是讓數據庫反映內存中的狀態。我需要:
- 刪除與數據庫中不存在於內存中的項目的標記的關係。刪除「organge」和「purple」。
- 添加我在數據庫中沒有的標記關係,但是在內存中執行。添加「藍色」,「綠色」和「黃色」。
我可以簡單地抓住現有標記的完整列表,並使用Java(在Android)上執行SQL以外的操作,但這可能是一個巨大的列表,我在移動設備上執行此操作。
我也可以刪除項目的所有現有標記關係,然後將其添加到內存中,但這可能會添加很多已經存在的關係,並且看起來像是不必要的工作。
我主要有以下表格:
項目
id, int primary key autoincrement not null
name, text
標籤
id, int primary key autoincrement not null
name text
tagged_items
id, int primary key autoincrement not null
tag_id, int
item_id, int
如果我擺脫了標籤ID,我是否需要標籤表? – 2012-01-02 01:27:22
@BjornTipling:也許不是。如果性能足夠好,'tagged_items'上的'SELECT DISTINCT'可以爲您提供一組使用中的標籤。如果你有定義標籤的概念沒有標籤項目,這會迫使你在其他地方維護定義標籤的名單。 – CommonsWare 2012-01-02 12:22:26