Oppgave 3 - normalisering Løsningsforslag Oppgave 3 - løsning 22.10.2014 Øvelsesoppgave 3 1. Normaliser logisk skjema fra oppgave 1 og 2 (Læringssenter) 2. Normaliser logisk skjema fra seminarøvelsen (Nøsteelskere) Tips! Les evt. kap. 6 i Berget (2010) og lag en miniversjon av databasen med noe data i form av enkle tabeller (f.eks. i Excel), slik jeg har gjort det i NRKeksempelet. Det kan være enklere enn å normalisere det logiske skjema direkte. 1
Oppgave 1 og 2 - Læringssenter Oppgave 1 (ER-diagram) Du er formidlingsansvarlig i læringssenteret til en stor organisasjon der det produseres mange vitenskapelige artikler hvert år. Du skal nå lage en relasjonsdatabase der du kan registrere opplysninger om hvem som skriver, hva de skriver og hvor tekstene utgis. Det er flere krav til databasen: Hver ansatt skal registreres med ansattnummer og navn. Hver ansatt har tilknytning til én avdeling med navn og adresse. Alle artikler skal registreres med tittel. Disse kan publiseres i flere forskjellige tidsskrift. Tidsskriftene må registreres med ISSN, tittel, startår, sluttår og utgiver. Tidsskriftutgivernes navn og adresse skal registreres i databasen. Flere ansatte kan samarbeide om én artikkel. Hver artikkel skal registreres med opplysninger om hvilke(t) tidsskrift den er publisert i, samt tidsskriftets nummer og årstall. (Anta at alle tidsskriftutgivelser har ett nummer og ett årstall.) Det må også være mulig å registrere hvilke sider i tidsskriftet artikkelen er trykket. Lag et konseptuelt skjema (ER-diagram) for databasen. Ta med alle attributter og merk primærnøklene. Sammenhengstypene skal ha navn. (Husk også at sammenhengstyper i noen tilfeller har attributter.) Oppgave 2 (Logisk skjema) Ta utgangspunkt i kravene og ER-diagrammet fra oppg. 1 Lag det logiske skjemaet for databasen. Understrek primærnøklene og kursivér fremmednøklene Løsning oppg. 1 og 2 ER-diagram Logisk skjema Ansatt (Ansattnr, Fornavn, Etternavn, AvdelingsID) Avdeling (AvdelingsID, Navn, Adresse, Postnr, Sted) Tidsskrift (ISSN, Tittel, Startår, Sluttår, UtgiverID) Utgiver (UtgiverID, Navn, Adresse, Postnr, Sted) Publisering (ArtikkelID, ISSN, Nr, År, Sidetall) 2
1NF Ansatt (Ansattnr, Fornavn, Etternavn, AvdelingsID) Avdeling (AvdelingsID, Navn, Adresse, Postnr, Sted) Tidsskrift (ISSN, Tittel, Startår, Sluttår, UtgiverID) Utgiver (UtgiverID, Navn, Adresse, Postnr, Sted) Publisering (ArtikkelID, ISSN, Nr, År, Sidetall) Inneholder bare atomære verdier 2NF Primærnøkler som består av bare ett attributt (en kolonne) automatisk 2NF Ansatt (Ansattnr, Fornavn, Etternavn, AvdelingsID) Avdeling (AvdelingsID, Navn, Adresse, Postnr, Sted) Tidsskrift (ISSN, Tittel, Startår, Sluttår, UtgiverID) Utgiver (UtgiverID, Navn, Adresse, Postnr, Sted) Publisering (ArtikkelID, ISSN, Nr, År, Sidetall) Består av bare primærnøkkel automatisk 2NF Funksjonelt avhengig av hele primærnøkkelen. 2NF 3
3NF Ansatt (Ansattnr, Fornavn, Etternavn, AvdelingsID) Avdeling (AvdelingsID, Navn, Adresse, Postnr, Sted) Tidsskrift (ISSN, Tittel, Startår, Sluttår, UtgiverID) Utgiver (UtgiverID, Navn, Adresse, Postnr, Sted) Sted funksjonelt avhengig av postnr Brudd på 3NF Sted funksjonelt avhengig av postnr Brudd på 3NF Publisering (ArtikkelID, ISSN, Nr, År, Sidetall) Relasjoner som består av bare primærnøkkel automatisk 3NF Relasjoner som bare har ett attributt som ikke er en del av primærnøkkel automatisk 3NF Normalisert logisk skjema Ansatt (Ansattnr, Fornavn, Etternavn, AvdelingsID) Avdeling (AvdelingsID, Navn, Adresse, Postnr) Tidsskrift (ISSN, Tittel, Startår, Sluttår, UtgiverID) Utgiver (UtgiverID, Navn, Adresse, Postnr) Publisering (ArtikkelID, ISSN, Nr, År, Sidetall) Poststed (Postnr, Sted) Postnummer og sted er skilt ut i egen relasjon, med determinanten (Postnr) som fremmednøkkel i den opprinnelige relasjonen, og primærnøkkel i den nye relasjonen. 4
Seminarøvelse Håndarbeidsdatabase Basert på oppgave fra utsatt eksamen 12. august 2013 Riksbiblioteket skal utvikle et nasjonalt sosialt nettsted for håndarbeidsinteresserte. Du skal i denne oppgaven modellere databasen for å holde orden på dataene knyttet til denne tjenesten, som har fått navnet Nøsteelskere. Lag ER-diagram for databasen Gjør dine egne forutsetninger dersom noe er uklart Sett opp den logiske modellen (logisk skjema) for databasen. Understrek primærnøkler og merk fremmednøkler med kursiv eller asterisk (*). Løsning - seminarøvelse ER-diagram Logisk skjema Oppskrift (OppskriftID, Navn, Beskrivelse, Garntykkelse, Pinnetykkelse, Type, Kategori, Dato, Brukernavn) Prosjekt (ProsjektID, Navn, Startdato, Sluttdato, Status, Vanskelighetsgrad, Karakter, Brukernavn, OppskriftID) Bruker (Brukernavn, Fornavn, Etternavn, E-post, Passord, Bursdag, Regdato) 5
1NF Inneholder bare atomære verdier Bok ISBN Tittel Forfatter Forlag År 978-1570764585 Vintage Knits: 30 Knitting Designs from Rowan for Women and Men Kaffe Fassett Trafalgar Square Books 2010 Oppskrift (OppskriftID, Navn, Beskrivelse, Garntykkelse, Pinnetykkelse, Type, Kategori, Dato, Brukernavn) Oppskrift 123 Salina This pattern is available for $5.00 USD ( ) OppskriftID Navn Beskrivelse Garntykkelse Pinne- Tykkelse DK 3,75 mm Type Kategori Dato Brukernavn Knitting Sweater 21.10.14 LindaKnit ter 1NF Inneholder bare atomære verdier Prosjekt (ProsjektID, Navn, Startdato, Sluttdato, Status, Vanskelighetsgrad, Karakter, Brukernavn, OppskriftID) Prosjekt Prosjekt ID 321 Purple Salina Navn Startdato Sluttdato Status Vanskelighetsgrad Karakter Brukernavn OppskriftID 02.09.2013 02.01.2014 ferdig middels 4 ingridrk 123 Bruker (Brukernavn, Fornavn, Etternavn, E-post, Passord, Bursdag, Regdato) Bruker Brukernavn Fornavn Etternavn E-post Passord Bursdag Regdato ingridrk Ingrid Knutsen ingrid@mail.no Kodeord 05.04.1979 23.09.2007 6
1NF Inneholder bare atomære verdier Bokoppskrift ISBN OppskriftID 978-1570764585 123 Bokeier ISBN Brukernavn 978-1570764585 ingridrk 2NF Primærnøkler som består av bare ett attributt (en kolonne) automatisk 2NF Oppskrift (OppskriftID, Navn, Beskrivelse, Garntykkelse, Pinnetykkelse, Type, Kategori, Dato, Brukernavn) Prosjekt (ProsjektID, Navn, Startdato, Sluttdato, Status, Vanskelighetsgrad, Karakter, Brukernavn, OppskriftID) Bruker (Brukernavn, Fornavn, Etternavn, E-post, Passord, Bursdag, Regdato) Relasjoner som består av bare primærnøkkel automatisk 2NF 7
3NF Ingen av attributtene er funksjonelt avhengige av hverandre Oppskrift (OppskriftID, Navn, Beskrivelse, Garntykkelse, Pinnetykkelse, Type, Kategori, Dato, Brukernavn) Prosjekt (ProsjektID, Navn, Startdato, Sluttdato, Status, Vanskelighetsgrad, Karakter, Brukernavn, OppskriftID) Bruker (Brukernavn, Fornavn, Etternavn, E-post, Passord, Bursdag, Regdato) Relasjoner som består av bare primærnøkkel automatisk 3NF Normalisert logisk skjema Oppskrift (OppskriftID, Navn, Beskrivelse, Garntykkelse, Pinnetykkelse, Type, Kategori, Dato, Brukernavn) Prosjekt (ProsjektID, Navn, Startdato, Sluttdato, Status, Vanskelighetsgrad, Karakter, Brukernavn, OppskriftID) Bruker (Brukernavn, Fornavn, Etternavn, E-post, Passord, Bursdag, Regdato) Ingen endringer! 8