Föreläsning 6: Normalisering & funktionella beroenden

Relevanta dokument
Karlstads Universitet, Datavetenskap 1

Logisk databasdesign

Konceptuella datamodeller

NORMALISERING. Mahmud Al Hakim

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

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

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

Databaser Design och programmering

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

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

Informationssystem och databasteknik

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

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

Databaser och Datamodellering Foreläsning IV

Idag. Databaskvalitet(??) Databaskvalitet... Databaskvalitet...

Analytisk relationsdatabasdesign

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

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. Design processen ER- modellering

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

IT i organisationer och databasteknik

Universitetet: ER-diagram

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Grunderna för relationsmodellen!

Karlstads Universitet, Datavetenskap 1

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

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

Webbprogrammering, grundkurs 725G54

Lite om databasdesign och modellering

Relationell databasdesign

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Tentamen DATABASTEKNIK - 1DL116

Funktionella beroenden - teori

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 kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Föreläsning 4 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Normalisering (Analytisk databasdesign)

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

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

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

Föreläsning 5: Relationsmodellen

Karlstads Universitet, Datavetenskap 1

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

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Tentamen för DD1370 Databasteknik och informationssystem

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

Databasdesign. E-R-modellen

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

Design och underhåll av databaser

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

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

Databasteori. Övningar

Lösningsförslag till Tentamen,

Concepts learned this far. ER till relationer. ER till relationer. ER till relationer. TDDD12 Database Technology

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

Tentamen plus lösningsförslag

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

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

Relationsmodellen och syntetisk databasdesign

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

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

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

Databasteori. Övningar

2. Redundans 3. Normalformer

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

Föreläsning 3 Dagens föreläsning går igenom

Tentamen i Databasteknik

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

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året

Innehåll MySQL Intro. Ex på ett index Index typer ISAM Balanserat träd Pk och Fk i MySQL Eget index För o nackdelar med index

TDDI 60 Tekniska databaser

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

Exempel-Tentamen III

Informationssystem och Databasteknik

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Relationsdatabasdesign

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

TENTAMEN TDDB77 Databaser och Bioinformatik 17 mars 2005, kl 8-12

1.Lär känna MS SQL Observera. Tips. Förberedelse

Tentamen för DD1370 Databasteknik och informationssystem

Uppgift 1. (a) Ange tre orsaker hur felaktigheter i en databas kan uppsta. Till varje av dem, ange en lamplig metod som anvands som atgard mot dessa.

Tentamen. Databasmetodik Lördag 27 september 2014 kl

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

TDDI60 Tekniska databaser

Lösningsförslag Tentamen, 25 april 03

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

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

Rättningsmall tenta den 25e oktober Uppgift 1. Uppgift 2. se slides

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

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

Databaser. Vad du ska lära dig: Ordlista

Databasteori. Övningar

Tentamen för DD1370 Databasteknik och informationssystem

Lösningsförslag, tentamen i Databaser

Modul DB1-1 Databasmodellering

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

Tentamen för DD1370 Databasteknik och informationssystem

Transkript:

Föreläsning 6: Normalisering & funktionella beroenden DVA234 Databaser IDT Akademin för Innovation, Design och Teknik

Innehåll Föreläsningens mål: Att ge en överblick över hur normalisering fungerar Önskvärda egenskaper i relationsdatabaser Designregler Funktionella beroenden Normalisering Normaliseringsprocessen Normalformer Normaliseringsövning 2

Vad är problemet? DB P# Enamn Fnamn Akad# ANamn AOrt Kurs# KursNamn 7101231234 Larsson Lars 101 IDT Västerås DVA110 Programvaruteknik 7101231234 Larsson Lars 101 IDT Västerås DVA230 Datornätverk 7101231234 Larsson Lars 101 IDT Västerås DVA251 Operativsystem 6410214321 Frisk Ove 101 IDT Västerås DVA300 Datorgrafik 6410214321 Frisk Ove 101 IDT Västerås ELA280 Analog Elektronik 6410214321 Frisk Ove 101 IDT Västerås ELA290 Digital Elektronik 6410214321 Frisk Ove 102 HVV E-tuna BC4110 Psykologi gk 6410214321 Frisk Ove 102 HVV E-tuna BC4120 Psykologi fk 7207171234 Alm Linda 108 EST Västerås ST2780 Materialteknik 4912071234 Nordin Hans 109 IDT E-tuna MFT711 Produktutveckling En databas med endast en tabell 3

