0

我想知道是否有办法做一个多数据库系统

例如,我有许多客户注册到我的系统,我希望在登录时选择它的数据库,因为我想用自己的数据库划分每个客户。这个对吗?因为我想分离每个客户的信息。好吧,我认为我必须在 cakephp 的数据库文件中进行多重配置,但我不知道这样做很热:当客户端制作 lgin(使用默认数据库)时,当他们登录时,我想在里面取一个变量包含其数据库名称并使其成为活动数据库的表。

这可能吗?我不能为每个客户端声明数据库配置。

任何人都可以帮助我吗?

谢谢

这是我在 database.php 中的实际默认数据库

public $default = array (
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'login',
        'password' => 'password_',
        'database' => 'default_db',
        'prefix' => ''
    );

我想分离数据库,因为我想创建一些页面,每个客户都可以在其中编辑某些表的字段,例如:如果他们想添加到表项目字段notes,他们可以,另一个客户不想要这个字段,但是很多和好多其它的。我想创建一个系统来编辑一些表格。
为此,有两种解决方案:

- 在登录基础上登录时使用单独的数据库
- 每次用户注册时使用唯一的数据库广告 我会自动创建它的表,例如没有表project,但project_{user_id}例如,每个用户都可以拥有它的表。

哪种方法更好?

谢谢

4

1 回答 1

1

我想用自己的数据库划分每个客户。这个对吗?我认为使用 CakePHP 实现这个任务不是一个好主意,但是有可能,看看CakePHP DataSources。简单来说,您的解决方案应该是这样的:

  1. 设置主数据库,包含一些应用程序指定的数据。
  2. 授权用户,使用 MySQL 内置技术。
  3. 使用具有授权用户访问数据的另一个数据源。

您必须注意授予权限。

哪种方法更好?

这取决于用户数量。如果是两个或三个,你的方法没有区别。但如果是 100 或 1000,则很难管理您的表。记住奥克曼的话:实体的数量不得超过必要。使用 MySQL 方式,数据库必须存储表,用户可以访问数据库。不要打破这个规则。

另请查看 PHPMyAdmin,也许根据您的需要更改它会更好,它是在 GNU GPL2 许可下获得许可的。

于 2013-09-29T21:15:02.910 回答