450 likes | 608 Views
DATASYSTEMER Datamodeller. Ein datamodell = Ein måte å organisere data på. Database. Ei samling av logiske data som høyrer saman Beskrivelse av desse dataene (datatype, lovlege data osv). Databasesystem. Database Management System (DBMS) Oracle, SQL Server, Access. Relasjonsmodellen.
E N D
DATASYSTEMERDatamodeller Ein datamodell = Ein måte å organisere data på
Database • Ei samling av logiske data som høyrer saman • Beskrivelse av desse dataene (datatype, lovlege data osv)
Databasesystem • Database Management System (DBMS) • Oracle, SQL Server, Access
Relasjonsmodellen • Datastruktur • Dataintegritet • Datamanipulering
Tabell som relasjon Relasjonen har 4 attributt R(101,Hansen)=Sann R(105,Hansen)=Sann R(101,Nils)=Usann Attributta er atomiske -> Relasjonen er normalisert Relasjonsdatabase=Samling normaliserte relasjonar med distinkte namn
Nøkkel • Ein nøkkel er ein verdi som gjer det mulig å finne fram til ein bestemt tuppel i relasjonen • Ein supernøkkel er ein attributtkombinasjon som eintydig definerer ein tuppel i relasjonen • Ein kandidatnøkkel er eit attributt eller ein kombinasjon av attributt som det berre fins ein av i relasjonen.
Primærnøkkel Mange supernøklar, f. eks. kombinasjon av alle attributt. Fjernar unødvendige attributt. Får då ein kandidatnøkkel. Velg ein av kandidatnøklane som primærnøkkel: EKSAMENS_SKOLE(eks_skolenr,eks_navn,eks_adresse,eks_telefon,postnr)
Dataintegritet • Garanti for at dataene er korrekte (og oppdatert) • Entitetsintegritet: Primærnøkkel kan ikkje vera utan verdi • Referanseintegritet: Framandnøkkel må vera lik primærnøkkelen i ein annan relasjon, eller utan verdi.
DatamanipuleringRelasjonsalgebra • Seleksjon • Projeksjon • Produkt • Forening (eng. join) • Divisjon • Union • Snitt • Differanse
Seleksjon SELECT(A:s:r,R:s:r) s = seleksjon r=projeksjon SELCT(FAG : fagkode=’LO343D’) : *, R : : ); SQL: SELECT * FROM FAG WHERE fagkode=’LO343D’
Projeksjon (reduksjon) PROJECT(A:s:r , R:s:r); PROJECT(FAG : : fagkode fagnavn , R : : ); SQL: SELECT fagkode fagnavn FROM FAG
Produkt CROSS(A:s:r, B:s:r, R:s:r ); SQL: SELECT * FROM Sted CROSS JOIN eks_skole
Forening (eng. join) Inner join JOIN(A:s:r:k , B:s:r:k, R:s:r); k skal vera lik i A og B JOIN(EKSAMENS_SKOLE : : : postnr, STED : : poststed:postnr,R: : skolenr namn adr postnr poststed) SQL: SELECT e.* , s.poststed FROM eksamens_skole e INNER JOIN sted sON e.postnr=s.postnr
Ytterforening • Venstre ytterforening (LEFT JOIN): Alle tuppler i venstre relasjon skal vera med • Høgre ytterforening(RIGHT JOIN): Alle tupler i høgre relasjon skal vera med • Full ytterforening: Alle tuppler i begge relasjonar skal vera med. SQL: SELECT f.fagkode, f.fagnavn, fv.studnrFROM fag f LEFT JOIN fagvalg fvON f.fagkode=fv.fagkode
Union UNION(A:s:r:k, B:s:r:k, R:s:r ); SQL: SELECT * FROM sted UNION SELECT * FROM ny_sted
Snitt INTERSECT(A:s:r:k, B:s:r:k, R:s:r); SELECT * FROM sted INTERSECT SELECT * FROM ny_sted ON sted.poststed=ny_sted.poststed
Differanse DIFFERANCE(A:s:r:k, B:s:r:k, R:s:r);
Kontrollspørsmål • Side 72
Normalisering • Deler opp databasen i små tabellar for å unngå at samme informasjon blir registrert fleire ganger. • Hindre inkonsistens • Indre samanhenger mellom kolonner? • Kolonner som dannar ei gruppe innafor ein tabell? • Når tabellen tilfredsstiller eit sett av vilkår, er han på ei normalform (2NF, 3NF, Boyd-Codd normalform BCNF osv)
Funksjonelle determineringar I tabell R determinerer kolonne A ei anna kolonne B dersom det for kvar A-verdi berre er knytta ein B-verdi
Eksempel på determinering Kolonne Postnr er ein determinant. Brukar den som primærnøkkel.
Samansett nøkkel Kva er primærnøkkelen her? Finn funksjonell determinering!
Oppgåve Bestem funksjonell determinering her!
Unormalisert form Ein tabell på unormalisert form (UNF) kan innehalde repeterande grupper (ikkje-atomiske verdiar) F.eks: Opplisting av fagkodar i feltet fagkode. Løysing på problemet?
Første normalform Første normalform (1NF) krev at tabellen har ein primærnøkkel og berre atomiske verdiar (berre ein pr. rute – i praksis er berre ein verdi mulig!) STUDENT(studnr , etternavn, fornavn) STUD_FAG(studnr*, fagkode* )
Oppgåve Finn funksjonell determinering her!
Partiell determinering FAGVALG(studnr, fagkode, fagnavn, semester) Har samansett primærnøkkel Fagnavn er determinert av ein del av nøkkelen
Andre normalform - 2NF I ein tabell på 2NF skal kvar ikkje-nøkkelkolonne determinerast av heile primærnøkkelen, ikkje berre deler av han. Løysing: Del opp i to tabellar: FAGVALG(studnr, fagkode*, semester) og FAG(fagkode, fagnavn)
Surrogatnøkkel Finn funksjonell determinering Har vi 2NF?
2NF ved fleire kandidatnøklar • F. eks. ein surrogatnøkkel + ein samansett nøkkel: • FAGVALG(fvnr, studnr, fagkode, fagnavn, semester) • Studnr og fagkode er ein samansett kandidatnøkkel • Fagkode partiell-determinerer fagnavn • 2NF? • Ny definisjon: • Ein tabell er på 2NF når han alt er på 1NF og kvar ikkje-nøkkelkolonne blir determinert av kvar (heile) kandidatnøkkel.
Oppgåve Finn funksjonell determinering Kva kolonner er kandidatnøklar? Grunngi kvifor denne er på 2NF
Transitiv determinering STUDENT(studnr, etternavn, fornavn, adresse, postnr, poststed) Poststed blir determinert av Postnr som ikkje er nøkkelkolonne. Transitiv determinering
Tredje normalform – 3NF Ein tabell er på 3NF dersom 2NF er oppfylt og det ikkje fins transitive determineringar mellom kolonner som ikkje er kandidatnøklar.
Oppgåve Tabellen viser studentar som tar mastergrad i ein studieretning med gitt veileder. Kvar student kan velja fleire studieretningar samtidig, og har ein veileder pr. studieretning Kvar veileder kan ha fleire studentar, men berre innafor ein studieretning Finn funksjonell determinering. Kva normalform er denne på?
Boyce-Codd normalform BCNF Kan oppstå problem ved endring av data. BCNF: Det må ikkje finnast funksjonelle determineringar mellom kandidatnøklar. Kvar determinant er ein kandidatnøkkel. MASTER_GRAD(studnr, studieretning, ansattnr) Ansattnr er veileder i den gitte studieretning som studnr tar mastergrad i
BCNF Deler opp tabellen for å tilfredsstille BCNF
Oppgåve Finn funksjonelle determineringar Finn kva høgste normalform er Kva kan eventuelt gjerast for å få datastruktur med høgste normalform
Oppgåve Funksjonell determinering? Normalform? Er det alltid ein fordel å normalisere?
Oppgåver • Side 101 • Ta utgangspunkt i alle tabellane på side 98-99 og finn funksjonelle determineringar og normalform