Vad är problemet? Redundant information Samma information upprepas i flera rader, flera kolumner Risk för inkonsistent inmatning Ändringar/uppdateringar krävs på flera ställen Tänk databaser med tusentals eller miljontals rader!!! Mix av olika entitetstyper Personal (Lärare), Akademier och Kurser Hur lagra info om en lärare? Hur lagra info om en akademi? Hur lagra info om en kurs? Oberoende entiteter blir beroende av varandras existens 4

Uppdateringsanomalier anomali = abnormitet, avvikelse, rubbning, etc Uppdateringsanomalierna innebär problem vid följande operationer: INSERT: tillägg av nya rader UPDATE: uppdatering av attribut i existerande rader DELETE: borttagning av rader INSERT-anomalin För att lägga till en rad krävs uppgifter om samtliga entiteter, annars riskeras NULL-värden i vissa fält. (Vilket inte går för composite PK!!) Exempel: För att lagra uppgifter om en akademi krävs också info om en lärare och en kurs. 5

Uppdateringsanomalier : UPDATE UPDATE-anomalin Uppdatering av attribut krävs på flera rader Risk för inkonsistent uppdatering En rad (entitet) kan missas Felaktiga och motsägande uppgifter kan uppstå Exempel: IDT och EST byter namn till EDT! Uppdateringar krävs för varje kurs och för varje lärare (minst 200 rader!!!) 6

Uppdateringsanomalier : DELETE DELETE-anomalin Borttagning av rader tar bort mer info än nödvändigt Risk för att man tappar information Entiteter som ska vara kvar försvinner också Exempel: Den sista personen på EST, Linda Alm, ska sluta (tas bort), men EST ska leva vidare liksom hennes kurs ST2780. Info om EST och ST2780 försvinner också = inte bra! 7

Så Hur löser vi detta?? DB P# Enamn Fnamn Akad# ANamn AOrt Kurs# KursNamn 7101231234 Larsson Lars 101 IDT Västerås DVA110 Programvaruteknik 7101231234 Larsson Lars 101 IDT Västerås DVA230 Datornätverk 7101231234 Larsson Lars 101 IDT Västerås DVA251 Operativsystem 6410214321 Frisk Ove 101 IDT Västerås DVA300 Datorgrafik 6410214321 Frisk Ove 101 IDT Västerås ELA280 Analog Elektronik 6410214321 Frisk Ove 101 IDT Västerås ELA290 Digital Elektronik 6410214321 Frisk Ove 102 HVV E-tuna BC4110 Psykologi gk 6410214321 Frisk Ove 102 HVV E-tuna BC4120 Psykologi fk 7207171234 Alm Linda 108 EST Västerås ST2780 Materialteknik 4912071234 Nordin Hans 109 IDT E-tuna MFT711 Produktutveckling En databas med endast en tabell 8

Vad är bra databasdesign? Hur undviks uppdateringsanomalierna? Vad skiljer en bra design från en dålig? För att lösa frågorna finns praktiska och formella metoder: Praktiska (informella) metoder består av designregler (guidelines) Formella metoder (mer precisa) bygger på analys och egenskaper hos relationer Formella metoderna bygger på följande begrepp: Funktionella beroenden Normalformer 9

Informell metod Egentligen tre huvudregler: Varje tabell ska beskriva en typ av sak Varje rad ska innehålla data om en enda sådan sak Varje sak ska finnas på en enda rad Tänk er en tabell för anställda: Anställd(Pnr, Namn, Telefon, Lön, Chef, Avdelning) Undvik t ex: Chefstelefon Detta är information som hör till chefen Avdelningsadress Detta är information som hör till avdelningen 10

Formella designmetoder Funktionella beroenden (Functional Dependencies FDn): Definierar beroenden mellan attribut Givet en mängd av FD kan ytterligare FDn härledas m.h.a. regler Normalformer FDn och nycklar används för att definiera en relations normalform. Onormaliserade relationer normaliseras till olika nivåer av normalformer 1:a, 2:a, 3:de normalformena vanligast (Dessa ingår i kursen) Boyce Codds normalform, 4:de & 5:e normalformerna (Ingår inte, kolla i boken eller på nätet) 11

