为每个用户创建表?

时间:2013-10-10 14:04:05

标签: mysql database

我正在编写一个Web应用程序,其中每个用户都存储他们的任务。 (就像待办事项一样)。任务将存储在表格中(例如: userstasks )。

哪一个更好?

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

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

P.S。:有很多用户!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

始终从最简单的工作开始并坚持下去,直到证明成为性能问题。您在#2中所说的内容被称为“过早优化”。当#1遇到严重的性能问题时,你才会走这条路。

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

对于大多数具有大量读取的应用程序,数百万条记录不是问题。这是一个需要特别关注的大量应用程序,或者像Reddit或Twitter那样具有大规模的应用程序。既然你没有制作其中的一个,那么首先要坚持正确规范化的结构。

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