私は、加速度、エンジン変位、ドアなどの車に関する静的な電話データベースからさまざまな統計情報を照会するAndroidアプリケーションを開発しています。クライアント。 UIは、エンジンの変位やコスト、特定の車のすべての属性を表示する別のビューなど、複数の車の特定の属性に関するソートされた情報のリストを表示できる必要があります。アンドロイドアプリケーション用のSqliteスキーマ
私の最初の考えではなく、各属性の列を持つテーブルを作成するよりも:(?何をされ、第一正規形)
Cars:
ID - integer primary key
Make - text
Model - text
HorsePower - Real
Acceleration - Real
Doors - INteger
etc..
は代わりに、これを行います。
Cars
ID - integer primary key
Make - text
Model - text
CarAttributes:
ID - integer primary key
DisplayName - Text (that gets shown as a column header, or for a line)
Unit - Text (a short unit suffix that gets appended to the value such as mph)
Values:
ID - integer primary key
CarID - foreign key
CarAttributeID - foreign key
Value - Real
は、これが可能にビュー、いくつかのクエリを実行し、結果を表示するためにCarIDとAttributeIDを指定します。最初の形式では、ビューは何らかの単位/表示名がどの列になるかを何とか知っていなければなりません。
これは私にスキーマを送信するよう要求する合理的な方法ですか?言い換えれば、そのスキーマでデータを提供する要求があった場合は、「よろしく!」と言いますか?
編集:最初のスキーマの例を追加し、より明確に説明しました。
関連しない質問:オンラインデータベースを用意して、それを照会するだけのアプリケーションを作成する方が良いのではないでしょうか?そうすれば、アプリを更新せずにデータを更新できますか? – nbarraille
@nbarraille - これは実際のところ私の最初の提案でしたが、データ接続に頼る必要がないように、アプリケーションにバンドルしてほしいと思っています。 –
意味があります。その後、最善の方法(IMO)はオンラインとローカルの両方のデータベースであり、アプリケーションがネットワークで利用可能な状態で実行されているときにローカルのデータベースを更新します。 – nbarraille