21
DBMS – Lecture 2 : Relational Algebra Lecture Plan Relational Algebra (operators) How it allows data independence For more visit: www.technotz.info

DBMS : Relational Algebra

Embed Size (px)

Citation preview

DBMS – Lecture 2 : Relational Algebra

Lecture Plan

• Relational Algebra (operators)

• How it allows data independence

For more visit: www.technotz.info

Recapitulate: Database Abstraction

• We have seen relational model as an abstraction.

• Q: How do we operate on the relations/tables? How do we access data?

Ans: Use a language such as:

- relational algebra

- SQL

For more visit: www.technotz.info

Relational Algebra

• Queries can be expressed in relational algebra

- To retrieve data from tables

• Five operators

- Project: Cutting a table vertically

- Restrict or Select: Cutting horizontally

- Cartesian-product: Putting two tables together

- Union: Adding rows

- Difference: Deleting rows

For more visit: www.technotz.info

Cuts a table vertically.

• Retrieves some (or all) columns from a table R

Example: Retrieve rollno and address of each student

PROJECT (rollno, name, student) or

student [rollno, name]

Project Operation

rollno name

123

45

Ram

Mohan

For more visit: www.technotz.info

From our familiar relation: student

rollno* name addr city birth date

123

45

Ram

Mohan

30 MG Marg

10 Laxmi Bai

Hyd

Dlh

83-06-21

83-09-26

For more visit: www.technotz.info

Project Operation: Definition • Definition

PROJECT (A1, ..., Ak, R)

or

R [A1, ..., Ak]

- A1 to Ak are attribute names,

- R is a relation/table.

* Result: A table with all the rows of R but only k attributes (A1 to Ak)

For more visit: www.technotz.info

Restrict or Select Operation Cutting a table horizontally

• Retrieves some (or all) of the rows from a table R. - Those that satisfy a given condition.

Ex. Retrieve information about the student with rollno 45

RESTRICT ((rollno = 45), student)

rollno* name addr city birth date

45 Mohan 10 Laxmi Bai Dlh 83-09-26

For more visit: www.technotz.info

Ex. Retrieve students from Hyderabad

RESTRICT (city = 'Hyd', student)

roll no* name addr city birth date

123 Ram 30 MG Marg

Hyd 83-06-21

For more visit: www.technotz.info

RESTRICT (F, R) • F is a condition, and R a table

• Condition F is: * Equality or inequality involving attributes and

values Ex. (A2 < 16) Ex. (A2 = A3)

* logical-and, logical-or or logical-not of conditions.

Ex. ( (A2 < 16) AND (A2 = A3) )

* Result: A table with all the attributes of R, but only those rows that satisfy condition.

For more visit: www.technotz.info

• Possible to combine the operations

Ex. Names of students from Hyderabad PROJECT (sname, RESTRICT (city = 'Hyd', student))

Ex. Names of students from Hyderabad with roll no. greater than 50

PROJECT (sname, RESTRICT ((city = 'Hyd') AND

(rollno > 50), student) )

Composition of Operations

name

Ram

- Above condition has logical-and For more visit: www.technotz.info

Cross Product (*)

• A "multiplication" of two relations (R, S):

R * S

- Let R have m attributes (A1 to Am) and r rows,

- Let S have n attributes (B1 to Bn) and s rows,

- Result of cross product (R * S) is a relation with (m+n) attributes: A1 ... Am, B1 ... Bn r * s rows

* Every row of R is pasted with every row of S.

For more visit: www.technotz.info

Cross Product Example

S = PROJECT (rollno, name, student)

S

roll no name

123 Ram

45 Mohan

enroll

cno* rollno* gradeIT365 123

IT355 45

IT365 45

IT340 123 For more visit: www.technotz.info

Cross-Product: S * register

rollno name cno* rollno* grade

123

123

123

123

45

45

45

45

Ram

Ram

Ram

Ram

Mohan

Mohan

Mohan

Mohan

IT365

IT355

IT365

IT340

IT365

IT355

IT365

IT340

123

45

45

123

123

45

45

123For more visit: www.technotz.info

Join Operation: Example Join relates rows of two tables on some columns.

Ex. Find rollno. and name of students enrolled in courses.

JOIN ((S.rollno = enroll.rollno), S, enroll) (where S is a projection of student as above)

rollno name cno grade

123

123

45

45

Ram

Ram

Mohan

Mohan

IT365

IT340

IT355

IT365

* Take the cross-product of: S and enroll * Keep only those rows where rollno is the same. * Do not keep two columns for rollno - Both have same value in each row Same as: PROJECT (rollno, name, cno, grade,

(continue...) For more visit: www.technotz.info

...continued

RESTRICT [ (S.rollno = enroll.rollno), S * enroll ] )

rollno name cno grade

123

123

45

45

Ram

Ram

Mohan

Mohan

IT365

IT340

IT355

IT365

For more visit: www.technotz.info

Join Operation: Definition

• Join of R1, R2 on some logic formula F:

JOIN (F, R1, R2)

• Join: is a combination of CROSS-PROD and RESTRICT.

The above is same as:

RESTRICT (F, R1 CROSS-PROD R2)

or

RESTRICT (F, R1 * R2) For more visit: www.technotz.info

Equi-join and Natural Join

• Equi-join: A join operation in which F contains equality only.

• Natural join: A join operation in which equi-join is performed over

the same column names across two relations. Example:

JOIN ((student.rollno = enroll.rollno), student, enroll)

same as: NATURAL-JOIN (student, enroll)

For more visit: www.technotz.info

Union (U) Operation • Takes two tables R and S (with same columns) and pastes them horizontally (rows add up): R U S

Ex. Students doing AI (IT365), and students doing DBMS (IT355) courses

PROJECT (rollno, RESTRICT (cno='IT365', enroll)) U

PROJECT (rollno, RESTRICT (cno='IT355', enroll))

U =rollno rollno rollno

123

4545

123

45For more visit: www.technotz.info

Difference (-) Operation

• Takes two tables R and S (with same columns) and removes rows of S from rows of R: R - S

Ex. Students doing AI (IT365) but not DBMS (IT355). ( PROJECT (rollno, RESTRICT (cno='IT365', enroll)) PROJECT (rollno, RESTRICT (cno='IT355', enroll)) )

rollno rollno rollno

123

4545 123

- =

For more visit: www.technotz.info

Rename Operation

• This is used to give new names to columns.

RENAME (A1 as B1, ... An as Bn, R)

- Attributes A's are renamed to B's.

For more visit: www.technotz.info

Conclusions • Relational algebra is a query language

- Allows us to access or retrieve data from tables

* Query is in terms of tables, attributes, etc.

- Is independent of physical representation

* Does not depend on what organization is used: What kinds of files are used ?

Whether sequential, b-tree, or hashed ?

• As a result: - When underlying file organization changed,

- queries need not change

For more visit: www.technotz.info