2

私は、多対多の関係を持つ db 2 テーブルを持っています。

TAB_ARTICLES: {_ID, TITLE, BODY, DATE}

TAB_TAG: {_ID、名前、色、日付}

TAB_ART_TAG: {_ID、ARTICLE_ID、TAG_ID}

記事の 1 つの行に ListView を設定する必要があり、すべての行に、その記事にリンクされているすべてのラベルの TextView が必要です。次の画像のように

私は2つの解決策を考えています。

を。TAB_ARTICLE でのみ作成されたカーソルで CursorAdapter を使用し、すべての行でクエリを実行して、この記事に関連するすべてのタグを探して他の 2 つのテーブルを結合します。このソリューションには、多くの db アクセスが必要です。

b. 仮テーブルを実現

TABLE_TEMP: {ARTICLE_TITLE, ARTICLE_BODY, ARTICLE_DATE, TAG1_NAME, TAG1_COLOR, TAG2_NAME, TAG2_COLOR, ...}

このテーブルのクエリをカスタム アダプターのカーソルとして使用します。このソリューションはより多くのスペースを使用し、表の列のために表示される可能性のあるタグに制限があります。

他の方法はありますか?

4

1 に答える 1

0

ええと、実際には、それは多基準のものです:時間、スペース、更新、検索など。したがって、単一のレシピはありません。ただし、複数のクエリによってスクロールが滞る可能性が非常に高くなります。さらに悪いことに、一部のデバイスでのみ。一時テーブルは、データの全体的なサイズに応じて、OKの場合とそうでない場合があります。また、この冗長テーブルをメインテーブルと同期させて、両方を同時に更新することもできます。

最も単純なトレードオフの1つは、タグデータ(XML、JSON、その他のマークアップ/分離形式)を含む冗長なTEXT / CLOB列をTAB_ARTICLESに追加し、詳細データとの同期を維持することです。ちなみに、M:Mスキーマが本当に必要になるのは、クエリがそれを実証している場合だけです。それ以外の場合は、単一のテーブルで十分です。

繰り返しになりますが、最初にすべての基準をリストして評価し、どのディメンションが本当にスケーラブルである必要があるかを判断し、残りを単純化します。

于 2012-10-26T10:42:50.500 に答える