0

ここに画像の説明を入力

上記は、私のデータベーステーブル構造がどのように見えるかです。B は A を指し、C は A を指し、D は B を指します。現在、これらのテーブルのすべての制約を削除し、Java アプリケーションで評価していくつかのレコードを削除するオフライン ジョブを実行しています。たとえば、A WHERE id > 20 から削除すると、一連の選択に変換されます。

  • SELECT B.ID, A.ID FROM B,A WHERE B.FKEY = A.ID
  • SELECT C.ID, A.ID FROM C,A WHERE C.FKEY = A.ID
  • D、B、A から D.ID、A.ID を選択 WHERE B.FKEY = A.ID AND D.FKEY = B.ID
  • ... すぐ..
  • .. 最後に.. A、B、D、F、H から H.ID、A.ID を選択 WHERE B.FKEY = A.ID AND D.FKEY = B.ID AND F.FKEY = D.ID AND H. FKEY = F.ID UNION SELECT H.ID、A.ID FROM A,C,E,G,H WHERE C.FKEY = A.ID AND E.FKEY = C.ID AND G.FKEY = E.ID AND H .FKEY = G.ID

そのデータを取得し、コードで A.ID > 20 を検証してから、不要なものを削除することは、私のアプリケーションが削除を実行する方法です (少しクレイジーに聞こえるかもしれませんが、これが動作するはずの方法です)。

ここでの質問はこれです...どうすればこれをジェネリックにできますか? 私の課題は、複数の継承を持つ (または ER グラフでサイクルを形成すると言う) "H" のようなテーブルを特定することです。グラフ理論を調べてみましたが、かなり混乱しています。情報が多すぎて処理できません。

要するに、ER グラフのサイクルを特定し、そのようなテーブルの UNION クエリを作成したいと考えています。

4

0 に答える 0