F?rste sett obligatoriske oppgaver i INF3100/INF4100 V2006

Formalia

Studentene skal levere individuell besvarelse. Hvis to studenter ?nsker ? levere felles besvarelse, m? dette avtales p? forh?nd med gruppel?rer.
Besvarelsen skal sendes med e-post til den gruppen man er formelt opptatt til. (Gruppenes e-postadresser finner dere p? semestersiden til INF3100.) Detaljerte regler for hva som skal leveres, er beskrevet i avsnittet ?Innlevering? nederst i denne filen.

Studenter som har f?tt godkjent den obligatoriske oppgaven og likevel vil trekke seg fra eksamen, m? levere en papirkopi til gruppel?reren for ? f? en p?tegning om at oppgaven er godkjent. Dette gjelder bare studenter som trekker seg f?r 14-dagersfristen.

Innleveringfrist: Fredag 7. april kl. 10.00

Oppgave 1

Bevis den transitive loven for flerverdiavhengigheter (MVD-er):

Hvis X -->> Y og Y -->> Z, s? vil X -->> (Z \ Y)

Hint: Tegn et Venn-diagram f?r dere gir dere i kast med denne oppgaven

En naturlig f?rste gjetning p? en transitiv lov for MVD-er ville trolig v?re

Hvis X -->> Y og Y -->> Z, s? vil X -->> Z

Hvilke tilleggsbetingelser m? vi ha for at denne slutningsregelen skal v?re riktig?

Oppgave 2

I denne oppgaven skal dere bruke den testdatabasen som er beskrevet i filmdatabasedok.pdf.

Bruk SQL mot filmdatabasen til ? besvare f?lgende sp?rsm?l:

  1. Hvor mange filmer inneholder databasen?
  2. Filmene er delt inn i ratingkategorier. Hvor mange filmer er det i hver kategori?
  3. Filmene er delt inn i genre. Lag en liste over alle genre og hvor mange prosent av filmene som er i hver genre. Listen skal v?re sortert etter fallende prosentsats.
  4. Hvor mange (forskjellige) skuespillere inneholder databasen? Hvor mange prosent av disse er kvinner, og hvor mange er menn?
  5. Skriv ut tittel, produksjons?r, regiss?r og produsent p? alle filmer fra det f?rste ?ret databasen har registrert filmer fra (de eldste filmene).
  6. Finn for- og etternavn p? alle kvinnelige regiss?rer som har laget mer enn 5 filmer, og som har brukt en og samme skuespiller i alle filmene sine (det kan v?re mange flere enn 5).

Oppgave 3

I denne oppgaven skal vi se p? poengberegningen i lagidretter som h?ndball og fotball, n?rmere bestemt poengberegning i serier.

En serie best?r av en mengde lag som parvis spiller kamper mot hverandre. Hvert lag har sin egen bane (kamparena) som kalles lagets hjemmebane. Hvert lag m?ter hvert av de andre lagene til kamp to ganger, en gang p? sin egen hjemmebane og en gang p? motstanderens hjemmebane. For hver kamp registreres det hvor mange m?l hjemmelaget lager, og hvor mange m?l bortelaget lager.

I hver kamp deles det ut poeng. Hvis lagene lager like mange m?l, deles det ut ett poeng til hvert av lagene. Hvis ikke, f?r det laget som lager flest m?l 3 poeng, mens det andre laget ikke f?r noen poeng. Det laget som har flest poeng etter at alle kampene er spilt, vinner serien.

Hvis flere lag f?r samme poengsum, rangeres de etter m?lforskjell (summen av antall m?l laget har laget, minus summen av antall m?l motstanderne har laget i de samme kampene). Dersom flere lag har samme poengsum og samme m?lforskjell, skal lag som har laget flest m?l, komme f?rst.

