Chapter 3: Formal Relational Query Languages
Chapter 3: Formal Relational Query Languages
• Relational Algebra
• Tuple Relational Calculus
• Domain Relational Calculus
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 a result.
Select Operation – Example
Relation r
A,C (r)
Project Operation
• Notation: A1 , A2 ,, Ak (r )
r s:
Union Operation
• Notation: r s
• Example: to find all courses taught in the Fall 2009 semester, or in
the Spring 2010 semester, or in both
• Tra vào bảng section lấy học kì dạy ở mùa thu và năm 2009 xuất
ra course id hợp với course id của mùa xuân 2010
•
course_id ( semester=“Fall” Λ year=2009 (section))
r – s:
Set Difference Operation
• Notation r – s
• Example: to find all courses taught in the Fall 2009 semester,
but not in the Spring 2010 semester
course_id ( semester=“Fall” Λ year=2009 (section)) −
course_id ( semester=“Spring” Λ year=2010 (section))
• Dạy ở học kì thu 2009 nhưng không dạy ở học kì xuân 2010
Cartesian-Product Operation – Example
Relations r, s:
r x s:
Cartesian-Product Operation
• Notation r x s
• Defined as:
r x s = {t q | t r and q s}
•r x s
• A=C(r x s)
• Chọn A=C
Rename Operation
• Allows us to name, and therefore to refer to, the results of
relational-algebra expressions.
• Allows us to refer to a relation by more than one name.
• Example:
x (E)
salary (instructor) –
instructor.salary ( instructor.salary < d,salary (instructor x d (instructor)))
Example Queries
Given instructor(ID, name, dept_name, salary) and
teaches(ID, courseID, sec_ID, semester, year)
•Find the names of all instructors in the Physics department, along
with the course_id of all courses they have taught
Query 1
instructor.ID,course_id (dept_name=“Physics” (
instructor.ID=teaches.ID (instructor x teaches)))
Query 2
instructor.ID,course_id (instructor.ID=teaches.ID (
dept_name=“Physics” (instructor) x teaches))
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:
• E 1 E2
• E1 – E2
• E 1 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
Additional Operations
We define additional operations that do not add any power to
the
relational algebra, but that simplify common queries.
• Set intersection
• Natural join
• Assignment
• Outer join
Set-Intersection Operation
• Notation: r s
• Defined as:
r s = { t | t r and t s }
• Assume:
• r, s have the same arity
• attributes of r and s are compatible
• Note: r s = r – (r – s)
Set-Intersection Operation – Example
• Relation r, s:
•rs
Natural-Join Operation
Notation: r s
r s
Natural Join and Theta Join
• Find the names of all instructors in the Comp. Sci. department
together with the course titles of all the courses that the instructors
teach
• name, title ( dept_name=“Comp. Sci.” (instructor teaches course))
• Natural join is associative
• (instructor teaches) course is equivalent to
instructor (teaches course)
• Natural join is commutative
• instruct teaches is equivalent to
teaches instructor
• The theta join operation r s is defined as
• r s = (r x s)
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.
Outer Join
• An extension of the join operation that avoids loss
of information.
• Computes the join and then adds tuples form one
relation that does not match tuples in the other
relation to the result of the join.
• Uses null values:
• null signifies that the value is unknown or does not exist
Outer Join – Example
• Relation instructor1
• Relation teaches1
Outer Join – Example
• Join (inner join)
instructor teaches
ID name dept_name course_id
10101 Srinivasan Comp. Sci. CS-101
12121 Wu Finance FIN-201
• Generalized Projection
• Aggregate Functions
Generalized Projection
• Extends the projection operation by allowing arithmetic
functions to be used in the projection list.
F1 , F2 ,..., Fn ( Eexpression
E is any relational-algebra )
• Each of F1, F2, …, Fn are arithmetic expressions involving
constants and attributes in the schema of E.
• Given relation instructor(ID, name, dept_name, salary)
where salary is annual salary, get the same information
but with monthly salary
ID, name, dept_name, salary/12 (instructor)
Aggregate Functions and Operations
• Aggregation function takes a collection of values and returns a
single value as a result.
avg, min, max, sum, count
• Aggregate operation in relational algebra
7
7
3
10
F sum(c (r)
)
sum(c )
27
Aggregate Operation – Example
• Find the average salary in each department
dept_name Favg(salary) (instructor)
avg_salary
Aggregate Functions (Cont.)
• Result of aggregation does not have a name
• Can use rename operation to give it a name
• For convenience, we permit renaming as part of
aggregate operation
• Each Fi is either
• the i th attribute of r, if the i th attribute is not updated,
or,
• if the attribute is to be updated Fi is an expression,
involving only constants and the attributes of r, which
gives the new value for the attribute
Update Examples
• Make interest payments by increasing all balances by 5
percent.
Query 2