我正在编写一个 Web 应用程序,每个用户都在其中存储他们的任务。(如待办事项应用程序)。任务将存储在一个表中(例如:userstasks)。
哪一个更好?
1- userstasks表有一个名为 user_id 的列,它定义了谁创建了任务?
2-将为存储所有任务的每个注册用户创建一个新表(例如usernametasks )?
PS:有很多用户!
假设一个任务不能有多个用户,我会在短期内使用选项 1(一个名为任务的表,带有 user_id 外键)?如果是这样,那么您将需要一个 JOIN 表。还要检查设置实际的外键,这可以提高数据本身的引用完整性。
你总是从最简单的事情开始并坚持下去,直到它被证明是一个性能问题。你所说的#2 被称为“过早的优化”。只有当#1 遇到严重的性能问题时,你才会走这条路。
当您在不同用户之间拆分数据时,您在所有用户之间进行查询的能力会严重降低。对于所有意图,用户将生活在不同的世界中。报告几乎是不可能的。
对于大多数具有大量读取的应用程序,数百万条记录不是问题。像这样需要特别注意的编写繁重的应用程序,或者像 Reddit 或 Twitter 这样的大规模应用程序。由于您没有制作其中之一,因此请首先坚持正确规范化的结构。
“大量用户”可能意味着数万或数十万。在经过适当调整的 MySQL 实例上,这没什么大不了的。如果您需要更大的规模,请启动一些只读辅助服务器以分散负载或查看使用 MySQL 集群。