Normalisering. Varför? För att åstadkomma en så bra struktur i databasen som möjligt med minimalt med dubbellagrad info.



Relevanta dokument
Idag. Databaskvalitet(??) Databaskvalitet... Databaskvalitet...

Logisk databasdesign

Lösningsförslag till tentamen för 1E1601

Databaser Design och programmering

Lösningsförslag till. tentamen för 1E1601

Universitetet: ER-diagram

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

GIS, databasteknik och kartografi. Kursmaterial för databasdelen

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema

Idag. Hur vet vi att vår databas är tillräckligt bra?

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion.

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Analytisk relationsdatabasdesign

2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY!, där RIDKURS.KursId = KURS.KursId 3NF Hästnamn, Art, NY! NY! NY! NY!

Grunderna för relationsmodellen!

Konceptuella datamodeller

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Pga att (Nummer och Typ) tillsammans bestämmer övriga attribut funktionellt väljer vi (Nummer, Typ) till primärnyckel:

Informationssystem och databasteknik

NORMALISERING. Mahmud Al Hakim

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

Karlstads Universitet, Datavetenskap 1

Databaser och databasdesign. Den relationella modellen, normalisering och modellering (2)

Föreläsning 6: Normalisering & funktionella beroenden

Funktionella beroenden - teori

Lite om databasdesign och modellering

IT i organisationer och databasteknik

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

Karlstads Universitet, Datavetenskap 1

Tentamen för DD1370 Databasteknik och informationssystem

Databaser och Datamodellering Foreläsning IV

Exempel-Tentamen III

Relationell databasdesign

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Karlstads Universitet, Datavetenskap 1

Relationsdatabasdesign

Tentamen i Databasteknik

Tentamen i Databasteknik

Ett arbetsexempel Faktureringsrutin

Kvalitetstänkande. Utgångsläge Samtliga ER-diagram har överförts till scheman

Tentamen NDA01G Öppen för alla. Tentamenskod: Inga hjälpmedel är tillåtna

Tentamen för DD1370 Databasteknik och informationssystem

Föreläsning 3 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Vad är ett databashanteringssystem?

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Tentamen 2I1033, IT i Organisationer och Databasteknik lördag 17/4 2004, kl LÖSNINGSFÖRSLAG

Databasdesign. E-R-modellen

Tentamen ISGB01 (delkurs i ISGB24) Databasdesign 7,5 Poäng

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem

Logisk modell. Fysisk modell. Datamodeller Konceptuell modell

Databaser design och programmering. Design processen ER- modellering

Databasteknik NADA, KTH & SU

Webbprogrammering, grundkurs 725G54

TENTAMEN TDDB77 Databaser och Bioinformatik 12 juni 2007, kl 14-18

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Tentamen plus lösningsförslag

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Tentamenskod: Tentamensdatum: Tid: 14:00-19:00. Inga hjälpmedel är tillåtna

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Idag. Exempel. Exempel modellen (1) Exempel...

Modul DB1-2 Datamodellering

Databasteknik. Vad är. Vad är databaser bra till? data? föreläsare: Kjell Lindqvist. och NADA. databaser? och. vad är de bra för?

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13

Design och underhåll av databaser

Tentamen i. Databasteknik

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen ISGB01, ISGB24. Databasdesign 7,5 Poäng

Databasteori. Övningar

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5

Lösningsförslag till Tentamen,

Lösningsförslag till tentamen för DD1370 Databasteknik och informationssystem

Databaser design och programmering. Fö 2: Design processen, ER-modellering

25/11/14. Databasteknik och informationssystem DD1370. Påminnelse inför Lab 1 redovisningen. Repetition: ER modellering (gammalt + nytt)

Tentamen för DD1370 Databasteknik och informationssystem

Lösningar till tentamen i EDAF75

Relationsmodellen. Relations modellen är idag den mest änvända datamodellen för kommersiella

Tentamen EIT:DB Databastmetodik 11/ kl Lösningsförslag

TENTAMEN TDDB77 Databaser och Bioinformatik 24 april 2004, kl 14-18

Tentamen för 1E1601. Måndag 10 mars 2003, kl Alla hjälpmedel tillåtna

Exempel tentamen. Skriv bara på en sida av pappret Skriv namn på varje papper Skriv läsligt, annars rättas inte tentamen Alla hjälpmedel är tillåtna

Inst. för Data- och Systemvetenskap SU Maria Bergholtz. Tentamen. 21/ kl Inga hjälpmedel är tillåtna (annat än ordbok).

Tentamen för DD1370 Databasteknik och informationssystem

