2010-11-18 11 views
2

私は、加速度、エンジン変位、ドアなどの車に関する静的な電話データベースからさまざまな統計情報を照会する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を指定します。最初の形式では、ビューは何らかの単位/表示名がどの列になるかを何とか知っていなければなりません。

これは私にスキーマを送信するよう要求する合理的な方法ですか?言い換えれば、そのスキーマでデータを提供する要求があった場合は、「よろしく!」と言いますか?

編集:最初のスキーマの例を追加し、より明確に説明しました。

+0

関連しない質問:オンラインデータベースを用意して、それを照会するだけのアプリケーションを作成する方が良いのではないでしょうか?そうすれば、アプリを更新せずにデータを更新できますか? – nbarraille

+0

@nbarraille - これは実際のところ私の最初の提案でしたが、データ接続に頼る必要がないように、アプリケーションにバンドルしてほしいと思っています。 –

+0

意味があります。その後、最善の方法(IMO)はオンラインとローカルの両方のデータベースであり、アプリケーションがネットワークで利用可能な状態で実行されているときにローカルのデータベースを更新します。 – nbarraille

答えて

0

私はAndroidで作業していませんが、自動車のアフターマーケットデータベースの公開に取り組んでいます。通常、機能、属性はサブモデルのエンティティへの子レコードとして添付し、あなたがこのようなもの持っている:OODBMSで

MAKERS 
makerid int 
makername varchar 

MODELS (e.g. Honda Accord) 
modelid int  
makerid int 
modelname varchar 

SUBMODEL (e.g. Honda Accord Sedan, Honda Accord Coupe) 
submodelid 
modelid 
submodeldescription 
yearintroduced 

MAJORSYSTEM 
majorsystemid 
majorsystemname varchar 

FEATURE 
featureid int 
featuredesc varchar 
majorsystemid int 

SUBMODELFEATURES 
submodelid int 
year int 
featureid int 

を、あなただけのように、MODELFEATURESを持ち、それらがサブモデルレベルで上書きすることができるようにすることができますクラス継承。

関連する問題