Funktionella beroenden För X -> Y, där X och Y är attributmängder i en relation, gäller att två tupler som har samma värde för X, måste också ha samma värde för Y, dvs X bestämmer/determinerar Y T.ex: StudentID -> Namn //Studentid bestämmer namnet Pnr -> {Namn, Adress} //Pnr bestämmer namn och adress {Pnr, Kurskod} -> Tim. //Pnr och kurskod bestämmer timmar X -> Y för relationen R specificerar ett villkor som måste gälla för alla rader i relationen R En alternativ notation är med pilar mellan attribut: Pnr# Namn Adress FDn fås genom att analysera beroenden och villkor mellan attribut. Det är databasdesignerns uppgift att hitta och specificera dem! 12

Så, vår tabell igen Några av de märkliga funktionella beroendena i denna tabell är: DB P# Enamn Fnamn Akad# ANamn AOrt Kurs# KursNamn Personnr determinerar namn Akademi determinerar dess namn och ort Kurskod determinerar kursens namn Kurskoden determinerar vilken akademi den ges på och vilken person som ger den. eller nått... 13

Att hitta FDn Att hitta funktionella beroenden kräver, likt för ER modellering Kunskap om semantiken för datat Betänk följande tabell Kan vi givet denna tabell anta något FD?? X Y Kalle 42 Pelle 45 Lisa 26 Kalle 42 Lisa 26 Det är lätt att tro att X->Y, eller hur?? 14

Att hitta FDn Att hitta funktionella beroenden kräver, likt för ER modellering Kunskap om semantiken för datat Betänk följande tabell Kan vi givet denna tabell anta något FD?? Studie Förnamn Skostorlek Kalle 42 Pelle 45 Lisa 26 Kalle 42 Lisa 26 Pelle 41 Man kan troligen aldrig göra ett verktyg som automagiskt hittar FDn 15

Vad anses normalt!? Vad är en normalform? En relations normalform bestäms av egenskaperna hos funktionella beroenden mellan relationens attribut eller Relationens FDn används för att avgöra relationens normalform Normalformer är rangordnade efter deras kvalitet : 1NF (lägst), 2NF, 3NF, BCNF, 4NF, 5NF (högst) osv Ju högre normalformen är desto mindre av problemen med: redundanta tupler/värden uppdateringsanomalier Målet är att designa relationer med höga normalformer. Normalisering är processen för att omarbeta relationer av en viss normalform till en högre normalform. 16

Normaliseringsprocessen Normaliseringen består av följande steg: 1. Analysera och identifiera FDn för alla relationsscheman 2. Avgöra normalformen för varje relationsschema = testa vilken normalforms egenskaper som relationsschemat uppfyller 3. Omarbeta eller dela upp relationsscheman med låg normalform (typiskt < 3NF) 4. Avgöra normalformen för ev. nya relationsscheman: om lägre än 3NF, gå tillbaka till pkt 3. om 3NF eller högre = relationsschemat är normaliserat = klart! Normaliseringsprocessen är klar när alla relationsscheman är minst i 3NF, dvs databasen anses vara normaliserad. I sällsynta fall pågår normaliseringen tills BCNF, 4NF eller 5NF uppfylls används sällan praktiskt, men behövs i speciella fall. 17

Repetition nyckelbegrepp Kandidatnyckel (eng. candidatekey) En nyckel som kandiderar till att vara primärnyckel för en relation En relation kan ha flera kandidatnycklar (StudentID OCH Pnr t.ex) Primärnyckel En kandidatnyckel som utses till att vara den primära Kandidatnycklar som inte är primärnyckel kallas också för alternativ nycklar (eng. alternate keys) eller sekundärnycklar Främmande Nyckel En nyckel som pekar ut en primärnyckel i en (annan) tabell 18

1:a normalformen 1NF Definition: Ett relationsschema är i 1NF om varje attribut endast kan ha ett odelbart (atomärt) värde. Ovanstående innebär: varje attribut kan högst ha ett värde värdena måste vara odelbara värdemängder (sets) och andra sammansatta värden (composite values) tillåts inte attribut kan inte ha relationer som värden relationer i relationer (nästlade relationer) tillåts inte I praktiken är 1NF inbakat i definitionen av relationsmodellen. 1NF innebär då att tabeller/relationer garanteras följa relationsmodellens principer. 19

1NF-normalisering 1NF-normalisering innebär att relationer med flervärdesattribut, eller nästlade relationer, görs om så att de strikt följer relationsmodellens principer: ett värde per attribut! Tupler med flervärdesattribut bryts upp i flera tupler, ett för varje värde i flervärdesattributet. Övriga attribut i tuplerna blir redundanta! Exempel på nästa sida 20

