- 47 Views
- Uploaded on
- Presentation posted in: General

ICS 421 Spring 2010 Relational Algebra & SQL

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

ICS 421 Spring 2010Relational Algebra & SQL

Asst. Prof. Lipyeow Lim

Information & Computer Science Department

University of Hawaii at Manoa

Lipyeow Lim -- University of Hawaii at Manoa

- Query languages: Allow manipulation and retrieval of data from a database.
- Two mathematical Query Languages form the basis for “real” languages (e.g. SQL), and for implementation:
- Relational Algebra: More operational, very useful for representing execution plans.
- Relational Calculus: Lets users describe what they want, rather than how to compute it. (Non-operational, declarative.)

- Query Languages != programming languages!
- QLs not expected to be “Turing complete”.
- QLs not intended to be used for complex calculations.
- QLs support easy, efficient access to large data sets.

Lipyeow Lim -- University of Hawaii at Manoa

R1

- “Sailors” and “Reserves” relations for our examples.
- We’ll use positional or named field notation, assume that names of fields in query results are `inherited’ from names of fields in query input relations

S1

S2

Lipyeow Lim -- University of Hawaii at Manoa

- Basic operations:
- Selection (σ) Selects a subset of rows from relation.
- Projection (π) Deletes unwanted columns from relation.
- Cross-product(×) Allows us to combine two relations.
- Set-difference (−) Tuples in reln. 1, but not in reln. 2.
- Union(U) Tuples in reln. 1 and in reln. 2.

- Additional operations:
- Intersection, join, division, renaming: Not essential, but (very!) useful.

- Since each operation returns a relation, operationscan be composed! (Algebra is “closed”.)

Lipyeow Lim -- University of Hawaii at Manoa

πsname, rating (S2)

- Deletes attributes that are not in projection list.
- Schema of result contains exactly the fields in the projection list, with the same names that they had in the (only) input relation.
- Projection operator has to eliminate duplicates! (Why??)
- Note: real systems typically don’t do duplicate elimination unless the user explicitly asks for it. (Why not?)

πage (S2)

Lipyeow Lim -- University of Hawaii at Manoa

σrating > 8 (S2)

- Selects rows that satisfy selection condition.
- No duplicates in result! (Why?)
- Schema of result identical to schema of (only) input relation.
- Result relation can be the input for another relational algebra operation! (Operatorcomposition.)

πsname, rating (σrating>8 (S2))

Lipyeow Lim -- University of Hawaii at Manoa

S1 U S2

- All of these operations take two input relations, which must be union-compatible:
- Same number of fields.
- `Corresponding’ fields have the same type.

- What is the schema of result?

S1

S2

Lipyeow Lim -- University of Hawaii at Manoa

S1 ∩ S2

S1 − S2

S1

S2

Lipyeow Lim -- University of Hawaii at Manoa

- Consider the cross product of S1 with R1
- Each row of S1 is paired with each row of R1.
- Result schema has one field per field of S1 and R1, with field names `inherited’ if possible.
- Conflict: Both S1 and R1 have a field called sid.
- Rename to sid1 and sid2

S1 × R1

R1

S1

Lipyeow Lim -- University of Hawaii at Manoa

- The expression:
ρ ( C (1 → sid1, 5 → sid2), S1 × R1 )

- Renames the result of the cross product of S1 and R1 to “C”
- Renames column 1 to sid1 and column 5 to sid2

ρ ( C (1 → sid1, 5 → sid2), S1 × R1 )

Lipyeow Lim -- University of Hawaii at Manoa

- Condition Join:
- Result schema same as that of cross-product.
- Fewer tuples than cross-product, might be able to compute more efficiently
- Sometimes called a theta-join.

Lipyeow Lim -- University of Hawaii at Manoa

- Equi-join: A special case of condition join where the condition c contains only equalities.
- Result schema similar to cross-product, but only one copy of fields for which equality is specified.

- Natural Join: Equi-join on all common fields.

Lipyeow Lim -- University of Hawaii at Manoa

Solution 1:

Solution 2:

Solution 3:

Lipyeow Lim -- University of Hawaii at Manoa

- Information about boat color only available in Boats; so need an extra join:

- A more efficient solution:

Lipyeow Lim -- University of Hawaii at Manoa

- Can identify all red or green boats, then find sailors who’ve reserved one of these boats:

- Can also define Tempboats using union! (How?)
- What happens if is replaced by in this query?

Lipyeow Lim -- University of Hawaii at Manoa

- Previous approach won’t work! Must identify sailors who’ve reserved red boats, sailors who’ve reserved green boats, then find the intersection (note that sid is a key for Sailors):

Lipyeow Lim -- University of Hawaii at Manoa

SELECT [ DISTINCT ] target-list

FROMrelation-list

WHEREqualification

- relation-list A list of relation names (possibly with a range-variable after each name).
- target-list A list of attributes of relations in relation-list
- qualification Comparisons (Attrop const or Attr1 op Attr2, where op is one of <, >, ≤, ≥, =, ≠) combined using AND, OR and NOT.
- DISTINCT is an optional keyword indicating that the answer should not contain duplicates. Default is that duplicates are not eliminated!

Lipyeow Lim -- University of Hawaii at Manoa

SELECTS.sname

FROM Sailors S, Reserves R

WHERE S.sid=R.sid AND bid=103

- Range variables really needed only if the same relation appears twice in the FROM clause.
- Good style to always use range variables

Without range variables

SELECTsname

FROM Sailors, Reserves

WHERE Sailors.sid=Reserves.sid AND bid=103

Lipyeow Lim -- University of Hawaii at Manoa

- Semantics of an SQL query defined in terms of the following conceptual evaluation strategy:
- Compute the cross-product of relation-list.
- Discard resulting tuples if they fail qualifications.
- Delete attributes that are not in target-list.
- If DISTINCT is specified, eliminate duplicate rows.

- This strategy is probably the least efficient way to compute a query! An optimizer will find more efficient strategies to compute the same answers.

Lipyeow Lim -- University of Hawaii at Manoa

SELECTS.sname

FROM Sailors S, Reserves R

WHERE S.sid=R.sid AND bid=103

Conceptual Evaluation Steps:

- Compute cross-product
- Discard disqualified tuples
- Delete unwanted attributes
- If DISTINCT is specified, eliminate duplicate rows.

Lipyeow Lim -- University of Hawaii at Manoa