Normalisering. Partielle avhengigheter Transitive avhengigheter Normalformer: 1NF, 2NF, 3NF, BCNF Normaliseringsstegene Denormalisering

Like dokumenter
Normalisering. Hva er normalisering?

Normalisering. Hva er normalisering?

Normalisering. Hva er normalisering?

Databaser. - Normalisering -

Dagens tema: Oppdateringsanomalier Normalformer

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Oppdateringsanomalier Normalformer

Relasjonsdatabasedesign

Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF

Oppdateringsanomalier. Normalformer. Institutt for informatikk INF

IN2090 Databaser og datamodellering. Databasedesign og normalformer

1. Normalisering Kommentarer til læreboka

Hva kjennetegner god relasjonsdatabasedesign? Eksempel: Grossistdatabase versjon 1

Relasjonsdatabasedesign

Relasjonsdatabasedesign

SQL og Mengdelære. Oracle, MySQL, Access, bruker forskjellige syntaks.

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Normalformer utover 4NF (ikke pensum)

INF3100 Databasesystemer

UNIVERSITETET. Relasjonsdatabasedesign

Spørringer mot flere tabeller

EKSAMEN DATABASER

Del 1: ER-modellering og databaseteori

God Databasedesign: På vei mot Normalformer

Relasjonsdatabaseteori

UNIVERSITETET I OSLO. Relasjonsmodellen. Relasjoner og funksjonelle avhengigheter. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Plenum: Nøkler, normalformer og funksjonelle avhengigheter

Relasjonsdatabasedesign. Ekstramateriale: Normalformer utover 4NF (ikke pensum)

Relasjonsdatabasedesign

Datamodellering med ORM

Løsningsforslag for Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Relasjonsdatabasedesign

Kunnskapsorganisasjon og gjenfinning 1

Oppgaver INF3100. Oversikt over innholdet

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Databasedesign HVA? HVORDAN? E/R diagram. Begrepsmessig databasedesign. Logisk databasedesign. Fysisk databasedesign

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

UNIVERSITETET I OSLO. Oppskriftsbok. FDer og MVDer Relasjonsalgebra. Institutt for Informatikk. INF3100 Ellen Munthe-Kaas 1

Relasjonsdatabasedesign

Obbligatorisk oppgave 2 Slektsdatabase

Relasjonsdatabasedesign

Oppskriftsbok. FDer og MVDer - oversikt: se s. 3 Relasjonsalgebra - oversikt: se s. 45

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

Skolekorpset. Løsningsforslag til oppgave gitt i forelesning om normalisering LC238D Datamodellering og databaser: Normalisering

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

9-14. Tid: Målform: Sidetall: Hjelpemidler: Ingen. Merknader: Vedlegg: en lapp og. Avdeling

IN2090 Introduksjon til databaser

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Løsning til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Databaser: Relasjonsmodellen, del I

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Relasjonsdatabasedesign

HØGSKOLEN I SØR-TRØNDELAG

del II databasedesign Datamodellering entity-relationship (ER) ord kap. 7: ER-modell kap. 8: logisk skjema og normalisering kap.

EKSAMEN 6102 / 6102N DATABASER

Oppgave 1 ER- og relasjonsmodell 10 %

Relasjonsdatabasedesign

Oppgave 3 - normalisering

svarforslag SLUTTEKSAMEN IBE211 Databaser, våren 2015

Løsningsforslag maskindatabasen på Ifi SQL og normalisering

Det matematisk-naturvitenskapelige fakultet. Kontroller at oppgavesettet er komplett før du begynner å besvare det.

Dagens tema: Relasjonsmodellen (funksjonelle avhengigheter og nøkler, integritetsregler) Realisering: Fra ORM til relasjoner

Oppgaver INF3100. Oversikt over innholdet

SLUTTPRØVE 5602 DATABASER I (inkludert vedlegg og denne forsida) Vedlegg: A: Eksempeldata og B: Svarark til oppgave 4

INF3100 Databasesystemer

1. Relasjonsmodellen Kommentarer til læreboka

