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

在两个数据库表中进行循环引用是否是一个好习惯

印飞捷
2023-03-14
问题内容

在我们的数据库中,我们有两个具有主键A_id和B_id的表A,B。

在表A中将B_id作为外键,在表B中将A_id作为外键是否被视为一种好习惯。这将使我们在表中具有多对多关系。

另一种选择是拥有仅由两列A_id和B_id组成的第三桥表。

您认为哪一种是好的做法?


问题答案:

考虑以下方案

TableA  TableB
A       1
B       2

如果要对此进行交叉链接,则 无需创建第三个表 就要做的最少工作就是复制两个表之一中的每一行。我怀疑您会发现许多DBA愿意为它们的表建模。

TableA
A, 1  
A, 2   
B, 1
B, 2

TableB
1
2

在这里,第三个桥表确实是您唯一的好选择。



 类似资料:
  • 我想知道,在这种情况下,我们可以使用增强的for而不是常规的for循环 在这种情况下,我可以使用增强的for吗?

  • 问题内容: 在此系统中,我们存储产品,产品图像(产品可能有很多图像)和产品的默认图像。数据库: 如您所见,和,是循环参考。可以吗 问题答案: 不,那不行。表之间的循环引用是混乱的。请参阅这篇(已有十年的历史)文章:SQL By Design:循环参考 一些DBMS可以特别小心地处理这些问题,但是MySQL会遇到问题。 作为您的设计,第一选择是使两个FK之一为可空。这使您能够解决“鸡与蛋”问题(我应

  • 我一直在检查重叠时间。我的日历实现允许循环或环绕时间(因此在结束时间之后有开始时间是可能的) 例如:,, 我在网上找到的一些答案,当结束时间严格地晚于开始时间时起作用。我该怎么解决这个?我正在使用这个StackOverflow解决方案,但它不能完全工作:确定两个日期范围是否重叠 在这张图片中,两个时间范围重叠,但我的植入没有正确地识别它:重叠的时间 这里是调试输出,它应该返回True,但不是:de

  • 本文向大家介绍检查它在C ++中是否是一个好的数组,包括了检查它在C ++中是否是一个好的数组的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个称为正整数的数组。我们必须选择一些数字子集,然后将每个元素乘以一个整数,然后将所有这些数字相加。如果我们可以通过任何可能的子集和被乘数从数组中得到1的和,则该数组将是一个很好的数组。 我们必须检查数组是否正确。 因此,如果输入类似于[12,23,7,

  • 我有两个表:p. test和q。在两个不同的数据库上测试-p和q。 这两个表都有不同的MYSQL连接,并且位于两个不同的服务器上。 我需要做一个自然连接,如下所示:http://www.microshell.com/database/sql/comparing-data-from-2-database-tables/2/ 我怎么可能做到呢?我还使用java PreparedStatement来实际

  • 这是我在这里的第一篇帖子!我是一名CS学生,所以我还在学习。如果你有任何建议或建议(哈哈…!)在构建我的代码或一般实践方面,我非常感谢任何反馈! 我被指派用java重新实现Queue类(https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html)使用循环链表。我的意见附在这个问题上。我在作业中得到了零分——根据评分员的说法,我对链表