Top Banner
Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire
54

Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Dec 18, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Relational Algebra – Basis for Relational Query

LanguagesBased on presentation by Juliana Freire

Page 2: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Formal relational query languages

Page 3: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Is this the Algebra you know?Algebra -> operators and atomic operandsExpressions -> applying operators to atomic operands and/or other

expressions

Algebra of arithmetic: operands are variables and constants, and operators are the usual arithmetic operators

E.g., (x+y)*2 or ((x+7)/(y-3)) + x

Relational algebra: operands are variables that stand for relations and relations (sets of tuples), and operations include union, intersection, selection, projection, Cartesian product, etc

– E.g., (π c-ownerChecking-account) ∩ (π s-ownerSavings-account)

Page 4: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

What is a query?A query is applied to relation instances, and the result ofa query is also a relation instance. (view, query)– Schemas of input and output fixed, but instances not. • Operators refer to relation attributes by position or name:– E.g., Account(number, owner, balance, type)

– Positional notation easier for formal definitions, named-fieldnotation more readable.– Both used in SQL

Page 5: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Relational Algebra OperationsThe usual set operations: union, intersection, difference

•Operations that remove parts of relations: selection, projection

•Operations that combine tuples from two relations: Cartesian product, join

•Since each operation returns a relation, operations can be composed!

Page 6: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Removing Parts of Relations

• Selection – rows

• Projection - columns

Page 7: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Selection: Example

Page 8: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Another selection

Page 9: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Example of Projection

Page 10: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Projection removes duplicates

Page 11: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Set Operations

• Union

• Intersection

• Difference

Page 12: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

What happens when sets unite?

Page 13: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Union Operation – Example• Relations r, s:

r s:

A B

1

2

1

A B

2

3

rs

A B

1

2

1

3

Page 14: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Union Example

Page 15: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Union Compatibility

Page 16: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Intersection

Page 17: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Set Difference Operation – Example

• Relations r, s:

r – s:

A B

1

2

1

A B

2

3

rs

A B

1

1

Page 18: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Difference

Page 19: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Another way to show intersection?

Page 20: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Summary so far:

• E1 U E2 : union

• E1 - E2 : difference

• E1 x E2 : cartesian product

c(E1) : select rows, c = condition (book has p for predicate)

• IIs(E1) : project columns : s =selected columns

x(c1,c2) (E1) : rename, x is new name of E1, c1 is new name of

column

Page 21: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Combining Tuples of Two Relations

• Cross product (Cartesian product)

• Joins

Page 22: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Cartesian-Product Operation – Example

Relations r, s:

r x s:

A B

1

2

A B

11112222

C D

1010201010102010

E

aabbaabb

C D

10102010

E

aabbr

s

Page 23: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Cross Product Example

Page 24: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Cross Product

Renaming operator:

Rename whole relation: Teacher X secondteacher(Teacher)

Teacher.t-num, Teacher.t-name, secondteacher.t-num, secondteacher.t-name

OR rename attribute before combining:

Teacher X secondteacher(t-num2, t-name2)(Teacher)

t-num, t-name, t-num2, t-name2

OR rename after combining

c(t-num1, t-name1, t-num2, t-name2)(Teacher X Teacher)

t-num1, t-name1, t-num2, t-name2

• How to resolve????

Page 25: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Join: Example

Page 26: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Join : Example

Page 27: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Condition Join

Page 28: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Equi and Natural Join

Page 29: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Divide operator

Page 30: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Divide Operation

Page 31: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Divide Definition

Page 32: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

When to divide?

Page 33: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Division Example

Page 34: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Dividing without division sign

Page 35: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Working out an example

Page 36: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Assignment operation

Page 37: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Why would we use Relational Algebra?????

Page 38: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Equivalencies help

Page 39: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

ER vs RA

• Both ER and the Relational Model can be used to model the structure of a database.

