2010-11-18 42 views
2

我正在開發一個Android應用程序,從靜態手機數據庫中查詢有關汽車,如加速度,引擎位移,門等各種統計數據。我需要從客戶。 UI需要能夠顯示來自多輛車的特定屬性的排序信息列表,例如發動機排量或成本,以及顯示特定車輛的所有屬性的另一視圖。Android的應用程序的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 2010-11-18 22:40:10

+0

@nbarraille - 這實際上是我的第一個建議,但他們希望它與應用程序捆綁在一起,這樣就不需要依靠數據連接。 – 2010-11-18 22:47:08

+0

有道理。那麼最好的方法是(IMO)既是在線數據庫又是本地數據庫,並且在應用程序運行網絡時更新本地數據庫。 – nbarraille 2010-11-18 23:16:47

回答

0

我沒有與Android合作過,但我曾在汽車售後數據庫發佈。通常情況下,功能屬性附於子記錄到子模型的實體,您有這樣的事情:

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,並允許他們在子模型級別覆蓋,就像類繼承。