Del 2: ER-modellering och överföring till Databasstruktur v0.9

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen Lördag 8 juni kl

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Laboration 1, Datamodellering. Observera. Tips. Förberedelse. Genomförande

16/11/14. Databasteknik och informationssystem DD1370. Information. Dagens föreläsning: ERmodeller Dagens föreläsning. Påminnelse: Kursens mål

GIS, databasteknik och kartografi. Databasmodellering

Tentamen. Databasmetodik Lördag 27 september 2014 kl

Idag. Varför modellera? Modellering. Modelleringsverktygets egenskaper. Modelleringsverktyget

TDDI60 Tekniska databaser

Lösningsförslag, tentamen i Databaser

Idag. Modellering. Varför modellera? Konceptuell modell Modelleringsverktyg Objektklasser Sambandsklasser Knepiga attribut Modelleringsprocessen

Idag. Modellering. Varför modellera? Konceptuell modell Modelleringsverktyg Objektklasser Sambandsklasser Knepiga attribut Modelleringsprocessen

Uppdelning. Relationell databasdesign, FB Teori Låt R vara ett relationsschema. R 1, R 2,..., R n är en uppdelning av

Transkript:

Normalisering Varför? För att åstadkomma en så bra struktur i databasen som möjligt med minimalt med dubbellagrad info. Tillbaka i modelleringsfasen. 1NF: Vad menas med ett sammansatt attribut? Exempel: pnr ger all personinfo, där personinfo kan ha värdet Per Jonsson, Fiskvägen 3, 412 45 Bergsjö Bör delas upp i flera attribut: namn, (gatu)adress, postnr, ort 2-3 NF: Innehåller nya begrepp, de förklaras bäst med exempel Funktionella beroenden Attributen A, B, C, D, E och F utgör hela U (universum), dvs alla attribut i den blivande databasen. A --> B, C omm varje värde på A ger EXAKT ETT värde på B och EXAKT ETT värde på C. D, E --> F omm varje kombination av värden på D och E ger EXAKT ETT värde på F. Kandidatnycklar En nyckel är ett eller flera attribut som tillsammans ger unika värden på ALLA attribut i hela databasen. En kandidatnyckel är en nyckel som är minimal, dvs kandidatnyckeln ger hela U men om vi tar bort ett enda attribut från den så har vi inte längre en nyckel. Ex U = { A, B, C, D, E, F} A --> B, C D, E --> F Nycklar: { A, B, C, D, E, F}, { A, B, C, D, E,},{ A, B, D, E, F}, { A, C, D, E, F}, { A, B, D, E,}, { A, C, D, E,}, { A, D, E, F} och { A, D, E} Kand nyckel: endast { A, D, E}. (I detta fall finns bara en kand nyckel.) I verkligheten * STORA Relationer (många attribut) * MÅNGA Relationer (många tabeller) Långt ifrån säkert att en bra modellering ger 3NF. DÅ: 1) Modellera 2) För varje databasrelation - normalisera till 3NF 3) Rita modell... MEN i våra babyexempel (jämfört med verkligheten) så får man vanligen 3NF direkt. Så för att ni ska få en chans att se vad normalisering går ut på, så normaliserar vi UTAN att modellera först.

Uppgift 1 Direkt överföring ej möjlig. Varför? Jo på kortet ges alla uppgifter av pnr, men för en databas gäller inte detta. En anställd har flera försäkringar och flera anhöriga. Vad har vi för attribut? U = {Namn, pnr, Adress, Ptnr, Ptadress, ADatum, Lön, Förstyp, AnhNamn, Anhpnr, AnhRel} (11 st) I) Identifiera de funktionella beroendena! (FD) pnr --> Namn, Adress, Ptnr, Ptadress, ADatum, Lön Ptnr --> Ptadress Anhpnr --> AnhNamn pnr, Anhpnr --> AnhRel Värdet på Förstyp ger ingen unik info om något annat attributs värde. II) Beräkna transitiva höljen! Dvs mängden av de attribut som via de funktionella beroendena ges av VL:t. {pnr} + = {pnr, Namn, Adress, Ptnr, Ptadress, ADatum, Lön} {Ptnr} + = {Ptnr, Ptadress} {Anhpnr} + = {Anhpnr, AnhNamn} {pnr, Anhpnr} + = { pnr, Anhpnr, AnhRel, Namn, Adress, Ptnr, Ptadress, ADatum, Lön, AnhNamn} = U \ {Förstyp} Eftersom Förstypen ej ges av något annat attribut måste den ingå i varje kandidatnyckel. {pnr, Anhpnr, Förstyp} + = { pnr, Anhpnr, Förstyp, AnhRel, Namn, Adress, Ptnr, Ptadress, ADatum, Lön, AnhNamn} = U Är en kandidatnyckel. Finns det fler? Nej. Ty: Anhpnr är det enda attribut som ger AnhNamn, pnr måste finnas för namn, lön mm, kan inte heller tas bort OCH alla andra attribut ges av dessa tre, så om något av dem läggs till har vi inte längre en minimal nyckel. III) Välj primärnyckel = vår enda kand nyckel ((pnr, Anhpnr, Förstyp) Namn, Adress, Ptnr, Ptadress, ADatum, Lön, AnhNamn, AnhRel) (11 st) 1NF Prima attribut, Icke-prima attribut Beror alla icke-prima attribut på hela nyckeln? Nej! Namn beror tex inte på förstyp,... Så vi ska bryta ut. Vilka attribut beror bara av pnr? (Se de transitiva höljena) Identifiera och bryt ut! ((pnr) Namn, Adress, Ptnr, Ptadress, ADatum, Lön) Kvar i den andra relationen just nu: ((pnr, Anhpnr, Förstyp), AnhNamn, AnhRel)