• Why is it the case that there are only Relational Databases and no ER databases?

Page 40: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

RA vs Full Programming Language

• Relational Algebra is not Turing complete. There are operations that cannot be expressed in relational algebra.

• What is the advantage of using this language to query a database?

Page 41: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Summary of Operators updated

• Summary so far:• E1 U E2 : union• E1 - E2 : difference• E1 x E2 : cartesian product c(E1) : select rows, c = condition (book has p for predicate)

• IIs(E1) : project columns : s =selected columns

x(c1,c2) (E1) : rename, x is new name of E1, c1 is new name of column

• E1 E2 : division

• E1 E2 : join, c = match condition

Page 42: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.
Page 43: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Practice• Find names of stars who’ve appeared in a 1994

movie

• Information about movie year available in Movies; so need an extra join:σyear=1994(πname(Stars AppearIn Movies))⋈ ⋈

• An even more efficient solution:πname(Stars ⋈πname(AppearIn (π⋈ movieIdσyear=1994(Movies)))A query optimizer can find this, given the first solution!

• A more efficient solution:πname(Stars AppearIn (σ⋈ ⋈ year=1994( Movies))

Page 44: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Extended Relational Algebra Operations

• Generalized projection

• Outer join

• Aggregate functions

Page 45: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Generalized projection – calculate fields

Page 46: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Aggregate Operation – Example• Relation r:

A B

C

7

7

3

10

g sum(c) (r) sum(c )

27

Page 47: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Aggregate

• Functions on more than one tuple

• Samples:– Sum– Count-distinct– Max– Min– Count– Avg

• Use “as” to renamebranchname g sum(balance) as totalbalance (account)

Page 48: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Aggregate Operation – Example

• Relation account grouped by branch-name:

branch_name g sum(balance) (account)

branch_name account_number balance

PerryridgePerryridgeBrightonBrightonRedwood

A-102A-201A-217A-215A-222

400900750750700

branch_name sum(balance)

PerryridgeBrightonRedwood

13001500700

Page 49: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Outer Join

• Keep the outer side even if no join

• Fill in missing fields with nulls

Page 50: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Outer Join – Example• Relation loan

Relation borrower

customer_name loan_number

JonesSmithHayes

L-170L-230L-155

300040001700

loan_number amount

L-170L-230L-260

branch_name

DowntownRedwoodPerryridge

Page 51: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Outer Join – Example• Inner Join

loan Borrower

loan_number amount

L-170L-230

30004000

customer_name

JonesSmith

branch_name

DowntownRedwood

JonesSmithnull

loan_number amount

L-170L-230L-260

300040001700

customer_namebranch_name

DowntownRedwoodPerryridge

Left Outer Join

loan Borrower

Page 52: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Outer Join – Example

loan_number amount

L-170L-230L-155

30004000null

customer_name

JonesSmithHayes

branch_name

DowntownRedwoodnull

loan_number amount

L-170L-230L-260L-155

300040001700null

customer_name

JonesSmithnullHayes

branch_name

DowntownRedwoodPerryridgenull

Full Outer Join

loan borrower

Right Outer Join

loan borrower

Page 53: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.

Summary of Operators - Full• E1 U E2 : union

• E1 - E2 : difference

• E1 x E2 : cartesian product

c(E1) : select rows, c = condition (book has p for predicate)

• IIs(E1) : project columns : s =selected columns separated by commas,

can have calculations included x(c1,c2) (E1) : rename, x is new name of E1, c1 is new name of column

• E1 E2 : division

• E1 E2 : join, c = match condition

• E1 E2 : outer join, c = match condition, keep the side with the arrows

: assignment – give a new name to an expression to make it easy to read

• as : rename a calculated column

• attribute1g function (attribute2) (E1) : perform function on attribute2 whenever

attribute1 changes

Page 54: Relational Algebra – Basis for Relational Query Languages Based on presentation by Juliana Freire.