PHP / MYSQL - 如何为25,000个用户构建日志数据库

时间:2011-07-05 20:10:50

标签: php mysql database-design

我正在与一家公司的5个部门的约25,000名用户(员工)打交道。

对于所有这些用户,目前正在使用MS Excel电子表格。电子表格由大约35列组成,记录员工的日常活动。

每行是1个活动,平均每天约有3个活动(永无止境,意味着日志只会增长和增长)。

我的问题:

我想构建一个数据库(PHP / MYSQL)来保存这些用户的活动日志,而不是MS Excel文件。

  1. 我是否应该为每个用户提供一个包含35列的表...导致包含25,000个表的数据库?

  2. 或者我应该将活动存储到35个大小的数组,将其转换为二进制并将其存储在blob中并每年构建一个这样的表...每年导致1个表,25,000行?< / p>

3 个答案:

答案 0 :(得分:3)

Employee
------------
employeeID
employee_name

Day
------------
dayID
day

Activity
-------------
activityID
activity_name
dayID
employeeID

通过这种方式,您可以查看一天的活动 您可以查看员工的活动 可以在特定日期查看员工的活动

答案 1 :(得分:1)

如果你实际上每个活动使用了很多/大部分字段,我会使用35列表。

CREATE TABLE users (
    uid    INT,
    name   VARCHAR(255),
    ...
);

CREATE TABLE activities (
    uid    INT, // references users.uid
    type   VARCHAR(32),
    date   DATE,
    ... // The 35 activity-related columns
);

然后我会按时分区。如果搜索性能很重要,或者每年的表太大而无法获得良好的性能,可能每年如您所建议的那样(这意味着每个表最多可达2740万行)或每月(每个表约220万行)

答案 2 :(得分:0)

根据经验,您不希望为每个用户创建表。您希望有一个表users,在这种情况下,您可以存储仅与用户模型相关的ID,名称等。然后有一个单独的表格,用user_id列记录用户的日常活动,作为users表中用户行的参考。