Introduction to
Relational Model
Example of a Relation
attributes
(or columns)
tuples
(or rows)
Attribute Types
• 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
Relation Schema and Instance
• A1, A2, …, An are attributes
• R = (A1, A2, …, An ) is a relation schema
Example:
instructor = (ID, name, dept_name, salary)
• Formally, given sets D1, D2, …. Dn a relation r is a subset of
The D 1 x Dvalues
current 2 x … (relation
x Dn instance) of a relation are specified by
a table
Thus, a relation is a set of n-tuples (a , a , …, an) where
An element t of r is a tuple, represented by a 1row 2in a table
each ai Di
Relations are Unordered
Order of tuples is irrelevant (tuples may be stored in an arbitrary order)
Example: instructor relation with unordered tuples
Keys • Let K R
• K is a superkey of R if values for K are sufficient to identify a
unique tuple of each possible relation r(R)
• Example: {ID} and {ID,name} are both superkeys of instructor.
• Superkey K is a candidate key if K is minimal
Example: {ID} is a candidate key for Instructor
• One of the candidate keys is selected to be the primary key.
• which one?
• Foreign key constraint: Value in one relation must appear in
another
• Referencing relation
• Referenced relation
• Example – dept_name in instructor is a foreign key from instructor
referencing department
Schemaa Diagram for University Database
Relational Query Languages
• Procedural vs .non-procedural, or declarative
• “Pure” languages:
• Relational algebra
• Tuple relational calculus
• Domain relational calculus
• The above 3 pure languages are equivalent in
computing power
• We will concentrate on relational algebra
• Not turing-machine equivalent
• consists of 6 basic operations
Select Operation – selection of rows (tuples)
Relation r
A=ꞵ ^ D > 5 (r)
Project Operation – selection of columns
(Attributes)
• Relation r:
A,C (r)
Selects distinct tuples
for the requested set
of attributes
Union of two relations
• Relations r, s:
r s:
Set difference of two relations
• Relations r, s:
r – s:
Set intersection of two relations
• Relation r, s:
• rs
Note: r s = r – (r – s)
joining two relations -- Cartesian-product
Relations r, s:
r x s:
Cartesian-product – naming issue
Relations r, s: B
r x s: r.B s.B
Renaming a Table
• Allows us to refer to a relation, (say E) by more than one
name.
x (E)
returns the expression E under the name X
Relations r
r x s (r) r.A r.B s.A s.B
α 1 α 1
α 1 β 2
β 2 α 1
β 2 β 2
Composition of Operations
• Can build expressions using multiple operations
• Example: A=C (r x s)
• rxs
• A=C (r x s)
Joining two relations – Natural Join
• Let r and s be relations on schemas R and S respectively.
Then, the “natural join” of relations R and 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 t on r
r
• t has the same value as t on s
s
Natural Join Example
• Relations r, s:
Natural Join
r s
A, r.B, C, r.D, E ( r.B = s.B ˄ r.D = s.D (r x s)))
Notes about Relational Languages
• Each Query input is a table (or set of tables)
• Each query output is a table.
• All data in the output table appears in one of the
input tables
• Relational Algebra is not Turning complete
• Can we compute:
• SUM
• AVG
• MAX
• MIN
Summary of Relational Algebra Operators
Symbol (Name) Example of Use
σ
(Selection) σ
salary > = 85000
(instructor)
Return rows of the input relation that satisfy the predicate.
Π
(Projection) Π
ID, salary (instructor)
Output specified attributes from all rows of the input
relation. Remove duplicate tuples from the output.
x
(Cartesian Product) instructor x department
Output pairs of rows from the two input relations that have
the same value on all attributes that have the same name.
∪
(Union) Π
name (instructor) ∪ Π
name (student)
Output the union of tuples from the two input relations.
-
(Set Difference) Π
name (instructor) -- Π
name (student)
Output the set difference of tuples from the two
⋈ input relations.
(Natural Join) instructor ⋈ department
Output pairs of rows from the two input relations
that have the same value on all attributes that have
the same name.