记录下我自2011年12月30日开始学习名校公开课的笔记与感想。进一步的说明见右:

DB: Week 8: Recursion in SQL

视频:Basic recursive WITH statement - introduction (12min); demo (30min); Nonlinear and mutual recursion (21min) (1.5x speed)

视频笔记:

Basic SQL Recursion

SQL is not a "Turing complete" language

Simple, convenient, declarative

Expressive enough for most database queries

But basic SQL can't Express unbounded computations

Example 1: Ancestors

ParentOf (parent, child)

Find Mary's ancestors

Example 2: Company hierarchy

Find total salary cost of project 'X'

Example 3. Airline flights

Find cheapest way to fly from A to B

SQL WITH Statement

With R1 As (query-1)

        R2 As (query-2),

        ...

        Rn As (query-n)

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

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)>

SQL With Recursive Statement

With Recursive

        R As (base query 

                 Union

        recursive query)

<query involving R (and other tables)>

Union eliminate dupilicates

Linear Recursion (one reference to R)

Nonlinear 

pros: query looks cleaner, converges faster

cons: harder to implement

SQL standard only requires linear

Murual recursion(refer to other relations)

Example: Hubs & Authorities

Link (src,dest)

HubStart (node) AuthStart (node)

Extends expresiveness of SQL

Basic funcitionality: linear recursion

Extended functionality: nonlinear recursion, mutual recursion

Disallowed: recursive subqueries (negative), aggregation

评论