我正在与一家公司的5个部门的约25,000名用户(员工)打交道。
对于所有这些用户,目前正在使用MS Excel电子表格。电子表格由大约35列组成,记录员工的日常活动。
每行是1个活动,平均每天约有3个活动(永无止境,意味着日志只会增长和增长)。
我想构建一个数据库(PHP / MYSQL)来保存这些用户的活动日志,而不是MS Excel文件。
我是否应该为每个用户提供一个包含35列的表...导致包含25,000个表的数据库?
或者我应该将活动存储到35个大小的数组,将其转换为二进制并将其存储在blob中并每年构建一个这样的表...每年导致1个表,25,000行?< / p>
答案 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
表中用户行的参考。