问题涉及两个 SQLite 数据库表:
人员
和测量
。
一个人可以有多个测量值,但每个测量值只能有一个人。所以人与测量之间是1:M的关系。
我已经有一个显示所有人的列表。我自己编写的对象关系映射类将persons
表中的数据库实体转换为person对象,然后将人名显示在列表中。
现在我必须扩展列表,不仅显示人员姓名,还显示每个人的测量次数。
一个列表条目应如下所示:
Person XY
2 Measurements
一种方法是在显示列表之前为每个人进行单独的 COUNT
查询。然而,这将是一个非常低效且糟糕的解决方案。
另一种方法是向 Persons 表添加一个 ref_count
列,该列必须包含相关测量的数量。
如果感觉关系数据库对于此类问题的结构很糟糕。我应该如何实现该列表?
最佳答案
关系数据库非常适合这种用途。
在查询人员表时,您需要更改查询以包含每个人的测量表中的项目数。像这样的东西;
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 可能不准确,但计数、连接和分组依据是重要的位。请注意,您从 Persons 表返回的所有字段都必须包含在分组依据中。
参见this详情请见网站
关于java - 在 SQLite 数据库中实现引用计数之类的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32777758/