Wprowadzenie do rekurencji

Hierarchiczne i rekurencyjne zapytania w SQL Server

Jasmin Ludolf

Content Developer

Czym jest rekurencja?

Rekurencja to użycie procedury, podprogramu, funkcji lub algorytmu, który wywołuje sam siebie jeden lub więcej razy, aż do spełnienia określonego warunku

Ilustracja właściwości rekurencji – wielokrotne wywołania samego siebie.

Hierarchiczne i rekurencyjne zapytania w SQL Server

Przykład rekurencji z życia codziennego

Drzewo genealogiczne – Znajdź wszystkich ojców z ostatnich 5 pokoleń

  • Sprowadź problem do mniejszego problemu tego samego typu
    1. Cały problem: Znajdź wszystkie pięć pokoleń
    2. Mały problem: Znajdź ojca, znajdź ojca ojca, ...
  • Ogranicz liczbę kroków

Właściwość rekurencyjna w Wieży Hanoi.

Hierarchiczne i rekurencyjne zapytania w SQL Server

Fakty o rekurencji

Zalety:

  • Rozwiązywanie problemów w sposób rekurencyjny
  • Łatwa czytelność i śledzenie kodu
  • Rekurencja może być ograniczona warunkiem zakończenia

Wady:

  • Wolniejszy czas wykonania
Hierarchiczne i rekurencyjne zapytania w SQL Server

Przykład rekurencji – suma liczb

Definicja matematyczna

Suma kolejnych liczb jest zdefiniowana rekurencyjnie w następujący sposób:

number = 1 
    for iteration = 1
number = number + (iteration - 1) 
    for iteration > 1

Suma liczb do 5 wynosi:

1+2+3+4+5 = 15
Hierarchiczne i rekurencyjne zapytania w SQL Server

Przykład rekurencji – suma liczb

  • Rekurencja w SQL: Common Table Expression - CTE
WITH calculate_SumOfNumber AS
     ( -- Initial Query
    SELECT 1 AS iteration, 1 AS SumOfNumber

UNION ALL -- Recursive Part SELECT iteration + 1, SumOfNumber + (iteration + 1) FROM calculate_SumOfNumber
WHERE iteration < 6 )
SELECT SumOfNumber FROM calculate_SumOfNumber
Hierarchiczne i rekurencyjne zapytania w SQL Server

Czas na ćwiczenia!

Hierarchiczne i rekurencyjne zapytania w SQL Server

Preparing Video For Download...