日期:2014-05-17  浏览次数:21056 次

如何将Oracle数据库中的表按照依赖关系排序,应该查找哪张表?
1.假设数据库中有a,b,c,d四张表,其中b依赖于a,c依赖于a,d依赖于b,我想在数据库中首先或得这些依赖关系
  b->a
  c->a
  d->b
  其中->为依赖的意思
2.通过以上的依赖关系,我想将这些表进行排序即a,b,c,d或者a,c,b,d其中b,c两者的先后顺序可以不管,但是d一定在b,c的后面,a一定在b,c的前面。


请有相关经验的朋友帮忙给个解决的思路。

------解决方案--------------------
SQL code
/********************************
查询表之间的主外键关系
********************************/
Select b.table_name 主键表名,
           b.column_name 主键列名,
           a.table_name 外键表名,
           a.column_name 外键列名
From (Select a.constraint_name,
                       b.table_name,
                       b.column_name,
                       a.r_constraint_name
          From user_constraints a, user_cons_columns b
         Where a.constraint_type = 'R'
           And a.constraint_name = b.constraint_name) a,
       (Select Distinct a.r_constraint_name, b.table_name, b.column_name
          From user_constraints a, user_cons_columns b
         Where a.constraint_type = 'R'
           And a.r_constraint_name = b.constraint_name) b
Where a.r_constraint_name = b.r_constraint_name