MySQL工作台交织的模式,需要单独开发

MySQL工作台交织的模式,需要单独开发,mysql,database,mysql-workbench,Mysql,Database,Mysql Workbench,我正在开发一个我的客户将要使用的小型CMS。这些客户机中的每一个都将在核心CMS SQL数据/表结构的基础上构建自定义SQL表,以支持各自的需求 现在,在使用MySQL workbench时,我想: 1) 在MySQL工作台上为每个客户机保留单独的模式 2) 能够在所有客户机架构之间轻松分发核心SQL更改。(无需分发特定于客户端的更改!) 3) 保持核心表和特定于客户端的表之间的关系,因为它们稍后将存在于同一模式中 -> I.e. my core SQL will have users a

我正在开发一个我的客户将要使用的小型CMS。这些客户机中的每一个都将在核心CMS SQL数据/表结构的基础上构建自定义SQL表,以支持各自的需求

现在,在使用MySQL workbench时,我想:

1) 在MySQL工作台上为每个客户机保留单独的模式

2) 能够在所有客户机架构之间轻松分发核心SQL更改。(无需分发特定于客户端的更改!)

3) 保持核心表和特定于客户端的表之间的关系,因为它们稍后将存在于同一模式中

-> I.e. my core SQL will have users and one of my (just one, not the others) client's database also needs to have users. Thus it would be convienient to have the client's users in the core SQL-s users table.

-> All media files should be located in the core SQL "media" table.

有人能给我提供一些关于如何管理多个数据库的面包屑吗?在这些数据库中,核心表是相同的,但都有一些部分构建在它们之上(也就是说,核心表和特定于客户端的表之间存在逻辑关系)?甚至有一个很好的解决方案吗?

好吧,跨模式查询非常简单,因此将核心表保留在核心模式中,并将客户机表保留在各自的模式中。然后,您可以通过以下方式跨模式选择:

SELECT u.* FROM core.users u;
SELECT c.* FROM client.table c:
SELECT m.*, t.* FROM core.media m INNER JOIN client.table t ON m.table_id = t.id;

等等。

如果你想知道这一点,请自己测试一下,并对其进行基准测试。此外,对绩效的担忧被高估了。你不是在为Facebook或Twitter编码。如果出现性能问题,请a)升级硬件b)优化查询和模式c)使用群集实现负载平衡。