Oracle sys テーブルを使用して、2 つのテーブル間のパスを追跡できますか? X テーブルから Y テーブルに移動する可能性はすべてあります。問題は次のとおりです。私は巨大なデータベースで作業しており、2 つのテーブルを結合するためにどのテーブルが不可欠であるかを迅速に知ることが非常に困難です。これはできますか?
最初の必要性:
SQL Developer Data Modeler およびその他のツールの問題は、rev_eng に対してテーブルを選択する必要があることです (したがって、選択するテーブルを既に知っている必要があります) が、私にとっては、これが大きな問題です。私の場合、800 個のテーブルがあり、すべてを選択してパスを追跡することはできません。私の望みは、引数として 2 つのテーブルを送信し、可能なすべてのパスを生成することです。
2番目の必要性:
私はすでに sys.all_constraints をクエリしようとしましたが、私が行った最大のことは、テーブル X に直接接続されているテーブルを検出することです。クエリ:
SELECT C1.TABLE_NAME,C2.TABLE_NAME
FROM ALL_CONSTRAINTS C1, ALL_CONSTRAINTS C2
WHERE C2.CONSTRAINT_NAME = C1.R_CONSTRAINT_NAME
AND UPPER(C1.OWNER) LIKE '**MY_SCHEMA**'
AND C1.CONSTRAINT_TYPE='R'
AND UPPER(C1.TABLE_NAME) LIKE '**X**'
ORDER BY C1.TABLE_NAME
したがって、少なくともクエリでこの結果が得られるように誰かが私を助けることができれば:
表1 | 表2 | テーブル 1 の列に参加 | JoinColumnofTable2
それを行うには、 ALL_CONSTRAINTSに結合する他のテーブルが ALL_CON_COLUMNSであると推測します が、私が見つけた問題は複合 primary_keys です。