Innhold Forord Innledning Kapittel 1 Introduksjon til databaser og databasesystem

Relasjonsdatabasedesign (forts.)

Kunnskapsorganisasjon og gjenfinning 1. Relasjonsmodellen og -databaser

Dagens tema. Den redundansfri datamodellen. Modellenes to formål. Den grunnleggende konstruksjonen det elementære utsagnet

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

For alle ikke-trivielle FDer X A i R: eller A er et nøkkelattributt i R eller X K for noen kandidatnøkkel K i R

INF130: Datahåndtering og analyse

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Datamodellering med E/R

Relasjonsdatabasedesign (forts.)

Tabelldefinisjon og datamanipulering

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Repetisjon: Normalformer og SQL

INF1300 Introduksjon til databaser

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

UNIVERSITETET I OSLO

Miniverden og ER- modell

INF212 - Databaseteori. Kursinnhold

Løsningsforslag eksamen i IN

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet. Løsningsforslag

Universitetet i Oslo Institutt for informatikk. Relasjonsmodellen og normaliseringsteori. Til bruk i IN 212. Ragnar Normann.

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Gruppeøvelse 20/ Dagens tema: - Gruppering/realisering

Gerhard Skagestein: Systemutvikling fra kjernen og ut, fra skallet og inn.

Transkript:

Normalisering Motivasjon Redundans Funksjonelle avhengigheter Determinanter Partielle avhengigheter Transitive avhengigheter Normalformer: 1NF, 2NF, 3NF, BCNF Normaliseringsstegene Denormalisering Pensum: Kapittel 8.2 Databaser Leksjon 8: Normalisering - 1

Redundans: Informasjon som blir gjentatt OrdreNr Ordredato KNr Adresse 20505 20.8.2011 5022 Kongens gate 3 20505 20.8.2011 5022 Kongens gate 3 20506 20.8.2011 5009 Furulia 72 20506 20.8.2011 5009 Furulia 72 20506 20.8.2011 5009 Furulia 72 20507 20.9.2011 5188 Svingen 7 Tabellen inneholder data om både ordrer og kunder. OrdreNr er primærnøkkel, men KNr bestemmer (nåværende) Adresse. Redundans er sløsing med plass og øker sjansen for inkonsistens (hvis vi endrer adresse for en kunde ett sted, men ikke alle). Kunder som ikke har kjøpt noe lar seg ikke representere. Tabellen bør splittes i to enklere tabeller: Kunde og Ordre! Databaser Leksjon 8: Normalisering - 2

Funksjonelle avhengigheter I For en tabell T(A,B,C) vi sier at det er en funksjonell avhengighet B C, hvis for alle rader (a1,b1,c1) og (a2,b2,c2) der b1=b2, gjelder c1=c2. Med andre ord så er tabellen T projisert på B og C en funksjon B C (eller, presisere, en funksjon Π (T) Π (T) ). Eks: Hvis to rader har samme KNr (5022), så må de ha samme Adresse (Kongens gate 3), dvs. KNr Adresse. Vi har en funksjon som tilordner 5009 Furulia 72 5022 Kongens gate 3 5188 Svingen 7 Databaser Leksjon 8: Normalisering - 3

Funksjonelle avhengigheter II Generelt kan vi ha funksjonelle avhengigheter fra en samling av kolonner til en annen samling av kolonner. En funksjonell avhengighet X Y uttrykker en begrensing: Hvis to rader har samme verdi i X må de ha samme verdi i Y. Vi sier at X bestemmer Y, og kaller X en determinant. For å avgjøre om X Y må vi kjenne betydningen til X og Y. Beskrankningen skal gjelde for alle mulige tabellinnhold. Databaser Leksjon 8: Normalisering - 4

Funksjonelle avhengigheter III Eksempler: VareNr Betegnelse VareNr Pris OrdreNr, VareNr Antall Kan disse «forenkles»? VareNr, Betegnelse Pris OrdreNr, VareNr, Antall, Betegnelse Pris VareNr Pris, Kategori Databaser Leksjon 8: Normalisering - 5

