Gra*_*ton 5 mysql database-design symfony1
我知道,我知道,在不同的数据库上放置两个相关的表并不是最好的设计实践.但无论如何,假设我必须绝对做到这一点.我必须将以前位于数据库中的两个与外键相关的表拆分为两个数据库,这两个数据库位于两个不同的服务器上,但我仍然希望保持数据库的完整性.做这个的最好方式是什么?
编辑:我正在使用MySQL和Symfony
我想不出任何方法可以用标准 MySQL 来做到这一点。
您可以为MySQL Proxy编写一个插件,用于管理不同服务器上的父表和子表之间的引用完整性:
拦截INSERT并UPDATE针对子表。查询父表中的匹配行。失败INSERT/UPDATE如果在父表中找不到匹配项。
DELETE针对父表进行拦截。查询子表中的依赖行。DELETE如果在子表中找到任何依赖行,则失败。如果约束旨在支持级联行为,请这样做而不是失败。
UPDATE针对父表进行拦截。如果主键值在更新过程中发生更改,请查询子表中找到的相关行。UPDATE如果在子表中找到任何依赖行,则失败。如果约束旨在支持级联行为,请这样做而不是失败。
请注意,您必须在 MySQL 代理插件中保留有关引用完整性约束的信息(或为记录关系的插件编写自定义配置文件)。您不能使用传统FOREIGN KEY语法跨 MySQL 实例声明此类约束。