Relational Algebra

27
Relational Algebra

description

This document refers to the relational algebra. Student can learn relational algebra

Transcript of Relational Algebra

Page 1: Relational Algebra

Relational Algebra

Page 2: Relational Algebra

CMPT 354: Database I -- Relational Algebra 2

Relational Algebra

• Procedural language• Six basic operators

– select: σ– project: ∏– union: ∪– set difference: –– Cartesian product: x– rename: ρ

• The operators take one or two relations as inputs and produce a new relation as the result

Page 3: Relational Algebra

CMPT 354: Database I -- Relational Algebra 3

Composition of Operations

• Building expressions using multiple operations

• Example: σA=C(r x s)A B

ααααββββ

11112222

C D

αββγαββγ

1010201010102010

E

aabbaabb

A B C D E

αββ

122

αββ

101020

aab

A B

α

β

1

2r

C D

αββγ

10102010

E

aabb

s

Page 4: Relational Algebra

CMPT 354: Database I -- Relational Algebra 4

Rename Operation

• Name, and therefore to refer to, the results of relational-algebra expressions– Refer to a relation by more than one name

• Example: ρx(E) returns the expression E under the name X

• If a relational-algebra expression E has arity n, then returns the result of expression E under the name X, and with the attributes renamed to A1 , A2 , …., An

)(),...,,( 21E

nAAAxρ

Page 5: Relational Algebra

CMPT 354: Database I -- Relational Algebra 5

Banking Example

• branch (branch_name, branch_city, assets)• customer (customer_name,

customer_street, customer_city)• account (account_number, branch_name,

balance)• loan (loan_number, branch_name, amount)• depositor (customer_name,

account_number)• borrower (customer_name, loan_number)

Page 6: Relational Algebra

CMPT 354: Database I -- Relational Algebra 6

Example Queries

• Find all loans of over $1200σamount > 1200 (loan)

• Find the loan number for each loan of an amount greater than $1200

∏loan_number (σamount > 1200 (loan))

loan (loan_number, branch_name, amount)

Page 7: Relational Algebra

CMPT 354: Database I -- Relational Algebra 7

Example Queries

• Find the names of all customers who have a loan, an account, or both, from the bank∏customer_name(borrower) ∪ ∏customer_name(depositor)

• Find the names of all customers who have a loan and an account at the bank∏customer_name(borrower) ∩ ∏customer_name(depositor)

depositor (customer_name, account_number)borrower (customer_name, loan_number)

Page 8: Relational Algebra

CMPT 354: Database I -- Relational Algebra 8

Example Queries

• Find the names of all customers who have a loan at the Perryridge branch∏customer_name(σbranch_name=“Perryridge”(σborrower.loan_number =loan.loan_number(borrower x loan)))

• Find the names of all customers who have a loan at the Perryridge branch but do not have an account at any branch of the bank∏customer_name(σbranch_name = “Perryridge”(σborrower.loan_number = loan.loan_number(borrower x loan))) –∏customer_name(depositor)

Page 9: Relational Algebra

CMPT 354: Database I -- Relational Algebra 9

Example Queries

• Find the names of all customers who have a loan at the Perryridge branch– Answer 1

∏customer_name(σbranch_name = “Perryridge” (σborrower.loan_number = loan.loan_number (borrower x loan)))

– Answer 2∏customer_name(σloan.loan_number = borrower.loan_number (

(σbranch_name = “Perryridge” (loan)) x borrower))

Page 10: Relational Algebra

CMPT 354: Database I -- Relational Algebra 10

Example Queries

• Find the largest account balance– Aggregate max is not directly supported in

relational algebra – Find those balances that are not the largest

• Rename account relation as d so that we can compare each account balance with all the others

– Use set difference to find the max balance accounts

∏balance(account) - ∏account.balance(σaccount.balance < d.balance (account x ρd (account)))

account (account_number, branch_name, balance)

Page 11: Relational Algebra

CMPT 354: Database I -- Relational Algebra 11

Formal Definition• A basic expression in the relational algebra consists of

either one of the following:– A relation in the database– A constant relation

• Let E1 and E2 be relational-algebra expressions; the following are all relational-algebra expressions:– E1 ∪ E2

– E1 – E2

– E1 x E2

– σp (E1), P is a predicate on attributes in E1

– ∏s(E1), S is a list consisting of some of the attributes in E1

– ρx(E1), x is the new name for the result of E1

Page 12: Relational Algebra

CMPT 354: Database I -- Relational Algebra 12

Additional Operations

• The additional operations do not add any power to the relational algebra, but can simplify writing common queries– Set intersection– Natural join– Division– Assignment

Page 13: Relational Algebra

CMPT 354: Database I -- Relational Algebra 13

Set-Intersection Operation – Example

A B

ααβ

121

r

A B

αβ

23

s

A B

α 2

r ∩ s

Page 14: Relational Algebra

CMPT 354: Database I -- Relational Algebra 14

Set-Intersection Operation

• r ∩ s = { t | t ∈ r and t ∈ s }– In basic operators, we only have set difference

but no intersection• Assume:

– r, s have the same arity – attributes of r and s are compatible

• r ∩ s = r – (r – s)

Page 15: Relational Algebra

CMPT 354: Database I -- Relational Algebra 15

Natural Join Operation – Example

A B

αβγαδ

12412

C D

αγβγβ

aabab

r

B

13123

D

aaabb

E

αβγδ∈

s

A B

ααααδ

11112

C D

ααγγβ

aaaab

E

αγαγδ

r s

Page 16: Relational Algebra

CMPT 354: Database I -- Relational Algebra 16

Natural-Join Operation

• Let r and s be relations on schemas R and S respectively. r s is a relation on schema R ∪ S obtained as follows:– Consider each pair of tuples tr from r and ts from

s– If tr and ts have the same value on each of the

attributes in R ∩ S, add a tuple t to the result, where

• t has the same value as tr on r• t has the same value as ts on s

Page 17: Relational Algebra

CMPT 354: Database I -- Relational Algebra 17

Example

• R = (A, B, C, D)• S = (E, B, D)• Result schema = (A, B, C, D, E)• r s is defined as

∏r.A, r.B, r.C, r.D, s.E (σr.B = s.B ∧ r.D = s.D (r x s))

Page 18: Relational Algebra

CMPT 354: Database I -- Relational Algebra 18

Division Operation – Example

A B

αααβγδδδ∈∈β

12311134612

r

B

1

2

s

A

α

β

r ÷ s

Page 19: Relational Algebra

CMPT 354: Database I -- Relational Algebra 19

Division Operation

• Let r and s be relations on schemas R and S respectively where R = (A1, …, Am, B1, …, Bn) and S = (B1, …, Bn)– The result of r ÷ s is a relation on schema R – S

= (A1, …, Am)– r ÷ s = { t | t ∈ ∏R-S(r) ∧ ∀ u ∈ s ( tu ∈ r ) },

where tu means the concatenation of tuples t and u to produce a single tuple

• Suited to queries that include the phrase “for all”

Page 20: Relational Algebra

CMPT 354: Database I -- Relational Algebra 20

Another Division Example

A B

αααββγγγ

aaaaaaaa

C D

αγγγγγγβ

aabababb

E

11113111

r

D

ab

E

11

s

A B

αγ

aa

C

γγ

r ÷ s

Page 21: Relational Algebra

CMPT 354: Database I -- Relational Algebra 21

Properties of Division Operation

• Let q = r ÷ s, q is the largest relation satisfying q x s ⊆ r

• Let r(R) and s(S) be relations, and let S ⊆R, r ÷ s = ∏R-S(r) – ∏R-S((∏R-S(r) x s ) – ∏R-

S,S(r ))– ∏R-S,S(r) simply reorders attributes of r– ∏R-S(∏R-S(r) x s) – ∏R-S,S(r)) gives those tuples t

