2011-01-12 9 views
0

関連質問を持っているテーブルの上にSQLiteの1対多の関係:Android: SQLite one-to-many designアンドロイド:レコードを変更する受注頻繁

これは、ここに私の最初の投稿をされ、そしてそれはまた、データベースを扱う初めてです。何かの説明や修正がある場合は、私に知らせてください。

RSSフィードから収集したアイテムをよりよく格納するためにSQLiteデータベースを設定しようとしています。私は3つのテーブルをセットアップしようとしています。それは次のようになります。

表1:チャネル・テーブル(アイテムは一定の順序に滞在)

_id |フィードの場所|チャンネルタイトル|チャンネル説明| ...


表2:項目表

_id(アイテムがアクセスし、削除を容易にするために、時系列順に格納する必要があります)|アイテムタイトル| ... |チャンネルID | ...

ここで、チャネルIDには、項目が属するチャネルの行番号があります。

その部分はかなりシンプルですが、ここに私の問題があります。私はそれらに関連するカテゴリで項目を照会できるようにしたい。それらは解析されるXMLに含まれており、それらの値でソートするのは素晴らしいことです。だから、私は別のテーブルをセットアップし始め、上記の1対多の関係を実装しましたが、問題が発生しました。これらのアイテムのIDは、より多くのアイテムが解析されたときに変更される可能性が高いため、IDは静的ではなく、以前に行ったようにカテゴリをリンクすることはできません。また、私が見つけた別の課題は、アイテムが同じカテゴリに関連する可能性があったため、各カテゴリが多くの異なるアイテムを指すのに理想的かもしれないという事実でした。

それは私が立ち往生している場所です。

答えて

0

私はあなたの状況を正しく理解していません。カテゴリの非静的なIDですか?それはちょっと変わったようです。なぜなら、IDのアイデア全体は、それが人生の時代を通じて一定であるからです。

それでも問題が解決しない場合、私は自分のID構造体を実装しようとしており、それが一定であることを保証します。カテゴリ名に基づいてIDを計算することもできます(IDとしてmd5またはsha1の合計を使用する、過度なことはありますが、静的でユニークであることが保証されています)。あなたのカテゴリーにユニークなID構造を持たせることで、前と同じテーブル構造(項目とチャンネル)を使用できるようになります。

idを計算する前に、カテゴリ名のすべての文字を小文字にし、非英数字の値を削除することも考えられます。このようにして、おそらく同じカテゴリ(「カテゴリ」は「Cat-e-gory」に等しくなります)のカテゴリを取り除きます。

私は実際にあなたの質問に答えわからないんだけど、私はあなたがさて、あなたは私の質問の一部に答えました:-)

+0

それのいくつかを利用することができる願っています。項目はいつでもデータベースに追加したり削除することができるため、カテゴリは変更される可能性があります。誰もRSSリーダーを見て、古いアイテムを見たくないので、古いアイテムを削除することにしました。私はその問題を解決するためにユニークなIDを実装するつもりです。ありがとう。 – scottmacwatters

+0

ああ!したがって、カテゴリの実際のIDは実際には変更されません。ただし、カテゴリ自体は削除される可能性があるため、アイテムとカテゴリ間の「一対多の」関係が壊れる可能性があります。私は私の仮定でいくらか正しいですか? – dbm

+0

遅い応答に申し訳ありませんが、はい。私はIDの "Item"のURL Linkを使用して終わるつもりだと思う。それを識別するのに十分なユニークさです。そして、同じURLに行く2つがあるべきではありません。 – scottmacwatters

関連する問題