rensselaer polytechnic institute csci-4380 – database systems david goldschmidt, ph.d
TRANSCRIPT
Database Systems{week 02}
Rensselaer Polytechnic InstituteCSCI-4380 – Database SystemsDavid Goldschmidt, Ph.D.
Selection (review)
Find and select all tuples from relation Rthat satisfy some set of conditions Forms the basis of querying a database The selection C (R) is based on Boolean
condition C over attributes of relation R Example conditions include:▪ A = e, A > e, A >= e, A < e, A <= e, A <> e▪ A1 = A2, A1 <> A2
▪ Any combination of conditions using AND, OR, NOT
A, A1, and A
2 are attributese is a constant or expression
Selection (review)
Selection selects a subset of tuples in relation R (with the schema unchanged)
C (R) = { t | t is a tuple in R and t satisfies the condition C on relation R }
Selection conditions can only refer toattributes in the given relation R
For conditions spanning multiple relations, we first must combine those relations (i.e. join)
Cartesian product
The Cartesian product combinestwo relations to form a new relation The new relation has all of the attributes
of the original two relations It’s often a good idea to rename
attributesin the original relations such thatthere’s no ambiguity
Cartesian product
Given two relations R and S withschemas R(A1,A2,...,An) and S(B1,B2,...,Bm) The Cartesian product RxS produces
relation T with schema T(A1,A2,...,An,B1,B2,...,Bm)
We can disambiguate attributesby using R.Ax and S.By ▪ i.e. attributes Ax and By have the same name
Cartesian product
The Cartesian product of relations R and S:
RxS = { (r,s) | r is a tuple in R and s is a tuple in S }▪ Note that (r,s) has all values in r and s
The Cartesian product is like multiplicationin that it produces a tuple for every pair oftuples from R and S▪ e.g. if R has 10 tuples and S has 5 tuples,
then RxS will have 50 tuples
So why do we want to do this?
Join
Cartesian product RxS is often followed by a selection condition that specifies how tuples in R should be matched to tuples in S
name=student (Undergraduate x Advising)
Translation: Join the Undergraduate and Advising relations by selecting tuples in which the name attribute equals the student attribute
Natural joins
When joining two relations, we often want to join on common (same-named) attributes This is a natural join on relations R and S
and is denoted R⋈S The selection condition selects tuples that
have the same values for same-named attributes
Note that the schema does not repeat thesame-named attributes
Theta joins
Joins based on specific conditions arecalled theta joins and are denoted R ⋈C S To perform a theta join, first take the
product of relations R and S Next, select tuples that satisfy condition C The resulting schema is the union of the
schemas of R and S with R.Ax and S.By prefixes,if necessaryIn a theta join, no deduplication
of attributes is performed!
Rename
The rename operator changes thename of the attributes of relation Rwith schema R(A1,A2,...,An)
S(B1,B2,...,Bn) (R) = relation S(B1,B2,...,Bn)
in which R.A1 is renamed S.B1, R.A2 is renamed S.B2, and so on
To only change some attribute names,simply specify Bi = Ai
Exercises
Find all faculty who advise a student
Find all faculty who do not adviseany students
Find faculty who advise at least two students
Find faculty who advise a student that is not in their department (e.g. dual majors)