Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base...

14
Jennifer Widom Recursion in SQL Nonlinear and Mutual Recursion

Transcript of Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base...

Page 1: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Recursion in SQL

Nonlinear and Mutual Recursion

Page 2: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

SQL With Recursive Statement

With Recursive R1 As (query-1), R2 As (query-2), ... Rn As (query-n)

<query involving R1,…,Rn (and other tables)>

Nonlinear & Mutual Recursion

Page 3: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

SQL With Recursive Statement

With Recursive R As ( base query Union recursive query )

<query involving R (and other tables)>

Nonlinear & Mutual Recursion

Page 4: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Linear Recursion

With Recursive R As ( base query Union recursive query )

<query involving R (and other tables)>

Nonlinear & Mutual Recursion

Page 5: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Example: Ancestors

ParentOf(parent,child) Find all of Mary’s ancestors

Nonlinear & Mutual Recursion

Page 6: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Example: Ancestors

ParentOf(parent,child) Find all of Mary’s ancestors

Nonlinear & Mutual Recursion

Page 7: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Example: Ancestors

ParentOf(parent,child) Find all of Mary’s ancestors

Nonlinear (versus linear) + Query looks cleaner

+ Converges faster

– Harder to implement

SQL standard only requires linear

Nonlinear & Mutual Recursion

Page 8: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

SQL With Recursive Statement

With Recursive R1 As (query-1), R2 As (query-2), ... Rn As (query-n)

<query involving R1,…,Rn (and other tables)>

Nonlinear & Mutual Recursion

Page 9: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Mutual Recursion

With Recursive R1 As (query-1), R2 As (query-2), ... Rn As (query-n)

<query involving R1,…,Rn (and other tables)>

Nonlinear & Mutual Recursion

Page 10: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Example: Hubs & Authorities

Link(src,dest)

HubStart(node) AuthStart(node)

Nonlinear & Mutual Recursion

Page 11: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Example: Hubs & Authorities

Link(src,dest)

HubStart(node) AuthStart(node)

Nonlinear & Mutual Recursion

Page 12: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Nonlinear & Mutual Recursion

Example: Hubs & Authorities

Page 13: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

Example: Recursion with Aggregation

P(x)

Nonlinear & Mutual Recursion

Page 14: Recursion in SQL - | Stanford Lagunita · Jennifer Widom Linear Recursion With Recursive R As (base query Union recursivequery)  Nonlinear

Jennifer Widom

SQL With Recursive Statement

Extends expressiveness of SQL Basic functionality: linear recursion

Extended functionality: nonlinear recursion, mutual recursion

Disallowed: recursive subqueries (negative), aggregation

With Recursive R1 As (query-1), R2 As (query-2), ... Rn As (query-n)

<query involving R1,…,Rn (and other tables)>

Nonlinear & Mutual Recursion