IN2090-ukesoppgaver: Uke 2
Relasjonsmodellen og relasjonsalgebra
Oppgave 1
Gitt følgende relasjoner:
Student
| Navn | Fødselsdato | StudentNr | Adresse | Studie |
|---|---|---|---|---|
| Ola | 1997-01-01 | 1234 | Sognsveien 1 | Informatikk |
| Kari | 1995-10-12 | 1032 | Sognsveien 1 | Matematikk |
| Sara | 1991-03-09 | 2501 | Osloveien 4 | Informatikk |
| Per | 4510 | Sognsveien 1 | Informatikk |
Gruppelærer
| StudentNr | Kurs | Semester |
|---|---|---|
| 1234 | IN2090 | H18 |
| 2501 | IN2090 | H18 |
| 2501 | IN1234 | V19 |
hvor vi antar at StudentNr er unikt for hver student og at en gruppelærer kun kan være gruppelærer i ett kurs én gang per semester. Videre er Gruppelærer(StudentNr) en fremmednøkkel til Student(StudentNr).
a)
Hva er begrepene relasjonsnavn, attributt og tuppel i relasjonene over?
Løsningsforslag:
- Relasjonsnavn: Student og Gruppelærer
- Attributter: For Student er Navn, Fødselsdato, StudentNr, Adresse og Studie og for Gruppelærer er StudentNr, Kurs og Semester
- Tuppel: Alle radene, f.eks. (Ola, 1997-01-01, 1234, Sognsveien 1, Informatikk) og (1234, IN2090, H18)
b)
Finn alle supernøkler og kandidatnøkler for relasjonene over.
Løsningsforslag:
Supernøkler:
- Student: Siden StudentNr er unikt er alle mengder med attributter som inneholder StudentNr en supernøkkel, slik som {StudentNr, Navn} eller {Fødselsdato, Studie, StudieNr}
- Gruppelærer: Ingen av attributtene er alene unike. Derimot vet vi at hver student kun kan være gruppelærer i ett kurs hvert semester, altså må kombinasjonen av gruppelærer og semester være unik. Dermed blit {StudentNr, Semester} en supernøkkel. Ellers vet vi jo at alle attributtene sammen alltid utgjør en supernøkkel. Altså er supernøkkelene for relasjonen {StudentNr, Semester} og {StudentNr, Kurs, Semester}
Kandidatnøkler:
- Student: Siden StudentNr er unikt vil for alle studenter vil {StudentNr} være en minimal supernøkkel, altså en kandidatnøkkel. Alle andre supernøkler inneholder overflødige attributter i tillegg til StudentNr og er dermed ikke minimale
- Gruppelærer: For supernøkkelen {StudentNr, Kurs, Semester} kan vi fjerne Kurs og fortsatt sitte igjen med noe som er en supernøkkel ({StudentNr, Semester}), så det er ikke en kandidatnøkkel. Derimot kan vi ikke fjerne noe fra den andre supernøkkelen, {StudentNr, Semester}, og fortsatt sitte igjen med en supernøkkel, siden ingen av attributtene til relasjonen alene utgjør en supernøkkel. Altså er {StudentNr, Semester} eneste kandidatnøkkel for Gruppelærer.
c)
Forklar hva følgende uttrykk i relasjonsalgebra betyr:
Løsningsforslag:
Uttrykket finner fødselsdato til alle studenter med navn Sara.
d)
Skriv et uttrykk i relasjonsalgebraen som finner følgende:
- navn på de studentene som bor i Sognsveien 1
- studentNr på alle gruppelærere i IN2090 høsten 2018
- studentNr til alle studenter som studerer informatikk
- For alle studenter som bor i Sognsveien 1, finn de som studerer matematikk
- Finn adressen til alle studenter som har et studentNr mellom 1000 og 3000
- Navn og fødselsdato på alle gruppelærere i IN2090 høsten 2018
Løsningsforslag:
- πnavn(σadresse = ′Sognsveien1′(Student))
- πstudentNr(σkurs = ′IN2090′ ∧ semester = ′H18′(Gruppelærer))
- πstudentNr(σstudie = ′Informatikk′(Student))
- σstudie = ′Matematikk′ ∧ adresse = ′Sognsveien1′(Student)
- πadresse(σstudentNr < 3000 ∧ studentNr > 1000(Student))
- πnavn, fødselsdato(σkurs = ′IN2090′ ∧ semester = ′H18′(Gruppelærer) ⋈ Student)
Oppgave 2
Gikk følgende relasjoner:
Foreleser
| Id | Navn | Kontor | KursID | År |
|---|---|---|---|---|
| 344 | Per | C80 | IN2090 | 2020 |
| 453 | Brian | C81 | IN2090 | 2020 |
| 567 | Jon | C82 | IN1010 | |
| 563 | Maria | C81 | IN3420 | 2019 |
| 564 | Kari | C80 | IN2412 | 2020 |
| 876 | Per | C83 | IN3524 | 2019 |
| 980 | Kari | C80 | IN3020 | 2018 |
| 687 | Kari | C84 | IN3020 | 2019 |
| 345 | Brian | C85 | IN2034 | 2020 |
Institutt
| InstituttID | AnsattID |
|---|---|
| I1 | 334 |
| I2 | 453 |
| I3 | 567 |
| I1 | 563 |
| I2 | 563 |
| I1 | 876 |
| I2 | 980 |
| I3 | 687 |
| I3 | 345 |
| I3 | 111 |
Foreleser beskriver altså forelesere, deres Id, navn, hvilket kontor de har, IDen til kurset de underviser og året de underviser det kurset. Institutt sier hvilke institutter ulike ansatte er knyttet til.
Ved å se på eksempel-dataene, kan AnsattID være en fremmednøkkel til Foreleser(Id)?
Løsningsforslag:
Nei, fordi Institutt(AnsattID) inneholder verdien 111 som ikke er inneholdt i Foreleser(Id).
Oppgave 3
Gitt følgende abstrakte signatur: R(A, B, C, D)
Altså, en relasjon med navn R som har fire attributter (A, B, C og D).
Relasjonen har følgende supernøkler:
- {B}
- {A, B}
- {B, C}
- {B, D}
- {C, D}
- {A, B, C}
- {A, B, D}
- {A, C, D}
- {B, C, D}
- {A, B, C, D}
a)
Finn kandidatnøklene til R.
Løsningsforslag:
En kandidatnøkkel er jo en minimal supernøkkel, altså skal må vi finne de supernøklene hvor vi ikke kan fjerne ett attributt og fortsatt ha en supernøkkel:
- {B}: Har bare ett attributt og er dermed en kandidatnøkkel
- {A, B}: Vi kan fjerne A og fortsatt sitte igjen med en supernøkkel ({B}), og er dermed ikke en kandidatnøkkel
- {B, C}: Kan fjerne C, altså ikke kandidatnøkkel
- {C, D}: Kan ikke fjerne C siden {D} ikke er en supernøkkel, og det samme gjelder fjerning av D, altså er {C, D} en kandidatnøkkel
- {A, B, C}: Kan fjerne (en av) både A og C, altså ikke kandidatnøkkel
- {A, B, D}: Kan fjerne (en av) både A og D, altså ikke kandidatnøkkel
- {A, C, D}: Kan fjerne A, altså ikke kandidatnøkkel
- {B, C, D}: Kan fjerne (en av) både C og D, altså ikke kandidatnøkkel
- {A, B, C, D}: Kan fjerne (en av) A, B, C og D, altså ikke kandidatnøkkel
Altså har R kandidatnøklene {B} og {C, D}.
b)
Hvilke nøkkel-attributter har R?
Løsningsforslag:
Siden {B} og {C, D} er kandidatnøklene til R er altså B, C, og D nøkkelattributtene til R.