cloused

profileraghad_mm
IT403_Wk07_ch61.ppt

Database System Concepts, 6th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use

Chapter 6: Formal Relational Query Languages

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Chapter 6: Formal Relational Query Languages

  • Relational Algebra
  • Tuple Relational Calculus
  • Domain Relational Calculus

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Select Operation – Example

  • Relation r
  • A=B ^ D > 5 (r)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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:

     dept_name=“Physics”(instructor)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Project Operation – Example

  • Relation r:

A,C (r)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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
  • Duplicate rows removed from result, since relations are sets
  • Example: To eliminate the dept_name attribute of instructor

    ID, name, salary (instructor)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Union Operation – Example

  • Relations r, s:
  • r  s:

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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: 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 2009 semester, or in the Spring 2010 semester, or in both
    course_id ( semester=“Fall” Λ year=2009 (section)) 
    course_id ( semester=“Spring” Λ year=2010 (section))

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Set difference of two relations

  • Relations r, s:
  • r – s:

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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
  • 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))

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Cartesian-Product Operation – Example

  • Relations r, s:
  • r x s:

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Composition of Operations

  • Can build expressions using multiple operations
  • Example: A=C(r x s)

  • r x s
  • A=C(r x s)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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 A1 , A2 , …., An .

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Query

  • Find the largest salary in the university
  • Step 1: find instructor salaries that are less than some other instructor salary (i.e. not maximum)

using a copy of instructor under a new name d

  • instructor.salary ( instructor.salary < d,salary
    (instructor x d (instructor)))
  • Step 2: Find the largest salary
  • salary (instructor) –
    instructor.salary ( instructor.salary < d,salary
    (instructor x d (instructor)))

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Queries

  • 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))

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Set-Intersection Operation – Example

  • Relation r, s:

  • r  s

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Natural-Join Operation

  • Let r and s be relations on schemas R and S respectively.
    Then, r 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 tr on r
  • t has the same value as ts on s
  • Example:

R = (A, B, C, D)

S = (E, B, D)

  • Result schema = (A, B, C, D, E)
  • r s is defined as:
    r.A, r.B, r.C, r.D, s.E (r.B = s.B  r.D = s.D (r x s))
  • Notation: r s

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Natural Join Example

  • Relations r, s:
  • r s

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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.
  • We shall study precise meaning of comparisons with nulls later

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Outer Join – Example

  • Relation instructor1
  • Relation teaches1

ID

course_id

10101

12121

76766

CS-101

FIN-201

BIO-101

Comp. Sci.

Finance

Music

ID

dept_name

10101

12121

15151

name

Srinivasan

Wu

Mozart

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Outer Join – Example

  • Join

    instructor teaches
  • Left Outer Join

instructor teaches

ID

dept_name

10101

12121

Comp. Sci.

Finance

course_id

CS-101

FIN-201

name

Srinivasan

Wu

ID

dept_name

10101

12121

15151

Comp. Sci.

Finance

Music

course_id

CS-101

FIN-201

null

name

Srinivasan

Wu

Mozart

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Outer Join – Example

  • Full Outer Join

instructor teaches

  • Right Outer Join

instructor teaches

ID

dept_name

10101

12121

76766

Comp. Sci.

Finance

null

course_id

CS-101

FIN-201

BIO-101

name

Srinivasan

Wu

null

ID

dept_name

10101

12121

15151

76766

Comp. Sci.

Finance

Music

null

course_id

CS-101

FIN-201

null

BIO-101

name

Srinivasan

Wu

Mozart

null

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Outer Join using Joins

  • Outer join can be expressed using basic operations
  • e.g. r s can be written as

(r s) U (r – ∏R(r s) x {(null, …, null)}

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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
  • 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

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Division Operator

  • Given relations r(R) and s(S), such that S  R, r  s is the largest relation t(R-S) such that
    t x s  r
  • E.g. let r(ID, course_id) = ID, course_id (takes ) and
    s(course_id) = course_id (dept_name=“Biology”(course )
    then r  s gives us students who have taken all courses in the Biology department
  • Can 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.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Extended Relational-Algebra-Operations

  • Generalized Projection
  • Aggregate Functions

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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 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)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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

  • G1, G2 …, Gn is a list of attributes on which to group (can be empty)
  • Each Fi is an aggregate function
  • Each Ai is an attribute name
  • Note: Some books/articles use  instead of (Calligraphic G)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Aggregate Operation – Example

  • Relation r:

A

B

C

7

7

3

10

  • sum(c) (r)

sum(c )

27

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Aggregate Operation – Example

  • Find the average salary in each department

dept_name avg(salary) (instructor)

avg_salary

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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

dept_name avg(salary) as avg_sal (instructor)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Modification of the Database

  • The content of the database may be modified using the following operations:
  • Deletion
  • Insertion
  • Updating
  • All these operations can be expressed using the assignment operator

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Multiset Relational Algebra

  • Pure relational algebra removes all duplicates
  • e.g. after projection
  • Multiset relational algebra retains duplicates, to match SQL semantics
  • SQL duplicate retention was initially for efficiency, but is now a feature
  • Multiset relational algebra defined as follows
  • selection: has as many duplicates of a tuple as in the input, if the tuple satisfies the selection
  • projection: one tuple per input tuple, even if it is a duplicate
  • cross product: If there are m copies of t1 in r, and n copies of t2 in s, there are m x n copies of t1.t2 in r x s
  • Other operators similarly defined
  • E.g. union: m + n copies, intersection: min(m, n) copies
    difference: min(0, m – n) copies

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

SQL and Relational Algebra

  • select A1, A2, .. An
    from r1, r2, …, rm
    where P

is equivalent to the following expression in multiset relational algebra

 A1, .., An ( P (r1 x r2 x .. x rm))

  • select A1, A2, sum(A3)
    from r1, r2, …, rm
    where P
    group by A1, A2

is equivalent to the following expression in multiset relational algebra

A1, A2 sum(A3) ( P (r1 x r2 x .. x rm)))

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

