在数据库中联接所有连接的关系表的好方法是什么?

时间:2018-12-23 08:00:40

标签: python sql-server join graph

我尝试了以下方法

  • 拓扑排序以查找表依赖项 以编程方式创建联接查询
  • BFS以可以形成联接查询的方式对表进行排序

但是在这两种方法中,我都陷入了一种极端情况,即其中一个表在连接其依赖表之前就被连接了。

在下面的模式依赖图中,

Sample Schema

每个箭头都指向一个表,该表具有对给定表的外键引用,例如,表羊有2个外键,一个用于Pet,一个用于牲畜。

我想将所有表合并到非规范化的单个视图中。

我的上述两种方法在这种情况下会失败,因为使用拓扑排序,我的脚本将在尝试加入Table Chicken之前尝试将Table Bird与table Animal联接,因此会导致错误。 / p>

使用BFS方法,我可以轻松地以正确的顺序遍历图形的前半部分,但是当我需要遍历后半部分(表Bird和Eagle)时会出现问题,之前没有简单的方法来选择Bird表鹰表。

我计划尝试的一种方法是使上述架构为无向的,在这种情况下,我将能够按要求的顺序遍历。但我认为在某些极端情况下,这种方法也可能会失败。

有没有已知的方法可以做到这一点?否则,应该是一个好的方法。

我正在使用MSSQL,并且当前的脚本在python中。

0 个答案:

没有答案