2010-11-18 8 views
2

Ich entwickle eine Android-Anwendung, die verschiedene Statistiken aus einer statischen On-Phone-Datenbank über Autos abfragt, wie Beschleunigung, Hubraum, Türen, etc. Ich muss das Format der Datenbank angeben Klient. Die Benutzeroberfläche muss in der Lage sein, eine sortierte Liste mit Informationen für ein bestimmtes Attribut aus mehreren Fahrzeugen anzuzeigen, z. B. Hubraum oder Kosten, UND eine andere Ansicht, die alle Attribute für ein bestimmtes Fahrzeug anzeigt.Sqlite Schema für Android-Anwendung

Mein erster Gedanke, anstatt eine Tabelle für jedes Attribut mit einer Spalte zu schaffen: (das ist, was ist, 1. Normalform)

Cars: 
ID - integer primary key 
Make - text 
Model - text 
HorsePower - Real 
Acceleration - Real 
Doors - INteger 
etc.. 

diese stattdessen tun:

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 

Dies ermöglicht die Ansicht, gegeben die CarID und die AttributeID, um einige Abfragen durchzuführen und nur die Ergebnisse anzuzeigen. Bei der ersten Form müsste die Ansicht irgendwie wissen, welcher Einheiten-/Anzeigename zu welchen Spalten gehört.

Ist dies ein vernünftiger Weg, um sie zu bitten, senden Sie mir das Schema? Mit anderen Worten, wenn Sie eine Anfrage hatten, die Daten in diesem Schema zur Verfügung zu stellen, würden Sie "ooh brutto!" Sagen?

Bearbeiten: Hinzugefügt Beispiel des ersten Schemas, und lieferte mehr Klarheit.

+0

Nicht verwandte Frage: Wäre es nicht besser, eine Online-Datenbank zu haben und eine Anwendung zu erstellen, die nur fragt? Auf diese Weise können Sie die Daten aktualisieren, ohne die App zu aktualisieren? – nbarraille

+0

@nbarraille - Das war eigentlich mein erster Vorschlag, aber sie wollen es gebündelt mit der Anwendung, so dass eine Datenverbindung nicht erforderlich ist. –

+0

Macht Sinn. Der beste Weg, um dann zu gehen (IMO) ist sowohl online als auch lokale Datenbanken, und aktualisieren Sie die lokale, wenn die App mit verfügbaren Netzwerk läuft. – nbarraille

Antwort

0

Ich habe nicht mit Android gearbeitet, aber ich habe im Automotive Aftermarket Datenbank-Publishing gearbeitet. Typischerweise werden die Feature-Attribute als Kind Datensätze an die Submodells Einheit angebracht ist, und Sie haben so etwas wie dieses:

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 

In einem OODBMS können Sie MODELFEATURES haben und es ihnen ermöglichen, auf der Submodells Ebene außer Kraft gesetzt werden, wie Klassenvererbung.