在我们的数据库中,我们有两个表A,B,主键为A_id和B_id。
将表A和A_id中的B_id作为外键作为表B中的外键是一种良好的做法。这将允许我们在表中具有多对多关系。
另一种方法是让第三个桥表只包含两列A_id和B_id。
您认为哪一个是好习惯?
答案 0 :(得分:7)
我认为桥表非常适合在两个表之间实现多对多的关系。在表之间有一个循环引用并不是一个好习惯。
答案 1 :(得分:3)
考虑以下方案
TableA TableB
A 1
B 2
如果你想交换它,你至少需要做而不创建第三个表是复制两个表之一的每一行。我怀疑你会发现许多DBA愿意像这样建模他们的桌子。
TableA
A, 1
A, 2
B, 1
B, 2
TableB
1
2
答案 2 :(得分:1)
它取决于A和B之间的关系,无论是一对一,一对多还是多对多。但是,一般情况下,循环引用很糟糕,因为它们增加了维护两个表同步所需的维护量。
答案 3 :(得分:1)
正如wizzardz提到的并且特别是DBMS,我会尽量避免使用循环引用。
它有可能给你带来很多问题。此外,如果其他人将使用该设计,你将不得不确定它的文档,因为他们可能最终绕圈试图解决它。
答案 4 :(得分:0)
您所谓的桥接表是连接依赖关系的规范化,并且它得到了良好理论的支持。您不应该在多个位置记录相同的事实。