Lecture 06 relational algebra and calculus

30
Lecture 6 Relational Algebra And Calculus

Transcript of Lecture 06 relational algebra and calculus

Page 1: Lecture 06 relational algebra and calculus

Lecture 6

Relational Algebra And Calculus

Page 2: Lecture 06 relational algebra and calculus

Data Manipulation Languages

• In order for a database to be useful, it should be possible to store and retrieve information from it. This is the role of the data manipulation language.

• One of the attractions of the relational data model is that

it comes with a well-defined data manipulation language.

Page 3: Lecture 06 relational algebra and calculus

Types of DML

• Two types of data manipulation languages– Navigational (procedural)

• The query specifies (to some extent) the strategy used to find the desired result e.g. relational algebra.

– Non-navigational(non-procedural)• The query only specifies what data is wanted, not

how to find it e.g. relational calculus.

Page 4: Lecture 06 relational algebra and calculus

Relational Algebra

• Codd defined a number of algebraic operations for the relational model.

• Unary operations take as input a single table and produce as output another table.

• Binary operations take as input two tables and produce as output another table.

Page 5: Lecture 06 relational algebra and calculus

Types of Relational

• Traditional Set Operation– Union– Intersection– Difference– Cartesian product

• Special Operations– Selection– Projection– Join– Division

Page 6: Lecture 06 relational algebra and calculus

Unary Operations: Select

• Select produces a table that only contains the tuples that satisfy a particular condition, in other words a “horizontal” subset.

• Appearance:C(R) Sigma

– where C is a selection condition– and R is the relation over which the selection

takes place

Page 7: Lecture 06 relational algebra and calculus

Example of SelectStudent

sid name addr

123 Fred 3 Oxford

345 John 6 Hope Rd.

567 Ann 5 Garden

sid > 300(Student) yields

345 John 6 Hope Rd.

567 Ann 5 Garden

Page 8: Lecture 06 relational algebra and calculus

Unary Operations:Project

• Project produces a table consisting of only some of the attributes. It creates a “vertical” subset.

• Note that a project eliminates duplicates.• Appearance:

ПA(R) П=Pi

– where A is a set of attributes of R– and R is the relation over which the project

takes place.

Page 9: Lecture 06 relational algebra and calculus

Example of ProjectEnrol

sid cid grade

123 CS51T 76

234 CS52S 50

345 CS52S 55

Пcid(Enrol) yields

CS51T

CS52S

Page 10: Lecture 06 relational algebra and calculus

Binary Operations

• Two relations are (union) compatible if they have the same set of attributes.

• Example, one table may represent suppliers in one country, while another table with same schema represents suppliers in another country.

• For the union, intersection and set-difference operations, the relations must be compatible.

Page 11: Lecture 06 relational algebra and calculus

Union, Intersection, Set-difference

• R1 R2– The union is the table comprised of all tuples in

R1 or R2.

• R1 R2– The intersection is the table comprised of all

tuples in R1 and R2

• R1 - R2– The set-difference between R1 and R2 is the

table consisting of all tuples in R1 but not in R2.

Page 12: Lecture 06 relational algebra and calculus

Cartesian Product

• R1 R2– The Cartesian product is the table consisting

of all tuples formed by concatenating each tuple in R1 with a tuple in R2, for all tuples in R2.

Page 13: Lecture 06 relational algebra and calculus

Example of a Cartesian Product

R1 A B

1 x

2 y

R2 C D

a s

b t

c u

R1 R2 A B C D

1 x a s

1 x b t

1 x c u

2 y a s

2 y b t

2 y c u

Page 14: Lecture 06 relational algebra and calculus

Natural Join• R1 R2

– Assume R1 and R2 have attributes A in common. Natural join is formed by concatenating all tuples from R1 and R2 with same values for A, and dropping the occurrences of A in R2

– R1 R2 = ПA’(C(R1 R2))• where C is the condition that the values for R1 and R2

are the same for all attributes in A and A’ is all attributes in R1 and R2 apart from the occurrences of A in R2.

• hence, natural join is syntactic sugar

Page 15: Lecture 06 relational algebra and calculus

Example of a Natural Join ICourse

cid title eid

CS51T DBMS 123

CS52S OS 345

CS52T Networking 345

CS51S ES 456

Instructor

eid ename

123 Rao

345 Allen

456 Mansingh

Page 16: Lecture 06 relational algebra and calculus

Example of a Natural Join II

Course Instructorcid title eid ename

CS51T DBMS 123 Rao

CS52S OS 345 Allen

CS52T Net... 345 Allen

CS51S ES 456 Mansingh