Dere skal n? lage en liten database i Oracle og deretter lage et program i Java som bruker SQL til ? registrere kampresultatene og til ? lage en sortert resultatliste. Det g?r greit ? bruke C++ hvis noen foretrekker det, men vi kan ikke gi hjelp til C++ relaterte sp?rsm?l, kun til Java. Databasen skal best? av to basisrelasjoner:

  1. En tabell over lagene som deltar i serien. Den skal ha tre attributter:
    • En prim?rn?kkel (et entydig lagnummer fra 1 til antall lag i serien)
    • Et entydig navn p? laget
    • Navn p? lagets hjemmebane
  2. En tabell over kampresultater. Den har fire heltallsattributter:
    • Hjemmelagets nummer (fremmedn?kkel til lagtabellen)
    • Bortelagets nummer (fremmedn?kkel til lagtabellen)
    • Antall m?l laget av hjemmelaget
    • Antall m?l laget av bortelaget

Resultatet skal v?re en tabell med en linje for hvert lag i serien og fire kolonner:

  • Lagets navn
  • Sum m?l laget har laget i alle sine kamper
  • Sum m?l laget av motstanderne i lagets kamper
  • Sum poeng laget har f?tt

Tabellen skal v?re sortert med det beste laget ?verst og det d?rligste nederst.

 

Hva som skal gj?res

  1. Definer de to basisrelasjonene i Oracle. Gj?r rede for hvilke n?kler og fremmedn?kler de har, og hvordan de kan (eller ikke kan) h?ndheves. Det kreves ikke at dere h?ndhever alle integritetsregler som b?r gjelde i databasen.
  2. F?lgende skal dere bruke Java mot Oracle til ? l?se:
    1. Legg inn fem lag i lagtabellen. Dere m? selv finne p? navn p? lag og hjemmebaner.
    2. Legg f?lgende data inn i kamptabellen (resultatene av en liten h?ndballserie):

Hjemmelag

Bortelag

Hjemmem?l

Bortem?l

1

2

19

19

1

3

22

17

1

4

17

7

1

5

22

13

2

1

22

22

2

3

14

14

2

4

16

15

2

5

13

13

3

1

13

20

3

2

16

16

3

4

21

20

3

5

17

17

4

1

20

19

4

2

16

15

4

3

13

14

4

5

17

15

5

1

19

20

5

2

17

17

5

3

14

13

5

4

18

17

    1. Bruk SQL til ? lage resultattabellen i Java (java.sql).

Innlevering

E-posten til gruppen skal ha f?lgende subjektfelt:
Subject: Oblig 1 inf3100 (<brukernavn student >)

For Oppgave 1 skal f?lgende leveres:

Et dokument med l?sningen og Venn-diagram. Format: PDF eller word (doc).

 

For Oppgave 2 skal f?lgende leveres:

SQL-fil, samt en resultatfil.

 

For Oppgave 3 skal f?lgende leveres:

En SQL-fil for laging av databasen.

Java kode (.java filer). Koden som leveres skal v?re lesbar og kj?rbar. 

En fil som viser resultat av kj?ring.

 

Felles for oppgave 2 og 3  (for levering av SQL-delene):

SQL-filen skal hete <brukernavn student>.<nr>.sql (der <nr> er henholdsvis 2 og 3 for de to oppgavene).
Filen skal kunne kj?res med start-kommandoen i SQL*plus.
F?rste linje i filen skal v?re den samme som i subject-feltet p? e-posten, men som SQL-kommentar:
/* Oblig 1 inf3100 (<brukernavn student >)*/
Alle kommentarer i filen skal v?re omsluttet av slike SQL-kommentarparenteser. Kommentarer som gjelder l?sningen som helhet, skal st? ?verst i filen.

Resultatene fra en kj?ring av denne SQL-filen skal ogs? leveres.
Resultatfilen skal hete <brukernavn student>.res.
F?rste linje i denne filen skal v?re identisk med f?rste linje i SQL-filen.

 

Slutt p? obligatorisk oppgave 1