在多个数据库之间保持引用完整性

13

在没有内置功能的情况下,如何跨多个数据库保持引用完整性为最佳实践?

或者,将单个数据库分区是否更好?

更新 请参见Kevin的下面示例。 那就是我的情况。我的库存数据库中有引用员工数据库中的employeeId的表。

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

5个回答

5

使用2k05/2k08时,单个数据库分区肯定更好。这样做可以享受存储多个数据库数据的所有好处,同时还能使用单个数据库的函数,例如外键。

话虽如此,您不应该将所有内容都放在一个数据库中。当组表逻辑上并不匹配时,我通常会将它们分成自己的数据库。例如,我不会将下订单系统数据库和员工管理数据库合并在一起。我想可能有理由这样做,但我相信您明白在适当的地方逻辑上将数据存储分开的重要性。

您需要考虑的是这两个数据库之间的互动程度。如果有很多字段需要跨数据库连接,则我认为这可能是一个好主意。如果只有一两个字段链接到员工表,则可能没有必要这样做。如果必须进行少量连接,则另一个选择是将必要的表复制到库存数据库中,特别是如果只有一个表且现有的两个数据库非常大且相当复杂。


这是我的情况。我的库存数据库有引用员工数据库中的employeeId的表。这些数据库目前在不同位置(不同服务器)维护。 - jarohl

1

最好将其分区到单个数据库中。如果必须这样做,触发器可以帮助(呕吐)。难道你不能使用模式来对数据库进行分区吗(AdventureWorks示例数据库就是一个例子)?


0

我想这取决于你的需求,但我可能会倾向于使用单个数据库。如果要跨多个数据库进行操作,则需要分布式事务支持。


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


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