Page 17: Lecture 06 relational algebra and calculus

Division

• R1 R2– Assume that the schema for R2 is a proper

subset of the one for R1.– We form the division by

• Ordering the tuples in R1 so that all the tuples with the same value for the non-common attributes are grouped together.

• Each group contributes a tuple to the result if the group’s values on the common attributes form a superset of the values of these attributes in R2.

Page 18: Lecture 06 relational algebra and calculus

Example of Division I

Enrol cid sid grade

CS51T 123 A

CS52S 123 A

CS51T 234 C

CS52S 234 B

CS51T 345 C

CS52S 345 C

Temp sid grade

123 A

234 B

Page 19: Lecture 06 relational algebra and calculus

Example of Division II

Enrol cid sid grade

CS51T 123 A

CS51T 234 C

CS51T 345 C

CS52S 123 A

CS52S 234 B

CS52S 345 C

Enrol Temp cid

CS52S

• Thus, the division gives all courses for which 123 got an A and 234 a B.

Page 20: Lecture 06 relational algebra and calculus

Assignment • Allows the expression to be written in parts.• Assigns the part to a temporary variable.• This variable can be used in subsequent

expressions.• E.g.

sid(title = ‘DBMS’ (Enrol Course)

– Could be re-written as:• r Enrol Coursesid(title = ‘DBMS’(r))

Page 21: Lecture 06 relational algebra and calculus

Database Modification• Insert

– r r E– e.g.

• Course Course {(‘CS51T’,’DBMS’)}

• Delete– r r - E– e.g.

• Student Student - sid=‘1’(Student)

• Update

– r F1,F2,…,Fn

(r)

– e.g.• Enrol sid,cid,grade grade + 2 (Enrol)

Page 22: Lecture 06 relational algebra and calculus

Examples

• Assume the following schema: Student(sid,sname,saddr)

Course(cid,title,lid)Enrol(sid, cid, grade)Lecturer(lid,lname,deptname)

• Query 1: Find the name of all students that have taken the course entitled ‘Expert Systems’.

• Query 2: Find the titles of all courses that student ‘Mark Smith’ has done.

• Query 3: Find the id of students that have enrolled in all the courses that lecturer with id. = ‘234’ has taught.

• Query 4: Find the highest grade for ‘CS51T’.

Page 23: Lecture 06 relational algebra and calculus

Relational Calculus

• A relational calculus expression defines a new relation in terms of other relations.

• A tuple variable ranges over a named relation. So, its values are tuples from that relation.

• Example:– Get grades for CS51T e(Enrol)

{<e.grade>: e.cid = ‘CS51T’ }

Page 24: Lecture 06 relational algebra and calculus

Basic Syntax for Relational Calculus Expressions

r(R),…,s(S)

{ <target> : predicate}

• where– R,..,S are tables– r,..,s are tuple variables– target specifies the attributes of the resulting

relation– predicate is a formula giving a condition that tuples

must satisfy to qualify for the resulting relation.

Page 25: Lecture 06 relational algebra and calculus

The Predicate

• Predicate is constructed from– attribute names– constants– comparison operators

– logical connectives

– quantified tuple variables

t(R), t(R)

Page 26: Lecture 06 relational algebra and calculus

Examples of Relational Calculus

• Example 2– Get names and grades for students enrolled in

CS51Te(Enrol), s(Student)

{<s.name, e.grade>:

e.cid = ‘CS51T’ s.sid = e.sid}

• In relation algebraПcid, name( CID =‘ CS51T’(Grade Student))

Page 27: Lecture 06 relational algebra and calculus

Example 3

• Give the names of all students who got at least one A. s(Student)

{<s.name>:

e(Enrol)

(e.grade = ‘A’ s.sid = e.sid)}

• Tuple variables not mentioned in the target list must be bound in the predicate.

Page 28: Lecture 06 relational algebra and calculus

Example 4

• Get the names of all students who only got A’s s(Student)

{<s.name>:

e(Enrol)( s.sid = e.sid e.grade = ‘A’)

e2(Enrol) (s.sid = e2.sid)}

Page 29: Lecture 06 relational algebra and calculus

Example 5

• Get the names of all students who got an A and a B s(Student)

{<s.name>:

e(Enrol) (e.grade = ‘B’ s.sid = e.sid)

e2(Enrol) (e2.grade = ‘A’

s.sid = e2.sid)}

Page 30: Lecture 06 relational algebra and calculus

Example 6

• Get the course titles and names for the courses for which the student did not get an A c(Course), s(Student)

{<s.name, c.title>:

g(Enrol) s.sid = g.sid g.cid = c.cid

g.grade ‘A’}