Рекурсивное соединение - Википедия - Recursive join

В рекурсивное соединение это операция, используемая в реляционные базы данных, также иногда называемое «соединением с фиксированной точкой». Это сложная операция, которая включает повторение присоединиться операция, обычно накапливающая больше записей каждый раз, пока повторение не изменит результаты (по сравнению с результатами предыдущей итерации).

Например, если необходимо выполнить поиск в базе данных о семейных отношениях, и запись для каждого человека имеет поля «мать» и «отец», рекурсивное соединение будет одним из способов получить всех известных предков человека: сначала прямые прямые записи родителей будут извлечены, затем информация родителей будет использоваться для извлечения записей бабушек и дедушек и так далее, пока не будут обнаружены новые записи.

В этом примере, как и во многих реальных случаях, повторение включает только одну таблицу базы данных, и поэтому более конкретно является «рекурсивным самосоединением».

Рекурсивные объединения могут занимать очень много времени, если они не оптимизированы с помощью индексации, добавления дополнительных ключевых полей или других методов.

Рекурсивные соединения очень характерны для иерархических данных и поэтому становятся серьезной проблемой для XML данные. В XML чрезвычайно распространены такие операции, как определение того, содержит ли один элемент другой, и рекурсивное соединение, возможно, является наиболее очевидным способом их реализации, когда данные XML хранятся в реляционной базе данных.

Стандартный способ определения рекурсивных объединений в SQL: 1999 стандарт через рекурсивный общие табличные выражения. Системы управления базами данных, поддерживающие рекурсивные CTE, включают: Microsoft SQL Server, Oracle, PostgreSQL и другие.

Смотрите также