SQL Server 2008 跨数据库表链接(关系)

3
我有一个问题,说实话我不认为有一个答案,但我还是会试一下。 我有两个数据库[A]->公司和[B]->产品。这两个数据库都有一个Country表,然后链接到每个单独的数据库中的其他表。问题在于两个Country表之间的数据是完全重复的。因此,我必须在每个数据库中复制一些关系,并且在此基础上进行维护非常困难... 因此,我很好奇是否有一种方法可以在表之间创建跨数据库关系,以便我只能拥有一个Country+Helper表集合来管理两个数据库?谢谢!
5个回答

4

如果要强制执行外键约束,就不能跨多个数据库进行物理关联。

您仍然可以在一个数据库中拥有核心查找/辅助表,但您只需要在其他数据库中的表上有一个推断的FK约束-这是一个逻辑假设,而不是物理约束。


2

你可能需要考虑拥有一个交易数据库和两个数据持久化数据库?这是很多工作,但似乎是最好的可行选项——每个写操作都会触发对“读”数据库的写入?我不确定我完全理解问题,也许?


我在考虑类似的方案。我在思考一个第三个数据库[C],它将是只读的,[A]和[B]之间仍会有“虚假”关系,但是这些关系仅基于[C]中的主键。我只需要在代码中进行连接操作。虽然不够优雅,但确实减少了两个数据库的复杂性。 - Gup3rSuR4c
嗯,那是一种方法。如果你对分片概念和RAID存储进行一些研究,你可能会得到一些想法。我认为你想要将事务复杂性降低到一个数据库,然后将结果分发到每个存储数据库。大致就是这样。 - Bryan A

0

将数据保留在第一个数据库表中,并在第二个数据库中创建一个视图。


0

你不能使用外键约束来实现这个。你可以通过触发器来强制关系,但这有点麻烦。


0

是的。将Country表保留在第一个数据库中,并创建一个视图,将database1的country表连接到database2。没有实际数据,只有视图,所以不需要担心。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接