在数据库之间共享数据

时间:2014-03-03 16:03:20

标签: sql database-design relational-database

我正在研究开发一个应用程序,该应用程序将被几个(5-8个)不同的机构使用,这些机构彼此相关但作为独立业务运营。虽然每个机构都使用相同的应用程序,但每个机构都会在后端拥有自己独立的数据库。该业务已经运营多年,需要将历史数据迁移到新数据库。

对于几乎所有的意图和目的,这些机构的数据是无关的。但是,我希望能够在不同数据库中的客户端之间建立链接,例如,确保在一个机构中有坏账的客户不会去另一个没有任何警告的帐户。

我能想到的唯一解决方案是使用Person表创建一个比使用应用程序更加简单和简单的中央数据库。在任何离散数据库中创建新客户端时,将根据名称和邮政编码对此中央表执行查找,以建议可能的匹配。

如果用户看到一个似乎与他们正在设置的客户端匹配的现有“人”,他们会从列表中选择匹配的记录,并将中央表中的唯一人员ID添加到客户端的PersonID列中机构自己的数据库表。如果未找到匹配项,则首先在中央Person表中创建一条新记录,并使用Stored Procedure返回新的Person ID,该ID将再次添加到INSTIT数据库的Client表中的PersonID列。

实际上,每个数据库中的每个Client表都有一个Foreign Key字段,但实际上并没有在数据库中定义,因为带有主键的表(Person表)位于不同的数据库中。

这听起来像是一个合理的解决方案吗?有谁能建议更好的方法?我可以看到这种方法存在问题,例如“如果客户的详细信息在其中一个机构数据库中更新,您会怎么做 - 您是否填充了更改后的内容?”但我想不出更好的选择。

1 个答案:

答案 0 :(得分:0)

更好的方法是为整个应用程序创建一个可以复制的数据库,使其处于同步状态(主 - 主复制)。阅读here

就数据库设计而言,更容易建立multi-tenant架构,其中每个机构使用相同的数据库,但由institution_id区分。通过这种方式,您可以在组织内确保用户唯一性,同时管理架构更改更新等。