2010-11-18 60 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,并允许他们在子模型级别覆盖,就像类继承。