Beror AnhNamn på hela hela nyckeln? Nej! Bryt ut ((Anhpnr) AnhNamn) Kvar i den andra relationen just nu: ((pnr, Anhpnr, Förstyp), AnhRel) Beror AnhRel på hela hela nyckeln? Nej! Bryt ut ((pnr, Anhpnr) AnhRel) Alltså får vi: ((pnr) Namn, Adress, Ptnr, Ptadress, ADatum, Lön) ((Anhpnr) AnhNamn) ((pnr, Anhpnr) AnhRel) ((pnr, Anhpnr, Förstyp)) 2NF Finns det någon relation ovan där något icke-primt attribut beror på något annat icke-primt attribut? JA! ((pnr) Namn, Adress, Ptnr, Ptadress, ADatum, Lön) Bryt ut! (OBS! Ptnr KVARSTÅR!!!) Anställd: ((pnr) Namn, Adress, Ptnr, ADatum, Lön) Boende: ((Ptnr) Ptadress) Anhörig: ((Anhpnr) AnhNamn) FamMedlem: ((pnr, Anhpnr) AnhRel) Försäkrad: ((pnr, Anhpnr, Förstyp)) 3NF Måste kolla att resultatet blev vettigt! Använd reverse engineering dvs gå från dbstruktur --> modell. Hur? På den här kursen kan ni utgå ifrån att en relation med EN I-term är ett objekt och att relationer med X st I-termer (X > 1) är ett samband mellan X objekt. FamMedlem är alltså M:N, Försäkrad har ordning 3. Eftersom det saknas relation som har Förstyp som I-term måste det vara en objektklass utan E-termer. Tänk också på att leta efter försvunna 1:N och 1:1 samband i objektens E-termer. Ptnr i Anställd är just länken Bor till Boende.

Vettigt? Nja bättre med ------ (Försäkring beror inte av anhöriga) Leder till ändringen: Försäkring: ((pnr, Anhpnr, Förstyp)) blir i stället ((pnr, Förstyp)) Då relationen saknar icke-prima attribut ==> fortfarande i 3NF Uppgift 2 Vad har vi för attribut? U = { pnr, namn, Libet, Hlpnr, Hlnamn, Hlrum, Hltel, Pjnr, Pjnamn, Pjbeskr, Pjpoäng, Ipoäng, datum} (13 st) Antagande: Varje projekt har (exakt) en handledare. Varje handledare har exakt ett telnr. I) Identifiera de funktionella beroendena! (FD) pnr --> namn, Libet Hlpnr --> Hlnamn, Hlrum, Hltel Pjnr --> Pjnamn, Pjbeskr, Pjpoäng, Hlpnr pnr, pjnr --> Ipoäng, datum II) Beräkna transitiva höljen! {pnr} + = {pnr, Namn, Libet} {Pjnr} + = {Pjnr, Pjnamn, Pjbeskr, Pjpoäng, Hlpnr, Hlnamn, Hlrum, Hltel} {pnr, Pjnr} + = { pnr, Pjnr, Ipoäng, datum, Namn, Libet, Pjnamn, Pjbeskr, Pjpoäng, Hlpnr, Hlnamn, Hlrum, Hltel} = U Så, {pnr, Pjnr} är en kandidat nyckel. Finns det fler? Nej, ty inga attribut ger pnr eller Pjnr ==> de måste vara med i varje kandidatnyckel och eftersom de tillsammans är kandidatnyckel så finns inga fler. III) Välj primärnyckel = vår enda kand nyckel

