2011-06-01 49 views
1

我的程序旨在用于多个项目(客户端)使用。我工作w/PHP和Mysql。为每个用户组分配数据库?

例如,客户端程序的实现将包括所有需要的表以及该客户端的用户列表。

该程序的每个实现(对于单独的和完全不同的客户端)将使用相同的一组表但是分开。例如,客户端A将有一个用户列表TABLE,而客户端B将有一个用户列表TABLE,但它们不是同一个表。

我会为每个实现有一个单独的数据库(并因此,为每个新的数据库启动一组新表)?

我需要了解什么我在编程阶段还处于早期阶段,但是希望为下一步做好准备。仍在为一个数据库中的表格编程,但我不想在这条路上有任何意外。 我目前托管在一家公共托管公司。

+1

另请参见[为每个客户端使用单个数据库有什么优势?](http://stackoverflow.com/questions/13348/what-are-the-advantages-of-using-a-single-database - 用于-每个客户端)。 – 2011-07-06 06:34:25

回答

1

您可以创建一个主表,它将存储每个客户端和客户端登录信用的数据库名称。 一旦他们登录,根据他们的客户端ID,您需要选择数据库。 对于新的客户端注册,您需要使用其客户端名称前缀创建数据库副本。

+0

这是这种实现的典型方式吗? – 2011-06-01 01:48:21

+0

这取决于。通常情况下,我们将记录与一个额外的列一起存储为ClientID,以便与每个表中的其他客户端区分开来。但问题是记录增加时,效率会受到影响。 – AjayR 2011-06-01 02:02:39

0

绝对要用多表。如果您需要调试/更新/删除单个客户端,它将为您节省大量时间。另外,如果客户想要自定义修补程序并决定创建它,则可能会损害其他客户的数据。此外,您可能需要不同的字符集整理。

+0

我在每个数据库中都有多个表。但我的问题是,每个客户端都需要同一组表。但他们的数据不能混合在一张表中。例如。我认为客户公司A的用户不应该出现在同一个用户列表主表中。我应该如何实现这个 – 2011-06-01 00:45:41

+0

我想到了不同的数据库,而不是表格。如果你想在一个数据库中使用相同的表格(和你的问题一样),我会在表格前加上一些前缀。像'client1_permissions','client1_posts','client2_permissions','client2_posts'等等。这将创建一个很好的概述和非常清晰的视图,但我不想想象如果每个客户端有5个表,并且您在某个时间点有1000个客户端(5000个表)。 – RRStoyanov 2011-06-01 00:52:32

+0

我也考虑过多个数据库。我想我们正在谈论同样的事情 – 2011-06-01 01:50:23

相关问题