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

  1. studentNr er unikt for en student (altså attributten som kun er knyttet til en student, altså studentNr og land)
  2. populasjon er populasjonen til landet med navn oppgitt i land

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)

  1. studentNr → land
  2. land → populasjon

b)

  1. personnr⁺ = {personnr, navn, fødselsdato}
  2. {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
  1. Hva er tillukningen til forlagsnr?
  2. Hva er tillukningen til {forlagsnr, sjanger, forfatter}?
  3. 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
  1. Forsøker først med kun utgitt: utgitt⁺ = {utgitt}, alstå ikke kandidatnøkkel.
  2. Utvider med isbn: {isbn, utgitt}⁺ = {isbn, utgitt, tittel, forfatter, forlagsnr, sjanger, forlsagsnavn, aldersgrense}, altså kandidatnøkkel
  3. Utvider med forlagsnr: {utgitt, forlagsnr}⁺ = {utgitt, forlagsnr, forlagsnavn}, altså ikke kandidatnøkkel
  4. Utvider med forfatter: {utgitt, forfatter}⁺ = {utgitt, forfatter}, altså ikke kandidatnøkkel
  5. Utvider med sjanger: {utgitt, sjanger}⁺ = {utgitt, sjanger, aldersgrense}, altså ikke kandidatnøkkel
  6. Utvider med forlagsnr og forfatter: {utgitt, forlagsnr, forfatter}⁺ = {utgitt, forlagsnr, forfatter, forlagsnavn, isbn, tittel, sjanger, aldersgrense}, altså en kandidatnøkkel
  7. Utvider med forlagsnr og sjanger: {utgitt, forlagsnr, sjanger}⁺ = {utgitt, forlagsnr, sjanger, forlagsnavn, aldersgrense}, altså ikke kandidatnøkkel
  8. Utvider med forfatter og sjanger: {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}.