0

私はAndroidとSQLiteにまったく慣れていません。私は現在、ユーザーがお気に入りのアーティストのリストを作成する必要があるアプリに取り組んでいます。

このアーティストデータをすでに表示しているチャートをいくつか実装しました。リストへのデータの追加を実装する方法を簡単に理解できると思います。

私はSQLiteに2つの別々のテーブルを持つことを考えていました:

  • リスト(ユーザーが作成したリスト名を保存します)

  • ChartItems(チャートアイテムとそれらが属するリストを格納します)

ただし、この場合は「ListName」のリストテーブルに必要なフィールドは1つだけなので、このためのテーブルを用意することは重要ではないかもしれないと思いました。

ユーザーからの入力を取得するときに動的にテーブルを作成することは可能ですか?

例:ユーザーがリストを作成し、その値を使用してテーブルを作成します。

ありがとう。

4

1 に答える 1

0

その場で新しいテーブルを作成したくありません。2 つのテーブルの提案は問題ありません。リスト テーブルには少なくとも 2 つのフィールドが必要です。主キーである id または _id と呼ばれる整数フィールドと、リスト名のテキスト フィールドです。Chartitems テーブルには、それが属するリストの ID を保持するフィールド (listid) があります。つまり、chartitem は 1 つのリストにのみ属することができ、chartitem をリストに追加するには、そのレコードに listid フィールドを設定します。これは 1 対多の関係です。

単一の chartitem を複数のリストに含める場合は、多対多の関係が必要です。これは、3 番目のテーブル (リンク) によって実装されます。このテーブルには、リスト (listid) にマッピングされる 1 つのフィールドと、チャートアイテム (itemid) にマッピングされる 1 つのフィールドがあります。チャートアイテムをリストに追加するには、リンク テーブルに適切なリンク エントリを作成します。この場合、chartitem テーブルには listid フィールドは必要ありません。

これらの概念を明確にするために、データベース内の関係についてもう少し読むことをお勧めします。私が強くお勧めする 1 つの原則は、すべてのテーブルにそのテーブルの主キーである id というフィールドを含め、それを他のテーブルからのすべての参照に使用することです。長い目で見れば、これはリレーションシップで他のフィールド (名前など) を使用するよりもはるかにうまく機能します。

于 2013-02-26T23:08:43.637 に答える