Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Relational Algebra 1

Download as pdf or txt
Download as pdf or txt
You are on page 1of 32

Outline

Structure of Relational Databases


Database Schema
Keys
Schema Diagrams
Relational Query Languages
The Relational Algebra
Example of a Instructor Relation

attributes
(or columns)

tuples
(or rows)
Attribute

The set of allowed values for each attribute is called the


domain of the attribute
Attribute values are (normally) required to be atomic; that is,
indivisible
The special value null is a member of every domain.
Indicated that the value is “unknown”
The null value causes complications in the definition of many
operations
Relations are Unordered

Order of tuples is irrelevant (tuples may be stored in an arbitrary


order)
Example: instructor relation with unordered tuples
Database Schema
Database schema -- is the logical structure of the database.
Database instance -- is a snapshot of the data in the
database at a given instant in time.
Example:
• schema: instructor (ID, name, dept_name, salary)
• Instance:
Relational Query Languages
Procedural versus non-procedural, or declarative
languages:
• Relational algebra
• Tuple relational calculus
• Domain relational calculus
The above 3 languages are equivalent in computing
power
We will concentrate in this chapter on relational algebra
• Not turning-machine equivalent
• Consists of 6 basic operations
Relational Algebra
A procedural language consisting of a set of operations that take
one or two relations as input and produce a new relation as their
result.
Six basic operators

• select:
• project:
• union:
• set difference: –
• Cartesian product: x
• rename:
Select Operation
The select operation selects tuples that satisfy a given predicate.
Notation: p(r)
p is called the selection predicate
Example: select those tuples of the instructor relation where the
instructor is in the “Physics” department.
• Query

dept_name= Physics” (instructor)

• Result
Select Operation (Cont.)
We allow comparisons using
=, , >, . <.
in the selection predicate.
We can combine several predicates into a larger predicate by using the
connectives:
(and), (or), (not)
Example: Find the instructors in Physics with a salary greater $90,000,
we write:

dept_name= Physics salary > 90,000 (instructor)

Then select predicate may include comparisons between two


attributes.
• Example, find all departments whose name is the same as their
building name:
• dept_name=building (department)
Project Operation
A unary operation that returns its argument relation, with
certain attributes left out.
Notation:

A1,A2,A3 ….Ak (r)


where A1, A2 are attribute names and r is a relation name.
The result is defined as the relation of k columns obtained
by erasing the columns that are not listed
Duplicate rows removed from result, since relations are
sets
Project Operation (Cont.)
Example: eliminate the dept_name attribute of instructor
Query:

ID, name, salary (instructor)


Result:
Composition of Relational Operations

The result of a relational-algebra operation is relation and


therefore of relational-algebra operations can be composed
together into a relational-algebra expression.
Consider the query -- Find the names of all instructors in the
Physics department.

name( dept_name = Physics (instructor))

Instead of giving the name of a relation as the argument of the


projection operation, we give an expression that evaluates to a
relation.
The instructor X teaches table
Join Operation
The Cartesian-Product
instructor X teaches
associates every tuple of instructor with every tuple of
teaches.
• Most of the resulting rows have information about instructors
who did NOT teach a particular course.
To get only those tuples of “instructor X teaches “ that pertain
to instructors and the courses that they taught, we write:
instructor.id = teaches.id (instructor x teaches ))

• We get only those tuples of “instructor X teaches” that pertain


to instructors and the courses that they taught.
The result of this expression, shown in the next slide
Join Operation (Cont.)
The table corresponding to:

instructor.id = teaches.id (instructor x teaches))


Join Operation (Cont.)
The join operation allows us to combine a select operation
and a Cartesian-Product operation into a single operation.
Consider relations r (R) and s (S)
Let “theta” be a predicate on attributes in the schema R “union”
S. The join operation r s is defined as follows:

Thus
instructor.id = teaches.id (instructor x teaches ))

Can equivalently be written as

instructor Instructor.id = teaches.id teaches.


Union Operation
The union operation allows us to combine two relations
Notation: r s
For r s to be valid.
1. r, s must have the same arity (same number of attributes)
2. The attribute domains must be compatible (example: 2nd
column
of r deals with the same type of values as does the 2nd
column of s)
Example: to find all courses taught in the Fall 2017 semester,
or in the Spring 2018 semester, or in both

course_id ( semester= Fall year=2017 (section))

course_id ( semester= Spring year=2018 (section))


Union Operation (Cont.)

Result of:

course_id ( semester= Fall year=2017 (section))

course_id ( semester= Spring year=2018 (section))


Set Difference Operation
The set-difference operation allows us to find tuples that are in one
relation but are not in another.
Notation r – s
Set differences must be taken between compatible relations.
• r and s must have the same arity
• attribute domains of r and s must be compatible
Example: to find all courses taught in the Fall 2017 semester, but
not in the Spring 2018 semester

course_id ( semester= Fall year=2017 (section

course_id ( semester= Spring year=2018 (section))


The Assignment Operation
It is convenient at times to write a relational-algebra expression
by assigning parts of it to temporary relation variables.
The assignment operation is denoted by and works like
assignment in a programming language.
Example: Find all instructor in the “Physics” and Music
department.

Physics dept_name= Physics (instructor)


Music dept_name= Music” (instructor)
Physics Music

With the assignment operation, a query can be written as a


sequential program consisting of a series of assignments
followed by an expression whose value is displayed as the result
of the query.
The Rename Operation
The results of relational-algebra expressions do not have a
name that we can use to refer to them. The rename operator,
, is provided for that purpose
The expression:

x (E)
returns the result of expression E under the name x
Another form of the rename operation:

x(A1,A2, .. An) (E)


Equivalent Queries
There is more than one way to write a query in relational algebra.
Example: Find information about courses taught by instructors in
the Physics department with salary greater than 90,000
Query 1

dept_name= Physics salary > 90,000 (instructor)

Query 2

dept_name= Physics ( salary > 90.000 (instructor))

The two queries are not identical; they are, however, equivalent --
they give the same result on any database.
Equivalent Queries
There is more than one way to write a query in relational algebra.
Example: Find information about courses taught by instructors in
the Physics department
Query 1

dept_name= Physics (instructor instructor.ID = teaches.ID teaches)

Query 2

( dept_name= Physics (instructor)) instructor.ID = teaches.ID teaches

The two queries are not identical; they are, however, equivalent --
they give the same result on any database.

You might also like