Download presentation
Presentation is loading. Please wait.
1
RELATIONAL ALGEBRA Prof. Sin-Min LEE Department of Computer Science
2
Terminology: ztable (relation) zrow (tuple) yformally, a relation is a set of ordered n- tuples. Domain : set of data values from which an attribute value can be drawn. Eg. yset of department names yset of legal salaries yset of possible employee birth dates
3
If D 1, D 2, D 3 ……. D n are the domains of a relation R. Then, R D 1 x D 2 x D 3 x ………..x D n.
4
What are the query languages? zIt is an abstract language. We use it to express the set of operations that any relational query language must perform. zTwo types of operations: z 1.set-theoretic operations: tables are essentially sets of rows 2.native relational operations: focus on the structure of the rows Query languages are specialized languages for asking questions,or queries,that involve the data in database.
5
Database Scheme A relational database scheme, or schema, corresponds to a set of table definitions. Eg: product(p_id, name, category, description) supply(p_id, s_id, qnty_per_month) supplier(s_id, name, address, ph#) * remember the difference between a DB instance and a DB scheme.
6
Keys zThe super key, candidate key and primary key notations presented for ER model apply for relational model also.
7
Query languages zprocedural vs. non-procedural zcommercial languages have some of both zwe will study: yrelational algebra ( which is procedural, i.e. tells you how to process a query ) yrelational calculus ( which is non-procedural i.e. tells what you want )
9
Relational Algebra Fundamental operators select project zcartesian product zunion zset difference - Other operators znatural join JOIN (butterfly symbol) zset intersection zdivision
10
A Simple DB account ac# owner ss# balance 1 bob 123 1000 2 sue 456 2000 3 jane 789 3000 transaction t# ac# type amount outcome date 1 1 W 1500 bounced 5/1/98 2 2 D 1000 ok 5/2/98 3 1 W 100 ok 5/4/98 4 3 D 500 ok 5/7/98 5 2 W 200 ok 5/9/98 account had transaction
11
Select eg: balance>=1500 account result : ac# owner ss# balance 2 sue 456 2000 3 jane 789 3000 Project eg: π owner, ss# account result: owner ss# bob 123 sue 456 jane 789
13
Cartesian product eg: account transaction ythis will have 15 rows like the ones shown below: ac# owner ss# balance t# type amount outcome date 1 bob 123 1000 1 W 1500 bounced 5/1/98 2 sue 456 2000 2 D 1000 ok 5/2/98 …………… Composing operations eg: “show all transactions done by account owner Bob”. σ account.ano= transaction.ano (( owner=“Bob” account) transaction)
14
zNatural Join - combines σ, π, - very commonly used Natural Join forms the cross product of its two arguments, does a selection to enforce equality of columns with the same name and removes duplicate columns. Eg: “show all transactions done by account owner Bob” σ owner=“Bob” (account JOIN transaction)
15
Rename operation What if you need to access the same relation twice in a query? eg. person(ss#, name, mother_ss#, father_ss#) “Find the name of Bob’s mother” needs the “person” table to be accessed twice. The operation ρ x (r) evaluates to a second logical copy of relation r renamed to x.
16
Rename operation (contd) eg: π mother.name ( (ρ mother (person)) JOIN mother.ss# = person.mother_ss# ( name=“Bob ” (person)))
21
Additional Operations Additional Operations are those that can be expressed in terms of other operations. zSet Intersection r s = r-(r-s) eg.: r a b s a b r s = a b 1 a 1 a 1 a 2 b 2 c 3 d 3 d 3 d r s
22
Additional Operations(cntd.) zDivision yuseful for “for all” queries Definition: Let r(R) and s(S), where R & S are sets of attributes, be relations, where S is a subset of R. The relation r s has scheme R-S. The tuples in r s consist of the R-S part of the tuples of r such that some tuple t r in r with the those R-S attribute values matches every tuple in s. zCan also be defined in terms of relational algebra.
57
Additional Operations(cntd.) zAssignment operation Sometimes it is convenient to write a relational algebra expression as a sequence of steps rather than one large expression. To do this, you can use assignment: relname expression eg.: temp π pno (part) bigsuppliers supply temp
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.