Chapter 2: Relational Model
Database System Concepts, 5 th Ed.
©Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-
use
Outlines
● Structure of Relational Databases
● Fundamental Relational-Algebra-Operations
● Extended Relational-Algebra-Operations
● Null Values
● Modification of the Database
Database System Concepts - 5 th Edition, Oct 5, 2.2 ©Silberschatz, Korth and
Example of a Relation
Database System Concepts - 5 th Edition, Oct 5, 2.3 ©Silberschatz, Korth and
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, a 2, …, an) where each ai ∈ Di
● Example: If
● customer_name = {Jones, Smith, Curry, Lindsay, …}
/* Set of all customer names */
● customer_street = {Main, North, Park, …} /* set of all street names*/
● customer_city = {Harrison, Rye, Pittsfield, …} /* set of all city names */
Then r = { (Jones, Main, Harrison),
(Smith, North, Rye),
(Curry, North, Rye),
(Lindsay, Park, Pittsfield) }
is a relation over
customer_name x customer_street x customer_city
Database System Concepts - 5 th Edition, Oct 5, 2.4 ©Silberschatz, Korth and
Attribute Types
● Each attribute of a relation has a name
● 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
● E.g. the value of an attribute can be an account number,
but cannot be a set of account numbers
● 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
Database System Concepts - 5 th Edition, Oct 5, 2.5 ©Silberschatz, Korth and
Relation Schema
● A 1, A 2, …, A n are attributes
● R = (A 1, A 2, …, A n ) 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)
Database System Concepts - 5 th Edition, Oct 5, 2.6 ©Silberschatz, Korth and
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
Jones Main Harrison
Smith North Rye tuples
Curry North Rye (or rows)
Lindsay Park Pittsfield
custome
r
Database System Concepts - 5 th Edition, Oct 5, 2.7 ©Silberschatz, Korth and
Relations are Unordered
● Order of tuples is irrelevant (tuples may be stored in an arbitrary order)
● Example: account relation with unordered tuples
Database System Concepts - 5 th Edition, Oct 5, 2.8 ©Silberschatz, Korth and
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
account : stores information about accounts
depositor : stores information about which customer
owns which account
customer : stores information about customers
● Storing all information as a single relation such as
bank(account_number, balance, customer_name, ..)
results in
● repetition of information
4 e.g.,if two customers own an account (What gets repeated?)
● the need for null values
4 e.g., to represent a customer without an account
● Normalization theory (Chapter 7) deals with how to design relational schemas
Database System Concepts - 5 th Edition, Oct 5, 2.9 ©Silberschatz, Korth and
The customer Relation
Database System Concepts - 5 th Edition, Oct 5, 2.10 ©Silberschatz, Korth and
The depositor Relation
Database System Concepts - 5 th Edition, Oct 5, 2.11 ©Silberschatz, Korth and
Keys
● Let K ⊆ R
● K is a super key 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 super keys of Customer, if no two customers can possibly
have the same name
4 In real life, an attribute such as customer_id would be used instead
of customer_name to uniquely identify customers, but we omit it to
keep our examples small, and instead assume customer names are
unique.
Database System Concepts - 5 th Edition, Oct 5, 2.12 ©Silberschatz, Korth and
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
Database System Concepts - 5 th Edition, Oct 5, 2.13 ©Silberschatz, Korth and
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
Database System Concepts - 5 th Edition, Oct 5, 2.14 ©Silberschatz, Korth and
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.
Database System Concepts - 5 th Edition, Oct 5, 2.15 ©Silberschatz, Korth and
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.
Database System Concepts - 5 th Edition, Oct 5, 2.16 ©Silberschatz, Korth and
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
Database System Concepts - 5 th Edition, Oct 5, 2.17 ©Silberschatz, Korth and
Select Operation
● Notation: σ p(r)
● p is called the selection predicate
● Defined as:
σp(r) = {t | t ∈ r and p(t)}
Where p is a formula in propositional calculus consisting of terms
connected by : ∧ (and), ∨ (or), ¬ (not)
Each term is one of:
<attribute> op <attribute> or <constant>
where op is one of: =, ≠, >, ≥. <. ≤
● Example of selection:
σ branch_name=“Perryridge” (account)
Database System Concepts - 5 th Edition, Oct 5, 2.18 ©Silberschatz, Korth and
Project Operation – Example
● Relation r: A B C
α 10 1
α 20 1
β 30 1
β 40 2
∏A,C (r) A C A C
α 1 α 1
α 1 = β 1
β 1 β 2
β 2
Database System Concepts - 5 th Edition, Oct 5, 2.19 ©Silberschatz, Korth and
Project Operation
● Notation:
where A 1, 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
● Example: To eliminate the branch_name attribute of account
∏account_number, balance (account)
Database System Concepts - 5 th Edition, Oct 5, 2.20 ©Silberschatz, Korth and
Union Operation – Example
● Relations r, s: A B A B
α 1 α 2
α 2 β 3
β 1
s
r
A B
● r ∪ s: α 1
α 2
β 1
β 3
Database System Concepts - 5 th Edition, Oct 5, 2.21 ©Silberschatz, Korth and
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)
2. The attribute domains must be compatible (example: 2 nd column
of r deals with the same type of values as does the 2 nd
column of s)
● Example: to find all customers with either an account or a loan
∏customer_name (depositor) ∪ ∏ customer_name (borrower)
Database System Concepts - 5 th Edition, Oct 5, 2.22 ©Silberschatz, Korth and
Set Difference Operation – Example
● Relations r, s:
A B A B
α 1 α 2
α 2 β 3
β 1
s
r
● r – s:
A B
α 1
β 1
Database System Concepts - 5 th Edition, Oct 5, 2.23 ©Silberschatz, Korth and
Set Difference Operation
● Notation r – s
● Defined as:
r – s = {t | t ∈ r and t ∉ 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
Database System Concepts - 5 th Edition, Oct 5, 2.24 ©Silberschatz, Korth and
Cartesian-Product Operation – Example
● Relations r, s:
A B C D E
α 1 α 10 a
β 2 β 10 a
β 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
Database System Concepts - 5 th Edition, Oct 5, 2.25 ©Silberschatz, Korth and
Cartesian-Product Operation
● Notation r x s
● Defined as:
r x s = {t q | t ∈ r and q ∈ s}
● Assume that attributes of r(R) and s(S) are disjoint. (That is, R ∩ S =∅ ).
● If attributes of r(R) and s(S) are not disjoint, then renaming must be
used.
Database System Concepts - 5 th Edition, Oct 5, 2.26 ©Silberschatz, Korth and
Composition of Operations
● Can build expressions using multiple operations
● Example: σ A=C(r x s)
● rx 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
● σA=C(r x s)
A B C D E
α 1 α 10 a
β 2 β 10 a
β 2 β 20 b
Database System Concepts - 5 th Edition, Oct 5, 2.27 ©Silberschatz, Korth and
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)
returns the expression E under the name X
● If a relational-algebra expression E has arity n, then
returns the result of expression E under the name X, and with the
attributes renamed to A 1 , A2 , …., An .
Database System Concepts - 5 th Edition, Oct 5, 2.28 ©Silberschatz, Korth and
Banking Example
branch (branch_name, branch_city,
assets)
customer (customer_name,
customer_street, customer_city)
account (account_number,
branch_name, balance)
loan (loan_number, branch_name,
amount)
depositor (customer_name,
account_number)
borrower (customer_name,
loan_number)
Database System Concepts - 5 th Edition, Oct 5, 2.29 ©Silberschatz, Korth and
Example Queries
● Find all loans of over $1200
σamount > 1200 (loan)
● Find the loan number for each loan of an amount greater than
$1200
∏ loan_number (σ amount > 1200 (loan))
● Find the names of all customers who have a loan, an account, or
both, from the bank
∏customer_name (borrower) ∪ ∏ customer_name (depositor)
Database System Concepts - 5 th Edition, Oct 5, 2.30 ©Silberschatz, Korth and
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)))
● Find the names of all customers who have a loan at the
Perryridge branch but do not have an account at any branch of
the bank.
∏customer_name ( σbranch_name = “Perryridge”
( σborrower.loan_number = loan.loan_number (borrower x loan))) –
∏ customer_name (depositor)
Database System Concepts - 5 th Edition, Oct 5, 2.31 ©Silberschatz, Korth and
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
● E1 – E2
● E1 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
Database System Concepts - 5 th Edition, Oct 5, 2.32 ©Silberschatz, Korth and
Extended Relational-Algebra-Operations
● Generalized Projection
● Aggregate Functions
Database System Concepts - 5 th Edition, Oct 5, 2.33 ©Silberschatz, Korth and
Generalized Projection
● Extends the projection operation by allowing arithmetic functions to be
used in the projection list.
● E is any relational-algebra expression
● Each of F1, F2, …, Fn are are arithmetic expressions involving
constants and attributes in the schema of E.
● Given relation credit_info(customer_name, limit, credit_balance), find
how much more each person can spend:
∏ customer_name, limit – credit_balance (credit_info)
Database System Concepts - 5 th Edition, Oct 5, 2.34 ©Silberschatz, Korth and
Aggregate Functions and Operations
● Aggregation 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 operation in relational algebra
E is any relational-algebra expression
● G 1, G 2 …, G n is a list of attributes on which to group (can be empty)
● Each Fi is an aggregate function
● Each A i is an attribute name
Database System Concepts - 5 th Edition, Oct 5, 2.35 ©Silberschatz, Korth and
Aggregate Operation – Example
● Relation r:
A B C
α α 7
α β 7
β β 3
β β 10
sum(c
● g sum(c ) (r)
)
27
Database System Concepts - 5 th Edition, Oct 5, 2.36 ©Silberschatz, Korth and
Aggregate Operation – Example
● Relation account grouped by branch-name:
account_numb
branch_name balance
er
Perryridge A-102 400
Perryridge A-201 900
Brighton A-217 750
Brighton A-215 750
Redwood A-222 700
branch_name g sum(balance) ( account )
branch_name sum(balance)
Perryridge 1300
Brighton 1500
Redwood 700
Database System Concepts - 5 th Edition, Oct 5, 2.37 ©Silberschatz, Korth and
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
branch_name g sum(balance) as sum_balance ( account )
Database System Concepts - 5 th Edition, Oct 5, 2.38 ©Silberschatz, Korth and
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.
● Aggregate functions simply ignore null values (as in SQL)
● For duplicate elimination and grouping, null is treated like any
other value, and two nulls are assumed to be the same (as in
SQL)
Database System Concepts - 5 th Edition, Oct 5, 2.39 ©Silberschatz, Korth and
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
(unknown or unknown) = unknown
● AND: (true and unknown) = unknown,
(false and unknown) = false,
(unknown and unknown) = unknown
● NOT: (not unknown) = unknown
Database System Concepts - 5 th Edition, Oct 5, 2.40 ©Silberschatz, Korth and
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.
Database System Concepts - 5 th Edition, Oct 5, 2.41 ©Silberschatz, Korth and
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
● A deletion is expressed in relational algebra by:
r←r–E
where r is a relation and E is a relational algebra query.
Database System Concepts - 5 th Edition, Oct 5, 2.42 ©Silberschatz, Korth and
Deletion Examples
● Delete all account records in the Perryridge branch.
account ← account – σ branch_name = “Perryridge” (account )
● Delete all loan records with amount in the range of 0 to 50
loan ← loan – σ amount ≥ 0 and amount ≤ 50 (loan)
Database System Concepts - 5 th Edition, Oct 5, 2.43 ©Silberschatz, Korth and
Insertion
● To insert data into a relation, we either:
● specify a tuple to be inserted
● write a query whose result is a set of tuples to be inserted
● in relational algebra, an insertion is expressed by:
r← r ∪ E
where r is a relation and E is a relational algebra expression.
● The insertion of a single tuple is expressed by letting E be a constant
relation containing one tuple.
Database System Concepts - 5 th Edition, Oct 5, 2.44 ©Silberschatz, Korth and
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”)}
Database System Concepts - 5 th Edition, Oct 5, 2.45 ©Silberschatz, Korth and
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,
● if the attribute is to be updated F i is an expression, involving only
constants and the attributes of r, which gives the new value for the
attribute
Database System Concepts - 5 th Edition, Oct 5, 2.46 ©Silberschatz, Korth and
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 6 percent interest
and pay all others 5 percent
account ← ∏ account_number, branch_name, balance * 1.06 (σ BAL > 10000 (account ))
∪ ∏ account_number, branch_name, balance * 1.05 (σBAL ≤ 10000 (account))
Database System Concepts - 5 th Edition, Oct 5, 2.47 ©Silberschatz, Korth and
End of Chapter 2
Database System Concepts, 5 th Ed.
©Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-
use
Database System Concepts - 5 th Edition, Oct 5, 2.49 ©Silberschatz, Korth and