IN2090-ukesoppgaver: Uke 7
FDer og tillukning
Oppgave 1 FDer og tillukning
a)
Finn de funksjonelle avhengighetene til relasjonen:
Student(studentNr, land, populasjon)
som relaterer
studenter til landet de studerer i, og hvor
studentNr
er unikt for en student (altså attributten som kun er knyttet til en student, altsåstudentNr
ogland
)populasjon
er populasjonen til landet med navn oppgitt iland
b)
Gitt følgende relasjon:
Student(navn, personnr, fødselsdato, kurskode, fagkode, fagnummer, kursnavn)
som relaterer en student til kursene den tar, og FDene:
personnr → navn
personnr → fødselsdato
kurskode → kursnavn, fagkode, fagnummer
fagkode, fagnummer → kurskode
Finn tillukningen til 1. personnr
2.
{personnr, fagkode, fagnummer}
Løsningsforslag
a)
studentNr → land
land → populasjon
b)
personnr⁺ = {personnr, navn, fødselsdato}
{personnr, fagkode, kurskode}⁺ = {personnr, fagkode, fagnummer, navn, fødselsdato, kurskode, kursnavn}
Oppgave 2 Tillukning og nøkler
Gitt følgende relasjon
Bok(isbn, tittel, forfatter, forlagsnr, forlagsnavn, utgitt, sjanger, aldersgrense)
hvor vi har følgende Fder:
isbn → tittel, forfatter, forlagsnr, sjanger
forlagsnr → forlagsnavn
utgitt, forfatter, forlagsnr → isbn
sjanger → aldersgrense
- Hva er tillukningen til
forlagsnr
? - Hva er tillukningen til
{forlagsnr, sjanger, forfatter}
? - Hva er kandidatnøklene til
Bok
?
Løsningsforslag
a)
forlagsnr⁺ = {forlagsnr, forlagsnavn}
b)
{forlagsnr, sjanger, forfatter}⁺ = {forlagsnr, sjanger, forfatter, forlagsnavn, aldersgrense}
c)
- Aldri på høyresider:
utgitt
- Kun er på høyresider:
tittel, forlagsnavn, aldersgrense
- Må forsøke å utvide med:
isbn, forlagsnr, forfatter, sjanger
- Forsøker først med kun
utgitt
:utgitt⁺ = {utgitt}
, alstå ikke kandidatnøkkel. - Utvider med
isbn
:{isbn, utgitt}⁺ = {isbn, utgitt, tittel, forfatter, forlagsnr, sjanger, forlsagsnavn, aldersgrense}
, altså kandidatnøkkel - Utvider med
forlagsnr
:{utgitt, forlagsnr}⁺ = {utgitt, forlagsnr, forlagsnavn}
, altså ikke kandidatnøkkel - Utvider med
forfatter
:{utgitt, forfatter}⁺ = {utgitt, forfatter}
, altså ikke kandidatnøkkel - Utvider med
sjanger
:{utgitt, sjanger}⁺ = {utgitt, sjanger, aldersgrense}
, altså ikke kandidatnøkkel - Utvider med
forlagsnr
ogforfatter
:{utgitt, forlagsnr, forfatter}⁺ = {utgitt, forlagsnr, forfatter, forlagsnavn, isbn, tittel, sjanger, aldersgrense}
, altså en kandidatnøkkel - Utvider med
forlagsnr
ogsjanger
:{utgitt, forlagsnr, sjanger}⁺ = {utgitt, forlagsnr, sjanger, forlagsnavn, aldersgrense}
, altså ikke kandidatnøkkel - Utvider med
forfatter
ogsjanger
:{utgitt, forfatter, sjanger}⁺ = {utgitt, forfatter, sjanger, aldersgrense}
, altså ikke kandidatnøkkel
Alle større utvidelser vil kun gi supernøkler som ikke er minimale.
Altså har vi følgende to kandiadtnøkler: {utgitt, isbn}
og
{utgitt, forlagsnr, forfatter}
.