SQL and Relational Algebra

  • More generally, the non-aggregated attributes in the select clause may be a subset of the group by attributes, in which case the equivalence is as follows:

    select A1, sum(A3)
    from r1, r2, …, rm
    where P
    group by A1, A2

is equivalent to the following expression in multiset relational algebra

 A1,sumA3( A1,A2 sum(A3) as sumA3( P (r1 x r2 x .. x rm)))

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Tuple Relational Calculus

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Tuple Relational Calculus

  • A nonprocedural query language, where each query is of the form

{t | P (t ) }

  • 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

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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 if true, then y is true

x  y x v y

5. Set of quantifiers:

t r (Q (t )) ”there exists” a tuple in t in relation r
such that predicate Q (t ) is true

t r (Q (t )) Q is true “for all” tuples t in relation r

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Queries

  • Find the ID, name, dept_name, salary for instructors whose salary is greater than $80,000
  • As in the previous query, but output only the ID attribute value

{t |  s instructor (t [ID ] = s [ID ]  s [salary ]  80000)}

Notice that a relation on schema (ID) is implicitly defined by

the query

{t | t  instructor  t [salary ]  80000}

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Queries

  • Find the names of all instructors whose department is in the Watson building

{t | s  section (t [course_id ] = s [course_id ] 
s [semester] = “Fall”  s [year] = 2009
v u  section (t [course_id ] = u [course_id ] 
u [semester] = “Spring”  u [year] = 2010)}

  • Find the set of all courses taught in the Fall 2009 semester, or in
    the Spring 2010 semester, or both

{t | s  instructor (t [name ] = s [name ]
 u  department (u [dept_name ] = s[dept_name] “
 u [building] = “Watson” ))}

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Queries

{t | s  section (t [course_id ] = s [course_id ] 
s [semester] = “Fall”  s [year] = 2009
 u  section (t [course_id ] = u [course_id ] 
u [semester] = “Spring”  u [year] = 2010)}

  • Find the set of all courses taught in the Fall 2009 semester, and in
    the Spring 2010 semester

{t | s  section (t [course_id ] = s [course_id ] 
s [semester] = “Fall”  s [year] = 2009
  u  section (t [course_id ] = u [course_id ] 
u [semester] = “Spring”  u [year] = 2010)}

  • Find the set of all courses taught in the Fall 2009 semester, but not in
    the Spring 2010 semester

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Safety of Expressions

  • It is possible to write tuple calculus expressions that generate infinite relations.
  • For example, { t |  t r } results in an infinite relation if the domain of any attribute of relation r is infinite
  • To guard against the problem, we restrict the set of allowable expressions to safe expressions.
  • An expression {t | P (t )} in the tuple relational calculus is safe if every component of t appears in one of the relations, tuples, or constants that appear in P
  • NOTE: this is more than just a syntax condition.
  • E.g. { t | t [A] = 5  true } is not safe --- it defines an infinite set with attribute values that do not appear in any relation or tuples or constants in P.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Universal Quantification

  • Find all students who have taken all courses offered in the Biology department
  • {t |  r  student (t [ID] = r [ID]) 
    ( u  course (u [dept_name]=“Biology” 
     s  takes (t [ID] = s [ID ] 
    s [course_id] = u [course_id]))}
  • Note that without the existential quantification on student, the above query would be unsafe if the Biology department has not offered any courses.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Domain Relational Calculus

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Domain Relational Calculus

  • A nonprocedural query language equivalent in power to the tuple relational calculus
  • Each query is an expression of the form:

{  x1, x2, …, xn  | P (x1, x2, …, xn)}

  • x1, x2, …, xn represent domain variables
  • P represents a formula similar to that of the predicate calculus

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Queries

  • Find the ID, name, dept_name, salary for instructors whose salary is greater than $80,000
  • {< i, n, d, s> | < i, n, d, s>  instructor  s  80000}
  • As in the previous query, but output only the ID attribute value
  • {< i> | < i, n, d, s>  instructor  s  80000}
  • Find the names of all instructors whose department is in the Watson building

{< n > |  i, d, s (< i, n, d, s >  instructor
  b, a (< d, b, a>  department  b = “Watson” ))}

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Queries

{<c> |  a, s, y, b, r, t ( <c, a, s, y, b, t >  section 
s = “Fall”  y = 2009 )
v  a, s, y, b, r, t ( <c, a, s, y, b, t >  section ] 
s = “Spring”  y = 2010)}

  • Find the set of all courses taught in the Fall 2009 semester, or in
    the Spring 2010 semester, or both

This case can also be written as
{<c> |  a, s, y, b, r, t ( <c, a, s, y, b, t >  section 
( (s = “Fall”  y = 2009 ) v (s = “Spring”  y = 2010))}

  • Find the set of all courses taught in the Fall 2009 semester, and in
    the Spring 2010 semester

{<c> |  a, s, y, b, r, t ( <c, a, s, y, b, t >  section 
s = “Fall”  y = 2009 )
  a, s, y, b, r, t ( <c, a, s, y, b, t >  section ] 
s = “Spring”  y = 2010)}

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Safety of Expressions

The expression:

{  x1, x2, …, xn  | P (x1, x2, …, xn )}

is safe if all of the following hold:

All values that appear in tuples of the expression are values from dom (P ) (that is, the values appear either in P or in a tuple of a relation mentioned in P ).

For every “there exists” subformula of the form  x (P1(x )), the subformula is true if and only if there is a value of x in dom (P1) such that P1(x ) is true.

For every “for all” subformula of the form x (P1 (x )), the subformula is true if and only if P1(x ) is true for all values x from dom (P1).

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Universal Quantification

  • Find all students who have taken all courses offered in the Biology department
  • {< i > |  n, d, tc ( < i, n, d, tc >  student 
    ( ci, ti, dn, cr ( < ci, ti, dn, cr >  course  dn =“Biology”
      si, se, y, g ( <i, ci, si, se, y, g>  takes ))}
  • Note that without the existential quantification on student, the above query would be unsafe if the Biology department has not offered any courses.

* Above query fixes bug in page 246, last query

Database System Concepts, 6th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use

End of Chapter 6

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.01

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.02

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.03

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.04

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.05

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.06

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.07

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.08

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.09

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.10

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.11

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.12

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.13

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.14

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.15

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.16

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.17

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.18

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.19

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.20

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Figure 6.21

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Deletion Examples

  • Delete all account records in the Perryridge branch.
  • Delete all accounts at branches located in Needham.
  • Delete all loan records with amount in the range of 0 to 50

loan  loan – amount 0and amount  50 (loan)

account  account – branch_name = “Perryridge” (account )

r1  branch_city = “Needham” (account branch )

r2   account_number, branch_name, balance (r1)

r3   customer_name, account_number (r2 depositor)

account  account – r2

depositor  depositor – r3

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Insertion Examples

  • Insert information in the database specifying that Smith has $1200 in account A-973 at the Perryridge branch.
  • Provide as a gift for all loan customers in the Perryridge
    branch, a $200 savings account. Let the loan number serve
    as the account number for the new savings account.

account  account  {(“A-973”, “Perryridge”, 1200)}

depositor  depositor  {(“Smith”, “A-973”)}

r1  (branch_name = “Perryridge” (borrower loan))

account  account  loan_number, branch_name, 200 (r1)

depositor  depositor  customer_name, loan_number (r1)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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 Fi is an expression, involving only constants and the attributes of r, which gives the new value for the attribute

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Update Examples

  • Make interest payments by increasing all balances by 5 percent.
  • 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))

account   account_number, branch_name, balance * 1.05 (account)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Queries

  • Find the name of all customers who have a loan at the bank and the loan amount
  • Find the names of all customers who have a loan and an account at bank.

customer_name (borrower)  customer_name (depositor)

customer_name, loan_number, amount (borrower loan)

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

Example Queries

  • Find all customers who have an account from at least the “Downtown” and the Uptown” branches.
  • Query 1

customer_name (branch_name = “Downtown” (depositor account )) 

customer_name (branch_name = “Uptown” (depositor account))

  • Query 2

customer_name, branch_name (depositor account)
 temp(branch_name) ({(“Downtown” ), (“Uptown” )})

Note that Query 2 uses a constant relation.

©Silberschatz, Korth and Sudarshan

6.*

Database System Concepts - 6th Edition

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))

)

(

,

,

2

,

1

r

k

A

A

A

K

Õ

)

(

,...,

,

2

1

E

n

F

F

F

Õ

)

(

)

,...,

2

,

1

(

E

n

A

A

A

x

r

)

(

)

(

,

,

(

),

(

,

,

,

2

2

1

1

2

1

E

n

n

n

A

F

A

F

A

F

G

G

G

K

K

g

)

(

,

,

,

,

2

1

r

r

l

F

F

F

K

Õ

¬

)

(

)

(

,

,

(

),

(

,

,

,

2

2

1

1

2

1

E

n

n

n

A

F

A

F

A

F

G

G

G

K

K