我正在开发一个Android应用程序,该应用程序从静态的手机数据库中查询有关汽车的各种统计信息,例如加速度,发动机排量,门等。我需要从客户端指定数据库的格式。 UI必须能够显示来自多辆汽车的特定属性的信息的排序列表,例如发动机排量或成本,以及另一个视图,该视图显示特定汽车的所有属性。

我的第一个想法是,而不是为每个属性创建一个带有列的表:(这是什么,第一范式?)

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,这允许视图执行几个查询并仅显示结果。对于第一种形式,视图必须以某种方式知道哪些单位/显示名称与哪些列一起使用。

这是要求他们向我发送架构的合理方法吗?换句话说,如果您有要求提供该模式中的数据的请求,您会说“哦,总值!”?

编辑:添加了第一个架构的示例,并提供了更多的清晰度。

最佳答案

我尚未使用Android,但曾从事汽车配件市场数据库发布。通常,功能属性作为子记录附加到SubModel实体,并且您具有以下内容:

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


在OODBMS中,您可以拥有MODELFEATURES并允许它们在SUBMODEL级别被覆盖,就像类继承一样。

10-07 19:47
查看更多