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