这可能是一个更概念性的问题,但是我无法找到一个简单的解决方案。
场景:。二店(说“M”和“S” M是主,并确定在数据库中的物品每次维护独立的股票我有M的文章表复制到S,和我分开的股票进入一个单独的表具有公共参考。
现在,当新的物品M的加入,他们处为到达过,但他们不会有S中的股票表中的条目。 类似的问题,删除文章。 可能的解决方案:
难道没有解决这个更优雅的方式?
注:要澄清,让我解释一下另一种方式:
中号已经复制了“文章”表S(使用MySQL的复制机制。这工作得很好。
的问题是,M和S有“库存”表,其是本地的每个M和S.是什么时,例如,一个新的产品被添加(在M)的一般程序的“文章”表中,并转移到S.现在有不有S中的股票表中对应的条目新条目。
我猜这是不是一个不寻常的情况 - 这将是解决这一正常的程序?
当然,除非你有位于两个不同的数据库服务器的两个数据库,你为什么不干脆创建一个表articles
和一张桌子stock
引用它。 您可以添加店 (理想情况下shop_id
),作为后者的一个额外的列。 类似的东西:
CREATE TABLE articles(id int primary key not null,
name char(20) not null);
CREATE TABLE stock(article_id int not null,
shop ENUM('M', 'S') not null,
qty int not null,
FOREIGN KEY(article_id) REFERENCES articles(id),
UNIQUE(article_id, shop));
请参阅http://sqlfiddle.com/#!2/e6eca/5一个活生生的例子。
如果你真的需要限制的项目在创建表articles
到店 ,可以通过为DB(* user_m *,* user_s *),并使用创建不同的用户实现中号 REVOKE
和/或GRANT
来设置不同的访问权限。
编辑:如果两个服务器都在遥远的网站,你可能可以使用MySQL复制能力,以保持一个或多个表中同步在两个站点之间。 这就需要在两个站点之间的网络访问。 至于我自己的,原因很明显,我会考虑使用在两个站点之间的安全隧道。 最后,你还可能有在DB-一级建立权限,只允许插入从一个网站,而不是其他。
作为一个“可怜的人”的解决方案,你终于有可能要备份定期从一台服务器所需的表更新第二台服务器上的表。 的mysqldump +的cronjob的组合将是很好的起点。
至于我自己,我想虽然推到MySQL的复制 。 该设置可能更为复杂。 但是,这将更好地履行好,规模,具有更低的延迟。