我正在开发一个Android应用程序,用于查询静态电话数据库中有关汽车的各种统计数据,例如加速度,引擎位移,门等。我需要从客户端指定数据库的格式。 UI需要能够显示来自多个汽车的特定属性的已排序信息列表,例如引擎位移或成本,以及显示特定汽车的所有属性的另一个视图。
我的第一个想法,而不是为每个属性创建一个包含列的表:(这是什么,第1范式?)
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 :(得分:0)
我没有使用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级别覆盖它们,就像类继承一样。