((pnr, Pjnr) namn, Libet, Pjnamn, Pjbeskr, Pjpoäng, Hlpnr, Hlnamn, Hlrum, Hltel, Ipoäng, datum) Beror alla icke-prima attribut på hela nyckeln? Nej! Vilka attribut beror bara av pnr? (Se de transitiva höljena) Identifiera och bryt ut! ((pnr) Namn, Libet) Kvar i den andra relationen just nu: ((pnr, Pjnr), Pjnamn, Pjbeskr, Pjpoäng, Hlpnr, Hlnamn, Hlrum, Hltel, Ipoäng, datum) Vilka attribut beror bara av pnr? (Se de transitiva höljena) Identifiera och bryt ut! ((Pjnr) Pjnamn, Pjbeskr, Pjpoäng, Hlpnr, Hlnamn, Hlrum, Hltel) Kvar i den andra relationen just nu: ((pnr, Pjnr), Ipoäng, datum) Beror Ipoäng och datum på hela hela nyckeln? JA! Alltså får vi: ((pnr) Namn, Libet) ((Pjnr) Pjnamn, Pjbeskr, Pjpoäng, Hlpnr, Hlnamn, Hlrum, Hltel) ((pnr, Pjnr), Ipoäng, datum) 2NF Finns det någon relation ovan där något icke-primt attribut beror på något annat icke-primt attribut? JA! ((Pjnr) Pjnamn, Pjbeskr, Pjpoäng, Hlpnr, Hlnamn, Hlrum, Hltel) Bryt ut! (OBS! Hlpnr KVARSTÅR!!!) Student: ((pnr) Namn, Libet) Projekt: ((Pjnr) Pjnamn, Pjbeskr, Pjpoäng, Hlpnr) Handleder: ((Hlpnr) Hlnamn, Hlrum, Hltel) Studie: ((pnr, Pjnr), Ipoäng, datum) 3NF OH: Efter Normalisering Ser bra ut!

4) U = {Patnr, PatNamn, FamNr, FamNamn, FamAdr, BetBalans, TandStatus, ÅtgKod, ÅtgBeskr, Pris, Datum} (11) Funktionella beroenden (FD) PatNr PatNamn, FamNr, BetBalans, TandStatus FamNr FamNamn, FamAdr ÅtgKod ÅtgBeskr ÅtgKod, Datum Pris Viktigt att varje skärningspunkt mellan kolumn och rad, endast innehåller ett värde. Vad menar vi med FamAdr? Rimligen: adr, Ptnr, Ptadr. Tre olika saker! Dela upp! Ger 13 attribut i U. Ger även nytt FD: Ptnr PtAdr Hitta alla kandidatnycklar! Börja med att titta på de transitiva höljena. 1) Betrakta VL. {Patnr} + = {PatNr, PatNamn, FamNr, FamNamn, adr, Ptnr, PtAdr, BetBalans, TandStatus } {FamNr} + = { FamNr, FamNamn, adr, Ptnr, PtAdr } {ÅtgKod} + = {ÅtgKod, ÅtgBeskr } {ÅtgKod, Datum } + = {ÅtgKod, Datum, Pris, ÅtgBeskr } {Ptnr} + = { Ptnr, PtAdr }... Patnr, ÅtgKod, Datum står inte i HL i något FD. Måste ingå i varje kand.nyckel. {Patnr, ÅtgKod, Datum } + = U ==> Enda kandidatnyckeln. Prima attribut: Patnr, ÅtgKod, Datum Icke-prima: PatNamn, FamNr, FamNamn, adr, Ptnr, PtAdr, BetBalans, TandStatus, ÅtgBeskr, Pris

1NF ((Patnr, ÅtgKod, Datum) PatNamn, FamNr, FamNamn, adr, Ptnr, PtAdr, BetBalans, TandStatus, ÅtgBeskr, Pris ) (13) Beror alla icke-prima av hela nyckeln? NEJ! Bryt ut! 2NF ((Patnr), PatNamn, FamNr, adr, Ptnr, PtAdr, FamAdr, BetBalans, TandStatus) ((ÅtgKod) ÅtgBeskr) ((ÅtgKod, Datum), Pris ) ((Patnr, ÅtgKod, Datum)) Finns det något transitivt beroende? JA: PatNr FamNr FamNamn, adr, Ptnr, PtAdr ÄVEN: FamNr Ptnr PtAdr Bryt ut! 3NF Patient ((Patnr), PatNamn, FamNr, BetBalans, TandStatus) Familj ((FamNr), FamNamn, adr, Ptnr) Boende ((Ptnr) PtAdr) Åtgärd ((ÅtgKod) ÅtgBeskr) Kostnad ((ÅtgKod, Datum), Pris ) Behandling ((Patnr, ÅtgKod, Datum))