SQLite:将数据存储在独立的列中

时间:2014-12-04 21:43:07

标签: sql sqlite

我有一个SQLite数据库,我存储名称,手机等信息。这个数据库获得了很多读取而没有多少写入,因此,我添加了一个自动递增ID。

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

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

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

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

为每个用户使用单独的表是否更好?

2 个答案:

答案 0 :(得分:3)

不,您需要创建两个表UsersEvents

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

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

这是关系设计的基础。

答案 1 :(得分:2)

您应该使用单独的表并使用外键连接回用户(通过userId或独特的东西)。您的设计将使您无法再维护数据库。

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

在右侧,它应该是具有用户特定数据的表,左边是具有时间条目的表。