当前位置: 首页 > 面试题库 >

跨多个数据库保持引用完整性

符棋
2023-03-14
问题内容

在多个数据库之间保持引用完整性的最佳实践是什么?因为没有内置功能

还是对单个数据库进行分区更好?

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

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


问题答案:

使用2k05 / 2k08,最好对单个数据库进行分区。您拥有将数据存储在多个数据库中的所有好处,同时能够使用单个数据库的功能(例如外键)。

话虽这么说,您不应该将所有内容都保存在一个数据库中。逻辑上,当组表不适合在一起时,我通常将它们分成自己的数据库。例如,我不必将下订单系统数据库和员工管理数据库组合在一起。我想可能有这样做的理由,但是我相信您可以理解在适当的地方将逻辑上的数据存储区分开。

您应该看的是两个数据库之间有多少相互作用。如果有很多字段可以跨数据库联接,那么我想这可能是个好主意。如果可能是链接到employee表的一两个字段,则可能不值得这样做。您的另一种选择是,如果联接的数量很小,则是将必要的表复制到清单数据库中,尤其是当它是一个表并且两个现有数据库很大且相当复杂时。



 类似资料:
  • 我正在尝试创建一个数据库,然后在其中创建一个表。我使用docker-compose.yml在一个sql文件中编写了查询,以便与postgres图像一起使用 当我尝试使用docker compose build,然后使用docker compose up时,我得到一个错误 “psql:/docker entrypoint initdb.d/init.sql:18:错误:未实现跨数据库引用:“real

  • 问题内容: 我建议使用触发器来检查跨表完整性约束,以回答此问题。在评论中建议它可能会引起问题: 进行跨行检查的触发器在大多数数据库上很少起作用…因为它们无法从其他事务中读取未提交的行 不过,我没有找到任何支持该说法的消息来源。官方 文档未提及任何内容。我发现的其他问题在本文的SO上进行了介绍它主要批评潜在的隐藏复杂性,因为一眼就看不到触发器。但是,即使是评分最高的答案也承认其用于完整性问题。 所以

  • 我在中使用Sleuth。示例: 我希望日志具有与日志相同的跟踪id。然而,它没有。因此我想知道该怎么办?谢了! 附言。我无法控制如何管理线程(因为它来自Pushy),所以无法使用LazyTraceExecutor之类的东西。

  • 问题内容: 我开发了一个在线预订系统。为了简化起见,假设用户可以预订多个项目,而每个项目只能预订一次。物品首先添加到购物车中。 应用使用/ 数据库。根据MySql文档,默认隔离级别为。 这是到目前为止我提出的结帐程序: 开始交易 在购物车中选择项目 (带锁)在此步骤中, 从中获取记录和表格。 检查其他人是否还没有预定商品 基本上检查是否。在实际的应用程序中它更加复杂,因此我将其作为单独的步骤放在这

  • 问题内容: 示例数据: 还有一个示例查询: 首先返回击中的猫,然后返回狗,这就是我想要的。 但是 当您查询时,猫和狗的相关性得分相同。我希望能够考虑到该单词的前缀(并且可能在该字段中添加了其他几个单词),然后运行。 因此,如果我搜索: 要么 我应该得到cat / ID 1,但没有。 我发现使用可以实现多词短语,但不能实现多不完整的短语。并获得不完整的短语,但不能获得多个不完整的短语… 筛选文档确实

  • 问题内容: 我们计划使用触发器和需要审计的每个表的单独历史表在数据库中引入简单的审计跟踪。 例如考虑表StudentScore,它只有很少的外键(例如StudentID,CourseID)将其链接到相应的父表(Student&Course)。 如果StudentScore需要审核,我们计划创建审核表StudentScoreHistory- 如果修改了StudentScore中的任何行,我们会将旧行