我有一个SQLite数据库,我存储名称,手机等信息。这个数据库获得了很多读取而没有多少写入,因此,我添加了一个自动递增ID。
然后我需要为每个ID存储相当多的信息。那些是时间戳(从纪元开始的秒数)。我需要每个用户200个时间戳(希望有1000多个用户)。我需要能够快速过滤这些时间戳(从今天到今天+ 1周)。
我解决这个问题的方法是这样的:
id1 | id2 | id3 | .... | idn
_________________________________
time | time | time
time | time | time
time | | time
| | time
显然,我知道这不太理想(我还需要删除许多这些时间戳,所以我得到一个不断增长/准空表,但我没有其他想法。
为每个用户使用单独的表是否更好?
答案 0 :(得分:3)
不,您需要创建两个表Users
和Events
。
在Users
中,您存储用户ID,姓名和其他每个用户一次的项目。
在Events
中,您为每个时间戳存储一条记录。每条记录包含用户的ID,时间值以及一次且仅针对该单个事件发生的任何其他信息。
这是关系设计的基础。
答案 1 :(得分:2)
您应该使用单独的表并使用外键连接回用户(通过userId或独特的东西)。您的设计将使您无法再维护数据库。
+----------+ +----------+
| userId | | userId |
+----------+ <-----> +----------+
| time | | name |
| stamp | +----------+
+----------+ | other |
| info... |
+----------+
在右侧,它应该是具有用户特定数据的表,左边是具有时间条目的表。