我应该为临时用户创建一个单独的数据库表吗

Ras*_*pin 3 database-design

我有一个用户表来控制对网站的访问。我们目前有几百个用户,最终可能会增长到几万。我们要求允许“临时”用户。这些临时用户将拥有一个超时的令牌,永远不会再次使用。这些代币可能会在很大程度上超过一般用户。我的问题是这些临时用户是应该存放在通用表中还是存放在自己的表中。

我的倾向是同一个表,因为 userid 在其他地方用作外键,并且对临时用户仍然有用。id 之间的唯一性很重要。然而,我并不高兴用户表将充满许多不再需要使用的记录,因此会减慢表的速度。

我考虑过的另一个选择是创建一个用户记录,捕获 id,删除该记录,然后在另一个表中使用该 id。因此,我保留了 id 的唯一性,但减少了表格的膨胀。我不介意外键是否引用不同的表。

任何人都有类似的问题并有任何想法?

JNK*_*JNK 5

为什么不将它存储在主user表中(否则保留唯一 ID 将是一场噩梦),并ACTIVE在索引中包含一个位字段(您可以根据需要进行过滤)。

它不会真正减慢对表的访问速度,因为您的索引将能够非常快速地按活动/非活动排序,但您还可以避免因尝试“滚动您自己的”身份字段而引起的麻烦。