再帰結合は、リレーショナルデータベースで使用される操作であり、「固定点結合」とも呼ばれます。これは、結合操作を繰り返す複合操作であり、通常は毎回より多くのレコードが蓄積され、繰り返しによって結果が(前回の反復の結果と比較して)変化しなくなるまで続きます。[ 1 ]
例えば、家族関係のデータベースを検索する場合、各人物のレコードに「母親」と「父親」のフィールドがあるとします。この場合、再帰結合は、その人物の既知の祖先をすべて取得する一つの方法です。まず、その人物の直系の両親のレコードを取得し、次に両親の情報を使用して祖父母のレコードを取得する、というように、新しいレコードが見つからなくなるまで繰り返します。
この例では、多くの実際のケースと同様に、繰り返し処理は単一のデータベーステーブルのみに関係するため、より具体的には「再帰的自己結合」となります。
再帰的結合は、インデックス作成、追加キーフィールドの追加、またはその他の手法で最適化しない限り、非常に時間がかかる場合があります[ 2 ] 。グラフ走査は、再帰的結合の方法よりもコストが低くなります[ 3 ] 。
再帰結合は階層型データに特有の性質であり、そのためXMLデータでは深刻な問題となります。XMLでは、ある要素が別の要素を含んでいるかどうかを判断するなどの操作が非常に一般的であり、XMLデータがリレーショナルデータベースに格納されている場合、再帰結合はおそらくこれらの操作を実装する最も分かりやすい方法です。
SQL:1999規格における再帰結合の標準的な定義方法は、再帰共通テーブル式(CTE)を用いることです。再帰CTEをサポートするデータベース管理システムには、Microsoft SQL Server、Oracle、PostgreSQLなどがあります。
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)