MySQL - 每个客户端的一个表或包含所有客户端的单个表

时间:2015-08-04 11:45:26

标签: php mysql database database-design

我正在开始一个有多个客户的项目。在数据库中,每个客户端可能有数十万行。

而不是将所有客户端都放在一个表中,是否有意义拆分客户端以使每个客户端都有自己的表?对我而言,这是有道理的,因为每次查询客户端时,您只会查找包含其数据的表。

1 个答案:

答案 0 :(得分:1)

评论太长了。

通常,最好使用包含共享表中所有数据的单个数据库。这样做有很多原因:

  • 您只有一个系统需要维护和更新。
  • 您可以执行跨客户端的查询(“昨天有多少客户端修改了数据?”)
  • 对于较大的表与许多小表,SQL更为理想。

有一些很好的理由可以解释为什么要在不同的表,甚至不同的数据库或不同的服务器之间拆分客户端数据。这些考虑因素包括:

  • 需要物理分离数据的系统要求。
  • 不同客户的不同发展路径。
  • 难以实现安全性要求(在行级别更难实现安全性)。

在这种情况下,我会选择不同的数据库,而不只是单个数据库中的不同表。

除非您开始拥有数千个客户端,否则每个客户端的数十万行不是很大的SQL标准。