在数据库中组织每日用户数据的最佳方法是什么?

时间:2015-06-26 22:21:21

标签: mysql database

我正在使用MySQL建立一个数据库,目的是为潜在的大量独特用户存储数据。每个用户都将拥有与他们相关的一些基本数据 - 一个唯一的用户名,他们加入服务时,他们使用该服务的次数,以及他们的个人偏好集。我打算保留一个名为“用户”的表格。致力于这些领域。

但是,在使用该服务的每个会话期间,将收集有关该用户的特定架构的大量数据。此数据包括执行此会话的用户,会话日期,用户执行的操作等等。

我的思考过程如下:如果我为包含每个会话数据的用户使用单个表,这似乎效率低下,因为每个唯一会话必须有一列,或者包含更多或更多的列少一个数组或会话列表。如果我想将这些数据保留为不确定数量的会话,那么每列一个想法就会崩溃,因为我认为存在列限制。在单列中更新数组似乎也不赞成,我认为原因与保持数据完整性和维持最佳组织有关。

所以看起来我想要两个表,一个用于用户,另一个用于会话。每当有人完成会话时,有关该会话的数据将被创建为“会话”中的新行。表,每行还有一个外键,将该会话链接到完成它的特定用户。

这是正确的思路吗?如果没有,我该怎么想呢?

由于

1 个答案:

答案 0 :(得分:1)

我会说你很亲密。您应该将用户和会话分开,并且您正在考虑建立关系建模。每个会话只有一个用户,因此它是一对多的关系。

1个用户(“用户”表中的1行)可以有多个会话(“会话”表中的1行)

外键是Sessions表中的用户ID。这会将每个唯一会话(我将假设它自己的会话ID)链接回Users表中的唯一用户。

如果您正在查看大量用户,这意味着大量会话,您可能需要考虑如何帮助会话表变得非常庞大且查询速度慢的选项。如果您每天都在收集这些数据,请考虑您可以在日期“分区”该表:

Partitioning on DateTime in MySQL

编辑:拼写错误