dbsys.info

Løsningsforslag til kapittel 6

Oppgave 1a

Løs tidligere SQL-oppgaver med relasjonsalgebra.

Vi viser først løsning i relasjonsalgebra for to enkle SQL-spørringer fra kapittel 2. Spørring 1:


SELECT *
FROM Film
WHERE Year(År) = 1988

Spørringen tilsvarer følgende uttrykk i relasjonsalgebra:

σYear(År)=1988(Film))

Merk at vi ikke trenger projeksjon fordi alle attributter skal med.

Spørring 2:


SELECT Tittel
FROM Film
WHERE Land = 'USA' AND År BETWEEN 1980 AND 1989

Tilsvarende uttrykk i relasjonsalgebra:

ΠTittel( σLand='USA'( σÅr>=1980( σÅr <=1989(Film) ) ) )

Alternativt kan betingelsene settes sammen med "og".

Neste spørring er hentet fra kapittel 4:


SELECT *
FROM Vare, Kategori
WHERE Vare.KatNr = Kategori.KatNr

Tilsvarende uttrykk i relasjonsalgebra:

Vare ⊗Vare.KatNr=Kategori.KatNr Kategori

Oppgave 2a

Kryssprodukt.

S × T = {(3,3),(3,5),(3,10),(3,11),(8,3),(8,5),(8,10),(8,11),(10,3),(10,5),(10,10),(10,11)}

Oppgave 2b

Union.

S ∪ T = {3, 5, 8, 10, 11}

Oppgave 2c

Snitt.

S ∩ T = {3, 10}

Oppgave 2d

Differanse (minus).

S - T = {8}

Oppgave 2e

Differanse (minus).

T - S = {5, 11}

Oppgave 3a

AnsNr og Lønn til alle ansatte.

ΠAnsNr,Lønn(Ansatt)

Oppgave 3b

Alle data om ansatte som tjener mer enn 500 000.

σLønn>500000(Ansatt)

Oppgave 3c

Alle tupler i Arbeid utvidet med navn på tilhørende ansatt.

Arbeid ⊗Arbeid.AnsNr=Ansatt.AnsNr ΠAnsNr,Fornavn,Etternavn(Ansatt)

Oppgave 3d

Alle datoer da det ble startet nye prosjekter, men ikke avsluttet noen.

ΠStartdato(Prosjekt) - ΠSluttdato(Prosjekt)