Funksjonelle avhengigheter IV Grafisk notasjon: VNr ONr KNr Ant Adr Noen avhengigheter lar vi være underforstått. Databaser Leksjon 8: Normalisering - 6

Funksjonelle avhengigheter IV Grafisk notasjon: A B C D E X kandidatnøkkel: X Y for alle samlinger Y av kolonner i T Noen avhengigheter lar vi være underforstått. Databaser Leksjon 8: Normalisering - 7

Slutningsregler Noen funksjonelle avhengigheter kan utledes fra andre (ved hjelp av slutningsreglene). Eksempel: Antall, KNr Antall Hvis ONr KNr og KNr Adress, ONr, Adresse KNr, Adresse Formelle slutningsreglene: Hvis X Y, så X Y Hvis X Y og Y Z, så X Z Hvis X Y, så X, Z Y, Z så ONr Adresse. Databaser Leksjon 8: Normalisering - 8

Problemer med dårlig design KNr Navn OrdreNr VNr Betegnelse Pris Antall 5022 Østbø 20505 10830 Nisseskjegg 57.50 1 5022 Østbø 20505 77033 Japanbarlind 358.00 5 5009 Lund 20506 10830 Nisseskjegg 57.50 1 5009 Lund 20506 44939 Hobbymaling 115.00 3 5009 Lund 20506 65081 Plantegreip 112.00 5 5188 Bruvik 20507 21032 Furuspon 57.50 3 Viser seg når databasen tas i bruk! Oppdatering: Vi må endre prisen i alle rader som tilhører en vare. Ellers blir databasen inkonsistent! Innsetting: Ikke mulig å ha varer som ikke er bestilt. Hvorfor! Sletting: Hvis vi slette ordre 20506 mister vi informasjon om varen? Databaser Leksjon 8: Normalisering - 9

Dekomponere tabeller KNr Navn ONr VNr Betegnelse Pris Antall 5022 Østbø 20505 10830 Nisseskjegg 57.50 1 5022 Østbø 20505 77033 Japanbarlind 358.00 5 5009 Lund 20506 10830 Nisseskjegg 57.50 1 5009 Lund 20506 44939 Hobbymaling 115.00 3 5009 Lund 20506 65081 Plantegreip 112.00 5 5188 Bruvik 20507 21032 Furuspon 57.50 3 ONr VNr Betegnelse Pris Antall KNr 20505 10830 Nisseskjegg 57.50 1 5022 20505 77033 Japanbarlind 358.00 5 5022 20506 10830 Nisseskjegg 57.50 1 5009 20506 44939 Hobbymaling 115.00 3 5009 20506 65081 Plantegreip 112.00 5 5009 20507 21032 Furuspon 57.50 3 5188 KNr Navn 5022 Østbø 5009 Lund 5188 Bruvik Her tar vi enn normaleseringssteg! Databaser Leksjon 8: Normalisering - 10

Dekomponere tabeller Vi går fra Alt(KNr, Navn, ONr, VNr, Betegnelse, Pris, Antall) til Ordre(ONr, VNr, Betegnelse, Pris, Antall, KNr*) Kunde(KNr, Navn) Hva måtte vi gjøre for å ikke miste informasjon? Hva betyr det at vi ikke mister informasjon? Vi kan rekonstruere den opprinnelige informasjon. Hvordan kan vi utrykke dette presist? Vi få den opprinnelige tabell Alt med hjelp av en likekobling av de nye tabeller Ordre og Kunde! Databaser Leksjon 8: Normalisering - 11

Normalformer Enhver tabell på BCNF er på 3NF, osv. BCNF 3NF 2NF 1NF Databaser Leksjon 8: Normalisering - 12

Normalisering Normalisering består i å dekomponere (splitte opp) tabeller til flere enklere tabeller slik at: Redundans ikke oppstår Informasjonsinnholdet bevares Normaliseringsteori gir oss: Presise regler for å avgjøre om og hvordan tabeller skal dekomponeres basert på kunnskap om funksjonelle avhengigheter. Databaser Leksjon 8: Normalisering - 13