in ∏R-S(r) such that for some tuple u ∈ s, tu ∉ r

Page 22: Relational Algebra

CMPT 354: Database I -- Relational Algebra 22

Assignment Operation• The assignment operation (←) provides a

convenient way to express complex queries– Write query as a sequential program consisting of a

series of assignments followed by an expression whose value is displayed as a result of the query

– Assignment must always be made to a temporary relation variable

• Example: compute r ÷ s – temp1 ← ∏R-S(r ), temp2 ← ∏R-S((temp1 x s) – ∏R-S,S(r ))

result = temp1 – temp2

• The result to the right of the ← is assigned to the relation variable on the left of the ←– May use variable in subsequent expressions

Page 23: Relational Algebra

CMPT 354: Database I -- Relational Algebra 23

Bank Example Queries

• Find the names of all customers who have a loan and an account at bank

∏customer_name (borrower) ∩ ∏customer_name (depositor)

• Find the name of all customers who have a loan at the bank and the loan amount

) ( loanborrowerountnumber, amame, loan-customer-n∏

Page 24: Relational Algebra

CMPT 354: Database I -- Relational Algebra 24

Bank Example Queries

• Find all customers who have an account from at least the “Downtown” and the “Uptown” branches– Answer 1

∏customer_name (σbranch_name = “Downtown” (depositor account )) ∩

∏customer_name (σbranch_name = “Uptown” (depositor account))

– Answer 2: using a constant relation∏customer_name, branch_name (depositor account)

÷ ρtemp(branch_name) ({(“Downtown” ), (“Uptown” )})

Page 25: Relational Algebra

CMPT 354: Database I -- Relational Algebra 25

Example Queries

• Find all customers who have an account at all branches located in Brooklyn city

∏customer_name, branch_name (depositor account)

÷ ∏branch_name (σbranch_city = “Brooklyn” (branch))

Page 26: Relational Algebra

CMPT 354: Database I -- Relational Algebra 26

Summary

• Examples of relational algebra expressions• Additional operators

– Do not add any power to the relational algebra, but can simplify writing common queries

– Set intersection– Natural join– Division– Assignment

Page 27: Relational Algebra

CMPT 354: Database I -- Relational Algebra 27

To-Do List

• Translate the relational algebra expression examples into SQL

• What can you observe?