我应该从数据库视图中驱动统计列表吗

Should I drive a stats list from a database view

我正在开发一款显示用户统计数据的游戏:杀死的敌人、游戏时间等。它是一个有序的结果列表,由 sqlite 数据库驱动。

我正在为如何向用户显示统计信息的设计选择而苦苦挣扎。这个问题最好用例子来表达。采取以下措施:

-= Personal Bests =-
Most coins collected: 15
Most enemies killed: 26
Favourite Weapon: Laser
Most often Killed By: Badguy

上面的table是两列的简单结构:Label和Value。但是,每一行都有不同的数据结构。支持上面每一行的查询需要不同的聚合和过滤器(在同一个table)。

我的问题是关于将此视图放在一起的最佳方式。

策略 1:蛮力 (App-Side) 我为每一行向我的数据库调用 4 个查询,每个查询都特定于统计信息。这将使我在应用程序版本之间具有最大的灵活性,因为支持视图的所有逻辑都在应用程序中。当没有返回给定统计数据的行时,它也很有帮助,让我可以轻松插入默认值。此外,它使我能够更好地处理为给定统计信息返回的各种数据类型。

策略 2:自定义视图 (DB-Side) 我在视图上调用 1 个查询到我的数据库,并允许它驱动列表。该视图将是 4 个查询 UNION 在一起。在我的应用程序中,我会简单地获取 header 和值,并将它们放入 table。好处是,我可以在没有新版本的情况下即时更改所有应用程序版本的统计屏幕。缺点是定义我的视图以及在没有为给定 sub-query.

返回行时处理情况的复杂性

性能不是一个大问题,因为我将拥有最多 20 行统计信息。我想我主要关心的是编写可持续的代码/time-efficient 不会让我头疼的代码。

我从数据库视图开始,但我已经对此感到厌烦,所以我正在考虑切换到策略 1。只是想知道社区的想法。

通常你的 View 必须不知道任何数据源(DB/File on disk/etc),它会影响组件更好的互换性,更容易测试等。所以我更喜欢策略 1 :)