2017-02-12 7 views
0

私は外国語で単語を学習するためのアプリケーションをやっているので、私はこの言葉をデータベースに保存しています。これらの言葉はで、を例えばの3つのレベルに分けています。すべてのレベルはいくつかのグループの単語で構成され、これらのグループはSQLite dbのテーブルを導入します。私はアプリケーションとデータベース間の通信としてSQLiteOpenHelperを使用しています。何が良いですか?いくつかの小規模なデータベースまたは1つ大きいです

今質問します。何が良いですか?

  • 3小さなデータベースを行い、すべてのレベルのための各ので、一緒に、3つのオープンヘルパーと3つのDBSを自分の SQLiteOpenHelperを使用しています。
  • 大きなデータベースの3つのレベルは、 多くのテーブルを意味しますが、SQLiteOpenHelperは1つのみです。

アドバイスや意見をいただきありがとうございます。

+0

"より良い"を定義してください。 – Egor

+0

確かに、私は3 dbsとヘルパーでこのオプションを持っており、アプリケーションを使用している間はフリーズします。あたかも空のデータベースから突然読み込む場合 - エラーコード:1(SQLITE_ERROR) 原因:SQL(クエリ)エラーまたはデータベースがありません。 ( "null"の近く:構文エラー(コード1):、コンパイル中:SELECT MAX(_id)FROM null) – Xengo

答えて

2

あなたのコメントに記載されているエラーは、ほとんどの場合アプリケーションコードのバグです。このようなエラーが複数のデータベースにあるアプリケーションで発生する必要はありません。あなたの元の質問に対する私の答えは、単一のデータベースを使用することが客観的に「より良い」ということです。

これは、管理するコードが少なくて済み、状況によっては間違ったデータベースにアクセスしようとする可能性がなく、コードがより慣用的になるためです。つまり、複数のデータベースを使用する利点はありません。複数のデータベースを使用することになっていたので、あなたのコードを読んだ人は、なぜあなたがそれをしたのかを理解しようと多くの時間を費やすでしょう。

+0

答えをありがとう!そのエラーの原因になる可能性がありますが、カーソルまたは各アクティビティのデータベース全体を正しく閉じることはできません。 – Xengo

+0

エラーメッセージは、クエリ 'SELECT MAX(_id)FROM null'をコンパイル中にデータベースでエラーが発生したことを示しています。そのSQL文がなぜ有効でないのかを理解するためにあなたに残しておきます。 – GreyBeardedGeek

4

大きなデータベース(DB)を1つお勧めします。

大規模なデータベースを作成することに心配する必要はありません。大量のデータ(および多数のテーブル)を格納するためにDBが考案されています。 1つのDBを複数のものよりも作成し保守する方がはるかに簡単で、1つのDBを使用するとコードがはるかに明確になります。

あなたのプログラムは分かりませんが、私はさらに進んでいきます。同じ情報を保存し、レベルを表示する列と別のものを表示する場合は、同じテーブルにすべての単語を格納します彼らが属しているグループを表示する。

SQLの主なアイデアは、データベースがどれだけのスペースを必要とするか、そしてクエリの結果を見つけるのにどれくらいの時間がかかるかを気にしないことです。DataBase Managent Systems(あなたのケースではSQLiteOpenHelperとSQLite )は空間と時間を考慮すると非常に効率的です。代わりに、簡単に拡張できるシステムの設計に集中する必要があります(たとえば、単語を含むテーブルに別の列を追加する場合(たとえば、単語に関する新しい情報を保存する場合)、または新しいレベルまたはグループを開発の後期段階)、明確な構造を持っています。 SQLのSELECTコマンドを使用すると、グループとレベルを数ミリ秒で分けることができなくなりますが、データベースの柔軟性が向上します。レベルやグループを追加して、単語に関する情報を簡単に追加できます。あなたは良いDBをdesingingの鍵:同じテーブル内の異なるテーブルと同じ種類のデータに異なる種類のデータを格納する必要があります...

関連する問題