在多个数据库之间保持参照完整性

时间:2009-06-06 20:32:43

标签: sql sql-server database-design

在多个数据库中保持参照完整性的最佳做法是什么?因为没有内置函数

或者对单个数据库进行分区是否更好?

更新 请参阅下面的凯文的例子。 那是我的情况。我的库存数据库具有引用employees数据库中employeeId的表。

这些数据库目前维护在不同的位置(不同的服务器)

5 个答案:

答案 0 :(得分:5)

对于2k05 / 2k08,分区单个数据库肯定更好。您可以将数据存储在多个数据库中,同时还可以使用单个数据库的功能(如外键)。

话虽如此,您不应该将所有内容都保存在一个数据库中。逻辑上,当组表不适合时,我通常将它们分成它们自己的数据库。例如,我不一定将订单系统数据库和员工管理数据库放在一起。我想可能有理由这样做,但我确信你在适当的时候在逻辑上分离数据存储。

您应该注意的是两个数据库的交互程度。如果有很多字段可以跨数据库连接,那么我会说这可能是一个好主意。如果它可能是一个或两个链接到employee表的字段,那么它可能不值得做。另一个选择是,如果连接数很少,则将必要的表复制到清单数据库中,特别是如果它是一个表,并且两个现有数据库很大且相当复杂。

答案 1 :(得分:1)

绝对更好地分离到单个数据库。如果你需要这样做,触发器会有所帮助(哎呀)。您不能仅使用模式对数据库进行分区(AdventureWorks示例数据库就是一个例子)吗?

答案 2 :(得分:0)

我想这取决于您的需求,但我可能倾向于单个数据库。要在multiplbe数据库中执行此操作,您需要分布式事务支持。

答案 3 :(得分:0)

您可以使用触发器来完成工作但.... 我担心你会花费大量的时间来确保一切正常。具有一些分区表的单个数据库可能更好。 您是否真的需要多个数据库或只有一个数据库,其中多个文件组分布在物理设备上?您也可以考虑这个选项。 马捷

答案 4 :(得分:0)