Exempel: 1NF-normalisering (a) ett relationsschema som inte är i 1NF. (b) Exempelstillstånd för relationen DEPARTMENT. (c) 1NF version av samma relation. Notera nyckeln! 21

2:a normalformen 2NF Definition: Ett relationsschema är i 2NF om det dels är i 1NF, dels att varje ickenyckelattribut är beroende på hela primärnyckeln. Beroenden på hela primärnyckeln innebär att alla FDn måste vara vänsterminimala: dvs det får inte finnas FDn med beroenden på delar av nyckeln (nyckelattributen), s.k. partiellt nyckelberoende 2NF är endast relevant att analysera när primärnyckeln består av flera attribut. 22

2NF-normalisering 2NF-normalisering innebär att man eliminerar beroenden till delar av primärnyckeln. Exempel: Givet en relation R{A, B, C, D, E}, där A och B är nyckelattribut MEN attributet E enbart beror på B, dvs följande FDn gäller: A, B à C, D, E Bà E Normalisering till 2NF innebär att E måste brytas ut till en ny relation S med B som PK och FK till R. Resultat blir två relationer: R {A, B, C, D} S {B, E} där A och B är PK och B är FK till S där B är PK 23

Exempel: 2NF-normalisering Normalisering av EMP_PROJ till 2NF-relationerna EP1, EP2 och EP3. 24

3:e normalformen 3NF Definition: Ett relationsschema är i 3NF om det är i 2NF och att varje ickenyckelattribut inte är transitivt beroende på primärnyckeln. Inga transitiva beroenden på PKn innebär: Att ickenyckelattribut inte får vara beroende på andra ickenyckelattribut Exempel: Givet en relation R{A, B, C, D, E}, där A och B är nyckelattribut och attributet E beror på D som i sin tur beror på A och B, dvs följande FDn gäller: A, B à C, D, E Dà E Normalisering till 3NF innebär att E måste brytas ut till en ny relation S med D som PK och FK till R. Resultat blir två relationer: R {A, B, C, D} där A och B är nyckelattribut S {D, E} där D är PK och FK till R 25

Exempel: 3NF-normalisering Normalisering av EMP_DEPT till 3NF-relationerna ED1 och ED2. 26

3NF och kandidatnycklar Kommer ni ihåg skillnaden på primärnyckel och kandidatnyckel? 3NF gäller bara ICKEnycklar, dvs. inte kandidatnycklar!!!! Exempel: StudentID# Personnummer Namn upn15002 820322-7142 Ulla Persson Borde vara transitivt beroende 3NF Men Personnummer kan ju också determinera Studentid! Personnummer är en kandidatnyckel och då räknas den inte som transitiv = 3NF 27

Exempelövning Normalisera följande tabell (till 3NF minst) Rita FD-diagram Avgör vilken normalform den är i nu Normalisera. Reg# Fartyg Rederi Land Flagga Kapacitet Klass Last# Last Volym F001 MS Freja Dahléns Sverige Sverige 7000 1 L001 Timmer 1500 F001 MS Freja Dahléns Sverige Sverige 7000 1 L002 Kol 2000 F001 MS Freja Dahléns Sverige Sverige 7000 1 L003 Stål 3000 F002 Sabina Cargon England England 12000 2 L001 Vete 2000 F002 Sabina Cargon England England 12000 2 L002 Råg 4000 F003 MS Star Starlines Italien Italien 14000 2 L001 Bananer 5000 F003 MS Star Starlines Italien Italien 14000 2 L002 Äpplen 4000 F004 MS Skie Starlines Italien Panama 20000 3 L001 Ananas 12000 F005 Wilma Bayline USA Panama 9000 1 L001 Koppar 5000 F005 Wilma Bayline USA Panama 9000 1 L002 Stål 4000 28

Exempelövning forts... Tabellen utgör databasen för ett system som bevakar fartygsfrakter. Varje rad i tabellen anger en unik fraktorder. Fartyg har unika registreringsnummer resp. namn och ägs av endast ett rederi. Rederier kan dock äga flera fartyg. Ett rederi är registrerat i ett land och ett fartyg seglar under viss "flagg". Observera alltså att flaggan inte nödvändigtvis är samma som rederiets land. Fartygets kapacitet anges i kubikmeter och bestämmer även fartygets klass. Klass 1 = 0 till 9999 m3, Klass 2 = 10000-19999 m3 och Klass 3 = 20000+ m3. Lastnumret är unikt i ett fartyg och utgör tillsammans med fartygets registreringsnummer primärnyckeln i tabellen. 29

