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