sqlite 这是存储这些数据的最佳方式吗?

vshtjzan  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(155)

我有一个树状结构的数据存储,用于每小时录制一场比赛。我有一个文件夹树,格式为:用户名/年/月/日期/时间.csv
我的目标是将其替换为:

  • SERVER提供用户登录的服务器。
  • UserExperience将记录在一小时内获得的所有技能经验(以及数量)。这是一小时的总和。
  • 这是一个我真的不确定的东西:UserActivites。这可能是在一小时内发生的一些事件的可变文本(“我将X技能提升到Y级”,“我杀死了Z许多头目A”,“我完成了任务B”)以及更多的事件,这些事件是在加班后添加和删除的,所以我不能准确地制作主键。我不知道这里能做些什么。

我也不确定如何查询两个日期之间的某组用户的统计数据,但这是另一个问题。

cuxqih21

cuxqih211#

因此,活动(在UserActivites中)总是与(随着时间的推移可能会增加)活动查找表相关的活动。活动的文本表示位于Actitions表中,您只需从UserActitivity表中链接到它--到目前为止似乎还可以。您已经有一个外键从UserActivities.ActivityID指向Activities.ActivityID(UserName指向UserStatus也是如此)?
日期时间只是一个时间点--不需要将其放入某种组合索引中(就像主键一样)。不过,您可以在将来为DateTime建立索引,以获得更好的查询性能。
我会做的是:

  • 丢弃UserActitivity上的组合主键
  • 在用户活动表(ID INTEGER PRIMARY KEY)中创建一个无意义的、自动递增的整数主键

你应该考虑的事情:

  • 在UserActitivity中对UserName和ActivityID分别创建一个索引;这不是必需的,但建议外键的子键列有一个索引(https://sqlite.org/foreignkeys.html#fk_indexes)

这样,您的数据设计看起来很不错。你提到了关于用户活动的*“并删除了加班”*(如果我理解正确的话)。如果是这样的话,我会在UserActiactive中为已删除记录创建一个布尔列。这样,您就可以分析已删除的活动。在数据库中创建记录后,i永远不会删除这些记录。

相关问题