Relasjonsalgebra

Resultatet av en relasjonsalgebraisk operasjon er ALLTID en ny relasjon!

 SELECT Plukker ut spesielle rader/tupler fra en bestemt relasjon
 PROJECT Plukker ut spesielle attributter/kolonner fra en bestemt relasjon
PRODUCT Kombinerer en og en tuple fra en relasjon med hvert tuple i en annen, og bygger således opp en ny relasjon. Kalles også kartesisk produkt.
UNION Alle tupler i en eller begge relasjoner(='OR')
INTERSECTION Alle tupler som forekommer i begge relasjonene(='AND')
DIFFERENCE Alle tupler som forekommer i den første relasjonen, men ikke i den andre
  JOIN PROJECT av en SELECT av et kartesisk produkt. Kombinerer tupler fra to relasjoner slik at hvert tuplepar tilfredsstiller spesifiserte krav.  
DIVIDE Har to relasjoner, en binær og en unær. Resultatet av DIVIDE blir da de tuplene i den binære som tilfredsstiller alle verdier i den unære

Mer om join

Join, intersect og divide kan defineres ved hjelp av select, project, product, union og difference, men de er nyttige likevel så derfor har vi de.
De fleste typene join er mellom en primærnøkkel og en matchende fremmednøkkel.

De forskjellige typene join som finnes:

Natural join

  1. Ta det kartesiske produkt av relasjonene R og S
  2. Selekter ut de tuplene fra produktet hvor alle fellesattributtene i R og S har samme verdi
  3. Fjern alle dobbeltforekomster av attributter fra 2, slik at det bare blir en forekomst av hvert av de opprinnelige fellesattributter
Eksempel:

List ut alle studenter og deres karakterer i de enkelte fag:
studentnr fnavn enavn
1 Jan Andersen
2 Ingrid Johansen
3 Anna Olsen
4 Ole Jakobsen
5 Trine Solbakken
6 Finn Eriksen
studentnr kursnr karakter
1 1 2.7
1 3  
1 5 3.3
2 1 2.4
2 3 1.8
3 3 1.5
3 5 1.3
6 2 3.4
=
studentnr kursnr karakter fnavn enavn
1 1 2.7 Jan Andersen
1 3   Jan Andersen
1 5 3.3 Jan Andersen
2 1 2.4 Ingrid Johansen
2 3 1.8 Ingrid Johansen
3 3 1.5 Anna Olsen
3 5 1.3 Anna Olsen
6 2 3.4 Finn Eriksen

Left outer join

  1. Ta det kartesiske produkt av relasjonene R og S
  2. Lag en ny relasjon som inneholder alle tupler fra R
    1. Der det er mulig, kombineres det enkelte tuple fra R med de tupler i S der fellesattributtene har samme verdi
    2. For de øvrige tupler i R kombineres disse med NULL i alle S-attributtene
Eksempel:

List ut nr, navn og leder for alle hybelhus, og all info om deres hybler
hybelnusnr hybelhusnavn leder
1 Os Plaza Anne Tvedt
2 Sentrum Truls Johansen
3 Øst Kenneth Hagen
4 Idd Jens Olsen
hybelnr hybelhusnr romnr utleiesats
1 1 1 500
4 1 4 625
5 2 1 650
6 2 2 400
11 3 1 750
14 3 4 700
=
hybelhusnr hybelhusnavn leder hybelnr romnr utleiesats
1 Os Plaza Anne Tvedt 1 1 500
1 Os Plaza Anne Tvedt 4 4 625
2 Sentrum Truls Johansen 5 1 650
2 Sentrum Truls Johansen 6 2 400
3 Øst Kenneth Hagen 11 1 750
3 Øst Kenneth Hagen 14 4 700
4 Idd Jens Olsen null null null

Right outer join

  1. Ta det kartesiske produkt av relasjonene R og S
  2. Lag en ny relasjon som inneholder alle tupler fra S
    1. Der det er mulig, kombineres det enkelte tuple fra S med de tupler i R der fellesattributtene har samme verdi
    2. For de øvrige tupler i S kombineres disse med NULL i alle R-attributtene
Eksempel:

