CH 2
CH 2
*
Relational Model...
*
Basic Structure
●Formally, given sets D1, D2, …. Dn a
relation r is a subset of D1 x D2 x … x Dn
Thus, a relation is a set of n-tuples (a1, a2,
…, an) where each ai ∈ Di
●Example: If
●customer_name = {Jones, Smith, Curry,
Lindsay, …} /* Set of all customer names
*
*
Contd..
*
Contd..
- Domain is said to be atomic if all its
members are atomic
- The special value null is a member of every
domain
- The null value causes complications in the
definition of many operations
- We shall ignore the effect of null values in our
main presentation and consider their effect
later
*
Relation Schema
●A1, A2, …, An are attributes
●R = (A1, A2, …, An ) is a relation schema
Example:
Customer_schema = (customer_name,
customer_street, customer_city)
r(R) denotes a relation r on the relation schema
R
Example:
customer (Customer_schema)
*
Relation Instance
●The current values (relation instance)
of a relation are specified by a table
●An element t of r is a tuple,
represented by a row in a table attributes
(or columns)
customer_nam customer_stre
customer_city
e et
customer
*
Relations are Unordered
● Order of tuples is irrelevant (tuples may be stored in an arbitrary order)
● Example: account relation with unordered tuples
*
Database
● A database consists of multiple relations
● Information about an enterprise is broken up into parts, with each relation
storing one part of the information
*
The customer Relation
*
The depositor Relation
*
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)
●by “possible r ” we mean a relation r that could
exist in the enterprise we are modeling.
●Example: {customer_name, customer_street}
and {customer_name} are both superkeys of
Customer, if no two customers can possibly
* have the same name
Keys Contd..
*
Keys (Cont.)
●K is a candidate key if K is minimal
Example: {customer_name} is a candidate key
for Customer, since it is a superkey and no
subset of it is a superkey.
●Primary key: a candidate key chosen as the
principal means of identifying tuples within a
relation
● Should choose an attribute whose value
never, or very rarely, changes.
● E.g. email address is unique, but may change
*
Foreign Keys
●A relation schema may have an attribute
that corresponds to the primary key of
another relation. The attribute is called a
foreign key.
●E.g. customer_name and account_number
attributes of depositor are foreign keys to
customer and account respectively.
●Only values occurring in the primary key
attribute of the referenced relation may
occur in the foreign key attribute of the
referencing relation.
*
Schema diagram
*
Query Languages
●Language in which user requests information
from the database.
●Categories of languages
● Procedural
● Non-procedural, or declarative
●“Pure” languages:
● Relational algebra
● Tuple relational calculus
● Domain relational calculus
●Pure languages form underlying basis of query
languages that people use.
*
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
●Notation: σ p(r)
●p is called the selection predicate
●Defined as:
*
Select Operation...
Example of selection:
σ branch_name=“Santacruz”(account)
*
Select Operation – Example
● Relation r
A B C D
α α 1 7
α β 5 7
β β 12 3
β β 23 10
◼σA=B ^ D > 5
(r) A B C D
α α 1 7
β β 23 10
*
Project Operation
●Notation:
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
*
Project Operation...
*
Project Operation – Example
A B C
●Relation r:
α 10 1
α 20 1
β 30 1
β 40 2
∏A,C (r) A C A C
α 1 α 1
α 1 = β 1
β 1 β 2
β 2
*
Union Operation
●Notation: r ∪ s
●Defined as:
r ∪ s = {t | t ∈ r or t ∈ s}
●For r ∪ s to be valid.
1. r, s must have the same arity
(same number of attributes)
*
Union Operation...
*
Union Operation – Example
●Relations r,A s:B A B
α 1 α 2
α 2 β 3
β 1 s
r
A B
● r ∪ s: α 1
α 2
β 1
β 3
*
Set Difference Operation
●Notation r – s
●Defined as:
r – s = {t | t ∈ r and t ∉ s}
α 1 α 2
α 2 β 3
β 1 s
r
● r – s:
A B
α 1
β 1
*
Cartesian-Product Operation
●Notation r x s
●Defined as:
r x s = {t q | t ∈ r and q ∈ s}
*
Example
● Relations r, s:
A B C D E
α 1 α 10 a
β 10 a
β 2 β 20 b
r γ 10 b
s
● r x s:
A B C D E
α 1 α 10 a
α 1 β 10 a
α 1 β 20 b
α 1 γ 10 b
β 2 α 10 a
β 2 β 10 a
β 2 β 20 b
β 2 γ 10 b
*
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)
*
Banking Example
branch (branch_name, branch_city,
assets)
customer (customer_name,
customer_street, customer_city)
account (account_number,
branch_name, balance)
*
Banking Example...
*
Example Queries
●Find all loans of over $1200
σamount > 1200
(loan)
● Find the loan number for each loan of an amount greater than
$1200
● Find the names of all customers who have a loan, an account, or both,
from the bank
*
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)))
∏customer_name(depositor)
*
Example Queries
●Find the names of all customers who have a
loan at the Perryridge branch.
● Query 1
● Query 2
∏customer_name(σloan.loan_number = borrower.loan_number (
*
Example Queries
● Find the largest account balance
● Strategy:
− Find those balances that are not the largest
● Rename account relation as d so that we can compare each
account balance with all others
− Use set difference to find those account balances that were not
found in the earlier step.
● The query is:
∏balance(account) - ∏account.balance
(σaccount.balance < d.balance (account x ρd (account)))
*
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
*
●E – E
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
●Division
●Assignment
*
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)
*
Example
● Relation r, s:A B A B
α 1 α 2
α 2 β 3
β 1
r s
●r ∩ s A B
α
2
*
Natural-Join Operation
● Notation: r s
α 1 α a 1 a α
β 2 γ a 3 a β
γ 4 β b 1 a γ
α 1 γ a 2 b δ
δ 2 β b 3 b ∈
r s
● r s
A B C D E
α 1 α a α
α 1 α a γ
α 1 γ a α
α 1 γ a γ
δ 2 β b δ
*
Division Operation
Notation: r ÷ s
Suited to queries that include the
phrase “for all”.
●Let r and s be relations on schemas
R and S respectively where
●R = (A1, …, Am , B1, …, Bn )
●S = (B1, …, Bn)
*
Division Operation...
*
Division Operation – Example
● Relations r, s:
A B B
α 1
1
α 2
α 3 2
β 1 s
γ 1
δ 1
δ 3
δ 4
∈ 6
∈ 1
β 2
● r ÷ s: A r
α
β
*
Another Division Example
● Relations r, s:
A B C D E D E
α a α a 1 a 1
α a γ a 1 b 1
α a γ b 1 s
β a γ a 1
β a γ b 3
γ a γ a 1
γ a γ b 1
γ a β b 1
r
● r ÷ s:
A B C
α a γ
γ a γ
*
Division Operation (Cont.)
● Property
● Let q = r ÷ s
● Then q is the largest relation satisfying q x s ⊆ r
● Definition in terms of the basic algebra operation
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 ))
To see why
● ∏R-S,S (r) simply reorders attributes of r
*
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: Write r ÷ s as
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.
*
Bank Example Queries
● Find the names of all customers who have a loan and an account at
bank.
*
Bank Example Queries
●Find all customers who have an account from at
least the “Downtown” and the Uptown” branches.
Query 1co
*
Bank 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))
*
Extended Relational-Algebra-
Operations
●Generalized Projection
●Aggregate Functions
●Outer Join
*
Generalized Projection
●Extends the projection operation by allowing
arithmetic functions to be used in the projection
list.
*
Generalized Projection...
*
Figure 2.24: The credit_info
relation
*
Aggregate Functions and Operations
●Aggregate function takes a collection
of values and returns a single value as a
result.
avg: average value
min: minimum value
max: maximum value
sum: sum of values
count: number of values
*
Aggregate Functions and Operations..
*
Aggregate Operation – Example
●Relation r:
A B C
α α 7
α β 7
β β 3
β β 10
sum(c
● g sum(c) (r)
)
27
*
Aggregate Operation – Example
*
Aggregate Functions (Cont.)
●Result of aggregation does not have a
name
●Can use rename operation to give it a
name g (account)
branch_name sum(balance) as sum_balance
*
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
●All comparisons involving null are (roughly
speaking) false by definition.
*
Outer Join – Example
●Relation loan
branch_nam
loan_number amount
e
L-170 Downtown 3000
L-230 Redwood 4000
L-260 Perryridge 1700
● Relation borrower
customer_na
loan_number
me
Jones L-170
Smith L-230
Hayes L-155
*
Outer Join – Example
●Join
●loan borrower
customer_na
loan_number branch_name amount
me
L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith
*
Outer Join – Example
● Right Outer Join
loan borrower
customer_na
loan_number branch_name amount
me
L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith
L-155 null null Hayes
● Full Outer Join
loan borrower
customer_na
loan_number branch_name amount
me
L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith
L-260 Perryridge 1700 null
L-155 null null Hayes
*
Null Values
●It is possible for tuples to have a null
value, denoted by null, for some of
their attributes
●null signifies an unknown value or that
a value does not exist.
●The result of any arithmetic expression
involving null is null.
*
Null Values...
*
Null Values
●Comparisons with null values return the
special truth value: unknown
●If false was used instead of unknown, then
not (A < 5)
would not be equivalent to
A >= 5
●Three-valued logic using the truth value
unknown:
●OR: (unknown or true) = true,
(unknown or false) = unknown
*
Null Values...
(unknown or unknown) = unknown
- AND: (true and unknown) = unknown,
(false and unknown) = false,
(unknown and unknown) = unknown
- NOT: (not unknown) = unknown
In SQL “P is unknown” evaluates to true if
predicate P evaluates to unknown
- Result of select predicate is treated as
false if it evaluates to unknown
*
Null Values...
*
Null values...
*
Modification of the Database
●The content of the database may be
modified using the following
operations:
●Deletion
●Insertion
●Updating
●All these operations are expressed
using the assignment operator.
*
Deletion
●A delete request is expressed
similarly to a query, except instead
of displaying tuples to the user, the
selected tuples are removed from
the database.
●Can delete only whole tuples;
cannot delete values on only
particular attributes
*
Deletion...
*
Deletion Examples
●Delete all account records in the Perryridge
branch.
account ← account – σ branch_name = “Perryridge” (account )
*
Insertion Examples
●Insert information in the database specifying that
Smith has $1200 in account A-973 at the
Perryridge branch.
account ← account ∪ {(“A-973”, “Perryridge”, 1200)}
depositor ← depositor ∪ {(“Smith”, “A-973”)}
*
Updating
●A mechanism to change a value in a
tuple without charging all values in the
tuple
●Use the generalized projection operator
to do this task
Each Fi is either
●the I th attribute of r, if the I th attribute is not
updated, or
*
Updating...
*
Update Examples
●Make interest payments by increasing all balances by
5 percent.
account ← ∏ account_number, branch_name, balance * 1.05 (account)
● Pay all accounts with balances over $10,000 receive 6 percent interest
*
Tuple Relational Calculus
• Based on tuple variables
• It takes tuples of a specific relation as its values.
• It is used for selecting those tuples that satisfy
the given condition.
● A nonprocedural query language, where each
query is of the form
{t | P (t ) } {t | condition(t ) }
Tuple Relational Calculus
●It is the set of all tuples t such that
predicate P is true for t
●t is a tuple variable, t [A ] denotes the
value of tuple t on attribute A
●t ∈ r denotes that tuple t is in relation r
●P is a formula similar to that of the
predicate calculus
Predicate calculus Formula
1. Set of attributes and constants
2. Set of comparison operators:
(e.g., <, ≤, =, ≠, >, ≥)
3. Set of connectives: and (∧), or (v)
‚ not (¬)
4. Implication (⇒): x ⇒ y, if x is true,
then y is true
x ⇒ y ≡ ¬x v y
Cont..
• For eg. Retrive all books having
pagecount >200.
{t | Book (t) ∧ t. pagecount > 200}
Specify desired attributes to display
{t.ISBN,t.Booktitle,t.price] | Book(t) ∧
t.pagecount > 200}
Types of Quantifiers
x )}
n
● Find the names of all customers who have a loan of over $1200
x )}
n
*
Figure 2.6: The loan relation
*
relation
*
Figure 2.9
Result of σbranch_name = “Perryridge”
(loan)
*
Figure 2.10:
Loan number and the amount
of the loan
*
Figure 2.11: Names of all customers who
have either an account or an loan
*
Figure 2.12:
Customers with an account but
no loan
*
Figure 2.13: Result of borrower |X| loan
*
Figure 2.14
*
Figure 2.15
*
Figure 2.16
*
Largest account balance in the
bank
*
Figure 2.18: Customers who
live on the same street and in
the same city as Smith
*
Figure 2.19: Customers with
both an account and a loan at
the bank
*
Figure 2.20
*
Figure 2.21
*
Figure 2.22
*
Figure 2.23
*
Figure 2.26: The pt_works relation
*
Figure 2.25
*
Figure 2.27
The pt_works relation after
regrouping
*
Figure 2.28
*
Figure 2.29
*
Figure 2.30
The employee and ft_works relations
*
Figure 2.31
*
Figure 2.32
*
Figure 2.33
*
Figure 2.34