2013-10-10 53 views
1

我正在为每个用户存储他们的任务编写一个Web应用程序。 (像一个待办事项申请)。任务将存储在一个表中(例如:userstasks)。为每个用户创建表?

哪一个更好?

1- userstasks表中有一个名为user_id的列,它定义了谁创建的任务?

2-一个新的表(例如usernametasks)将用于存储其所有任务每个注册用户创建?

P.S .:有很多的用户!

回答

1

总是开始与工作,并坚持下去,直到它的证明是一个性能问题最简单的事情。你在谈论#2时被称为“不成熟优化”。当#1出现严重的性能问题时,您只能沿着这条路走下去。

当您跨不同用户分割数据时,跨所有用户查询的能力将严重降低。对于所有意图,用户将生活在不同的世界。报告几乎是不可能的。

对于大多数应用程序有很多的读取,数百万记录不是问题。这是需要特别关注的重写应用程序,还是像Reddit或Twitter这样的大规模应用程序。由于你没有制作其中的一个,所以首先要坚持正确的标准化结构。

“许多用户”可能意味着数十或数十万。在适当调整的MySQL实例上,这不是什么大问题。如果您需要更多的扩展,请启动一些只读的辅助服务器来分散负载或查看使用MySQL群集。

1

假设某个任务不能有多个用户,我会在短期内使用选项1(一个名为具有user_id外键的任务的表)。如果是这样,那么你需要一个JOIN表。检查设置一个实际的外键,这将促进数据本身的参照完整性。

+0

Re。 '很多用户',除非你拥有数以百万计的用户,这与许多可用的生产数据库无关。这就是说你应该阅读如何正确索引你的表格。 – brez

相关问题