在SQLite数据库中实现引用计数之类的东西

时间:2015-09-25 08:17:05

标签: java android database sqlite orm

问题涉及两个SQLite数据库表: personsmeasurements

一个人可以进行多次测量,但每次测量只有一个人。因此,人与测量之间存在1:M的关系。

我已经有一份显示所有人的清单。 persons表中的数据库实体通过我自己编写的对象关系映射类转换为person对象,然后列表中会显示人名。

现在我必须扩展列表,不仅要显示人名,还要显示每个人的测量数。

一个列表条目应如下所示:

Person XY
2 Measurements

一种方法是在显示列表之前为每个人单独进行COUNT查询。但是,这将是一个非常低效和糟糕的解决方案。

另一种方法是在人员表中添加ref_count列,其中必须包含相关测量的数量。

如果感觉关系数据库对于这样的问题有一个糟糕的结构。我该如何实施清单?

1 个答案:

答案 0 :(得分:4)

关系数据库适合这种用途。

在查询人员表的位置,您需要更改查询以包括每个人的测量表中的项目数。像这样的东西;

SELECT PersonName, Count(Measurements.ID) AS NumberOfMeasurements
FROM Persons LEFT JOIN Measurements on Measurements.PersonID = Persons.ID
GROUP BY Persons.ID, Persons.PersonName

这将为您在结果光标中提供两列,人员名称和名为NumberOfMeasurements的度量计数。我的SQL可能不准确,但count,join和group by是重要的位。请注意,您从Persons表返回的所有字段都必须包含在组中。

有关详细信息,请参阅this网站