List ut nummer, fullt navn og all utleieinfo for alle studenter.
avtalenr studentnr hybelnr startdato sluttdato
1 2 3 15.08.99 15.06.00
2 3 6 10.08.99 05.06.00
3 4 2 20.08.99 01.06.00
4 6 1 15.08.99 15.06.00
5 7 4 15.08.99 01.06.00
6 8 7 20.08.99 10.06.00
studentnr fnavn enavn
1 Jan Andersen
2 Ingrid Johansen
3 Anna Olsen
4 Ole Jakobsen
5 Trine Solbakken
8 Harald Øvrevoll
10 Harald Kong
=
studentnr fnavn enavn avtalenr hybelnr startdato sluttdato
1 Jan Andersen null null null null
2 Ingrid Johansen 1 3 15.08.99 15.06.00
3 Anna Olsen 2 6 10.08.99 05.06.00
4 Ole Jakobsen 6 1 15.08.99 15.06.00
5 Trine Solbakken null null null null
8 Harald Øvrevoll 6 7 20.08.99 10.06.00
10 Harald Kong null null null null

Full outer join

  1. Ta det kartesiske produkt av relasjonene R og S
  2. Lag en ny relasjon som inneholder alle tupler fra R og S
    1. Der det er mulig, kombineres det enkelte tuple fra R med de tupler i S der fellesattributtene har samme verdi
    2. For de øvrige tupler kombineres disse med NULL i alle R- og S-attributtene
Eksempel:

Lag en oversikt over alle hybler med og uten leieavtale
avtalenr studentnr hybelnr startdato sluttdato
1 2 3 15.08.99 15.06.00
2 3 6 10.08.99 05.06.00
3 4 2 20.08.99 01.06.00
4 6 1 15.08.99 15.06.00
5 7 4 15.08.99 01.06.00
6 8 7 20.08.99 10.06.00
hybelnr hybelhusnr romnr utleiesats
1 1 1 500
4 1 4 625
5 2 1 650
2 1 2 525
6 2 2 400
3 1 3 475
7 2 3 375
8 2 4 400
9 1 5 450
10 1 6 600
11 3 1 750
12 3 2 650
13 3 3 650
14 3 4 700
15 3 5 700
16 3 6 700
=
avtalenr studentnr hybelnr startdato sluttdato hybelhusnr romnr utleiesats
4 6 1 15.08.99 15.06.00 1 1 500
5 7 4 15.08.99 01.06.00 1 4 625
null null 5 null null 2 1 650
3 4 2 20.08.99 01.06.00 1 2 525
2 3 6 10.08.99 05.06.00 2 2 400
1 2 3 15.08.99 15.06.00 1 3 475
6 8 7 20.08.99 10.06.00 2 3 375
null null 8 null null 2 4 400
null null 9 null null 1 5 450
null null 10 null null 1 6 600
null null 11 null null 3 1 750
null null 12 null null 3 2 650
null null 13 null null 3 3 650
null null 14 null null 3 4 700
null null 15 null null 3 5 700
null null 16 null null 3 6 700

Theta/Equi join

  1. Ta det kartesiske produkt av relasjonene R og S
  2. Velger ut alle de tuplene fra det kartesiske produkt som tilfresstiller predikatet F
  3. kan være en av operatorene <, <=, >, >=, = eller ~=(ikke lik). Det finnes også mer komplekse operatorer som ikke er med her.
  4. Dersom predikatet F kun inneholder test på likhet(=), kalles det en equi join. Ellers er det en theta join
Eksempel:

Lag en liste over studenter med leieavtale
student.studennr fnavn enavn avtalenr leieavtale.studentnr hybelnr
2 Ingrid Johansen 1 2 3
3 Anna Olsen 2 3 6
4 Ole Jakobsen 3 4 2
6 Finn Eriksen 4 6 1
7 Jonas Mykle 5 7 4
8 Harald Øvrevoll 6 8 7

Semi join

En vanlig theta join kombinert med en projection av tuplene i R(i sluttresulatet har vi bare med tuplene fra R)

Eksempel:

Lag en liste over alle studenter som bor i Tistedal
studentnr fdato stud_ant_aar status fnavn enavn gateadresse postnr poststed
5 02.03.77 2 Venter Trine Solbakken Flatebyveien 41 1790 Tistedal