4

Android API 8(Froyo 2.2)で実行されているSQLiteデータベースに音楽タグとコメントを保存する効率的な方法を探しています。Vorbisコメントと同様の形式にする必要があります。

これまで私が検討したこと:

同様にフォーマットされた「fields」という名前の列に格納されたJSONオブジェクト:

+-----+----------------------------------------------------------------------+
| _id |                                  fields                              |
+-----+----------------------------------------------------------------------+
|   0 | {"artist":"Artist", "title":"Track", "album":"Album 123", "track":3} |
+-----+----------------------------------------------------------------------+

各フィールドの個々の列。これはgoogle.android.musicがフィールドを保存する方法ですが、新しいトラックが列を追加しすぎるのではないかと心配していました。ソース:

一方、経験豊富なデータベース設計者の多くは、適切に正規化されたデータベースでは、テーブルに100を超える列が必要になることはないと主張します。 http://www.sqlite.org/limits.html

+-----+-------------+----------------+------------+
| _id |   artist    |     album      |   title    |
+-----+-------------+----------------+------------+
|   0 | Test Artist | Test Album 123 | Test Title |
|   1 | An Artist   | This Album     | This Title |
+-----+-------------+----------------+------------+

もともと私はそれらを入れただけです

Map<String, String> and invoked toString(), adding it to 'fields' as follows:

+-----+--------------------------------------------------------------+
| _id |                            fields                            |
+-----+--------------------------------------------------------------+
|   0 | {title=Example Title, album=Example Album, artist=An Artist} |
+-----+--------------------------------------------------------------+

これはJSONオブジェクト(最初の例)に似ていますが、Javaオブジェクトに解析して戻すなどの問題が追加されています。

任意の数のフィールドのオプションを使用したいので、JSONオブジェクトを使用する傾向があります。代替オプション、または同様の状況で何をするかを教えてください。ありがとう!

http://www.sensefulsolutions.com/2010/10/format-text-as-table.htmlを使用してASCIIテーブルを作成しました

4

3 に答える 3

2

データを正規化することを強くお勧めします-JSONなどを保存しないでください。後でそのデータを意味のある方法でクエリする能力が大幅に低下するためです(データを正規化しないことが最も確実な保証方法のようです)今はしていなくても、将来そのデータを照会する必要があります)。

複数の列の 2 番目の例に進んでください。

于 2013-01-08T05:08:36.457 に答える
1

NoSQl データベースについて聞いたことがありますか? データを JSON モデルに保存するため、各データ項目に任意のフィールドを含めることができるため、ニーズに最適です。TouchDB-Android をチェックしてください。

于 2013-01-08T05:14:22.230 に答える
1

各フィールドの個々の列から始めます。後でいくつかのユーザー定義フィールドが必要になった場合は、後でいつでも json オブジェクトを追加できますが、それは必要ないと思います。

個々のフィールドには、任意のフィールドで並べ替えやフィルター処理を行う機能など、非常に多くの利点があります。ほとんどの SQL データベース機能は、個々のフィールドを持つことに基づいているため、フィールドを組み合わせると何かを行うのがはるかに難しくなります。

于 2013-01-08T05:08:25.107 に答える