【问题标题】:SQLite: store data in independent columnsSQLite:将数据存储在独立的列中
【发布时间】:2014-12-05 06:59:18
【问题描述】:

我有一个 SQLite 数据库,用于存储姓名、手机等信息。这个数据库读取很多,写入不多,所以我添加了一个自动递增的 id。

然后我需要为每个 ID 存储大量信息。这些是时间戳(从纪元开始的秒数)。我需要每个用户 200 个时间戳(希望有 1000 多个用户)。我需要能够快速过滤这些时间戳(从今天到今天 + 1 周之间)。

我解决这个问题的方法是这样的:

id1  | id2  |  id3 | .... | idn
_________________________________
time | time | time
time | time | time
time |      | time
     |      | time

显然,我知道这并不理想(我还需要删除许多这些时间戳,所以我得到了一个不断增长/准空的表,但我没有其他想法。

为每个用户使用单独的表会更好吗?

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    不,您需要创建两个表UsersEvents

    Users 中,您存储用户 ID、姓名和其他每个用户只出现一次的项目。

    Events 中存储每个时间戳的一条记录。每条记录都包含一个用户的 ID、时间值以及任何其他信息,该事件仅发生一次且仅发生一次

    这是关系设计的基础。

    【讨论】:

    • 好的,我知道了。没想到这么容易。谢谢
    【解决方案2】:

    您应该使用单独的表并使用外键连接回用户(通过 userId 或唯一的东西)。您的设计将带您到数据库不再可维护的地步。

    +----------+            +----------+
    | userId   |            | userId   |
    +----------+  <----->   +----------+
    | time     |            | name     |
    | stamp    |            +----------+
    +----------+            | other    |
                            | info...  |
                            +----------+
    

    右侧应该是包含用户特定数据的表格,左侧是带有时间条目的表格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 2023-02-07
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多