在没有内置功能的情况下,如何跨多个数据库保持引用完整性为最佳实践?
或者,将单个数据库分区是否更好?
更新 请参见Kevin的下面示例。 那就是我的情况。我的库存数据库中有引用员工数据库中的employeeId的表。
这些数据库目前在不同位置维护(不同服务器)。
在没有内置功能的情况下,如何跨多个数据库保持引用完整性为最佳实践?
或者,将单个数据库分区是否更好?
更新 请参见Kevin的下面示例。 那就是我的情况。我的库存数据库中有引用员工数据库中的employeeId的表。
这些数据库目前在不同位置维护(不同服务器)。
使用2k05/2k08时,单个数据库分区肯定更好。这样做可以享受存储多个数据库数据的所有好处,同时还能使用单个数据库的函数,例如外键。
话虽如此,您不应该将所有内容都放在一个数据库中。当组表逻辑上并不匹配时,我通常会将它们分成自己的数据库。例如,我不会将下订单系统数据库和员工管理数据库合并在一起。我想可能有理由这样做,但我相信您明白在适当的地方逻辑上将数据存储分开的重要性。
您需要考虑的是这两个数据库之间的互动程度。如果有很多字段需要跨数据库连接,则我认为这可能是一个好主意。如果只有一两个字段链接到员工表,则可能没有必要这样做。如果必须进行少量连接,则另一个选择是将必要的表复制到库存数据库中,特别是如果只有一个表且现有的两个数据库非常大且相当复杂。
最好将其分区到单个数据库中。如果必须这样做,触发器可以帮助(呕吐)。难道你不能使用模式来对数据库进行分区吗(AdventureWorks示例数据库就是一个例子)?
我想这取决于你的需求,但我可能会倾向于使用单个数据库。如果要跨多个数据库进行操作,则需要分布式事务支持。