Steg 1: Finn tabellens FD Vilka funktionella beroenden finns i tabellen? Reg# Fartyg Rederi Land Flagga Kapacitet Klass Last# Last Volym F001 MS Freja Dahléns Sverige Sverige 7000 1 L001 Timmer 1500 F001 MS Freja Dahléns Sverige Sverige 7000 1 L002 Kol 2000 F001 MS Freja Dahléns Sverige Sverige 7000 1 L003 Stål 3000 F002 Sabina Cargon England England 12000 2 L001 Vete 2000 F002 Sabina Cargon England England 12000 2 L002 Råg 4000 F003 MS Star Starlines Italien Italien 14000 2 L001 Bananer 5000 F003 MS Star Starlines Italien Italien 14000 2 L002 Äpplen 4000 F004 MS Skie Starlines Italien Panama 20000 3 L001 Ananas 12000 F005 Wilma Bayline USA Panama 9000 1 L001 Koppar 5000 F005 Wilma Bayline USA Panama 9000 1 L002 Stål 4000 30

Steg 2: Finn tabellens Normalform Vilken normalform är tabellen i just nu? Reg# Fartyg Rederi Land Flagga Kapacitet Klass Last# Last Volym F001 MS Freja Dahléns Sverige Sverige 7000 1 L001 Timmer 1500 F001 MS Freja Dahléns Sverige Sverige 7000 1 L002 Kol 2000 F001 MS Freja Dahléns Sverige Sverige 7000 1 L003 Stål 3000 F002 Sabina Cargon England England 12000 2 L001 Vete 2000 F002 Sabina Cargon England England 12000 2 L002 Råg 4000 F003 MS Star Starlines Italien Italien 14000 2 L001 Bananer 5000 F003 MS Star Starlines Italien Italien 14000 2 L002 Äpplen 4000 F004 MS Skie Starlines Italien Panama 20000 3 L001 Ananas 12000 F005 Wilma Bayline USA Panama 9000 1 L001 Koppar 5000 F005 Wilma Bayline USA Panama 9000 1 L002 Stål 4000 Partiellt Nyckelberoende Transitiva FDn Tabellen är i första normalformen dvs 1 värde per attribut 31

Steg 3: Normalisera till 2NF I detta fall har vi ett partiellt nyckelberoende REG# Fartyg Rederi Land Flagga Kapacitet Klass Last# Last Volym REG# Fartyg Rederi Land Flagga Kapacitet Klass 32

Steg 3: Normalisera till 2NF Vad har vi kvar i tabellen då? REG# Fartyg Rederi Land Flagga Kapacitet Klass Last# Last Volym REG# Last# Last Volym 33

Steg 3: Normalisera till 2NF Nu är vi minst i 2NF, dvs inga partiella nyckelberoenden REG# Last# Last Volym REG# Fartyg Rederi Land Flagga Kapacitet Klass 34

Steg 4: Normalisera till 3NF I vilken normalform är vi nu? REG# Last# Last Volym 3NF Denna är klar REG# Fartyg Rederi Land Flagga Kapacitet Klass Transitiva beroenden 2NF Måste gå vidare 35

Steg 4: Normalisera till 3NF Normalisera rederi à land. REG# Fartyg Rederi Land Flagga Kapacitet Klass f.k. REG# Fartyg Rederi Flagga Kapacitet Klass Rederi Land 36

Steg 4: Normalisera till 3NF Normalisera kapacitetà klass. REG# Fartyg Rederi Flagga Kapacitet Klass Hmm Denna är krångligare.. Är inte klass ett härlett attribut?? REG# Fartyg Rederi Flagga Kapacitet function getclass(capacity Möjligen med en tabell (class, maxcapacity) int) returns int 37

Svar: De normaliserade tabellerna REG# Last# Last Volym REG# Fartyg Rederi Flagga Kapacitet Rederi Land function getclass(capacity int) returns int 38

Så, de tre normalformerna 1NF: Ett värde per attribut och rad 2NF: Inga partiella nyckelberoenden 3NF: Inga transitiva beroenden Thats it! 39

Innehåll Föreläsningens mål: Att ge en överblick över hur normalisering fungerar Önskvärda egenskaper i relationsdatabaser Designregler Funktionella beroenden Normalisering Normaliseringsprocessen Normalformer Normaliseringsövning 40