Normaliseringsprosessen Tabell på 1NF Tabell på 2NF Tabell på 3NF Tabell på BCNF Fjern partielle avhengigheter. Fjern transitive avhengigheter. Fjern resterende redundans. Databaser Leksjon 8: Normalisering - 14

Normaliseringssteg A B C D E F A B C D E* E F A B C D* D E* For funksjonell avhengighet E F i tabell T: E og F legges inn i ny tabell med primærnøkkel E. Deklarer E i T som fremmednøkkel mot ny tabell. Fjern F fra T. Databaser Leksjon 8: Normalisering - 15

1. NormalForm (1NF) En tabell tilfredsstiller 1NF hvis alle verdier er atomære. 1NF er kun av historisk interesse; enhver tabell er pr. definisjon på 1NF. Restriksjonen til atomære verdier hindrer «tabeller i tabeller» / «repeterende grupper». Vi har ikke jobbet med tabeller som ikke er på 1NF. Databaser Leksjon 8: Normalisering - 16

2. NormalForm (2NF) En tabell tilfredsstiller 2NF hvis den er på 1NF og dessuten ikke har attributter som er partielt avhengig av primærnøkkelen. A B C D E Brudd! Kan det skje at vi har B A? Resultat av normalisering: A B* C E B D Databaser Leksjon 8: Normalisering - 17

3. NormalForm (3NF) En tabell tilfredsstiller 3NF hvis den er på 2NF og dessuten ikke inneholder transitive funksjonelle avhengigheter. A B C D E Brudd! Hvor har vi her transitivitet? Resultat av normalisering: A B C* D C E Databaser Leksjon 8: Normalisering - 18

Boyce-Codd NormalForm (BCNF) En determinant er en samling av kolonner som bestemmer minst en annen kolonne. En tabell er på BCNF hvis den er på 3NF og enhver determinant bestemmer alle kolonner (supernøkkel). Problemet er overlappende kandidatnøkler! A B C D E Brudd! En mulig løsning: C A B C* D E Databaser Leksjon 8: Normalisering - 19

Normaliseringseksempel I StudNr SNavn KursKode KursNavn StPoeng EksDato Kar 1. Kartlegg funksjonelle avhengigheter. 2. Bestem kandidatnøkler / primærnøkkel. 3. Avgjør normalform. 4. Utfør normalisering til BCNF. Obs! Det lønner seg å behandlefunksjonelle avhengigheter fra en gitt kolonne samlet. Gjenta steg 2-4 for hvert mellomresultat. Databaser Leksjon 8: Normalisering - 20

Normaliseringseksempel II Gitt en tabell T(A, B, C, D). Det er funksjonelle avhengigheter fra A til B, fra B til D og fra C til A. Bestem kandidatnøkkel. Hvilken normalform er tabellen på? Utfør normalisering til BCNF. Det kan virke underlig at vi kan normalisere en tabell som inneholder data vi ikke vet hva er. Hvordan er dette mulig? Databaser Leksjon 8: Normalisering - 21

E/R og normalisering Er normalisering et alternativ til E/R? Mulig strategi: 1. Start med «universalrelasjonen» (alt i èn tabell). 2. Kartlegg funksjonelle avhengigheter. 3. Utfør normalisering. Entiteter med attributter er en mer naturlig tenkemåte E/R kan brukes for å kommunisere med brukere. Normalisering kan brukes for å sjekke en datamodell. Dette er en jobb for databasedesigneren. Databaser Leksjon 8: Normalisering - 22

Denormalisering Normalisering gir flere tabeller. Flere tabeller gir flere likekoblinger. Sikring av visse forretningsregler krever at DBHS ser i flere tabeller. Av effektivitetshensyn kan vi i visse tilfeller forsvare å slå sammen normaliserte tabeller. Dette kalles for denormalisering, og gir en form for «kontrollert redundans». Normalisering fra 3NF til BCNF gir forretningsregler som er tunge for DBHS å sikre. Det er dermed ikke uvanlig å stoppe normalisering ved 3NF. Databaser Leksjon 8: Normalisering - 23