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

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

Databaser Design och programmering

Karlstads Universitet, Datavetenskap 1

Logisk databasdesign

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

NORMALISERING. Mahmud Al Hakim

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

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

GIS, databasteknik och kartografi. Kursmaterial för databasdelen

Konceptuella datamodeller

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

Lösningsförslag till Tentamen,

Tentamen i Databasteknik

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

Informationssystem och databasteknik

Tentamen i. Databasteknik

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

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Tentamen i Databasteknik

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

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

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

Funktionella beroenden - teori

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

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

Analytisk relationsdatabasdesign

Relationell databasdesign

Lösningar till tentamen i EDAF75

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Tentamen plus lösningsförslag

Karlstads Universitet, Datavetenskap 1

Universitetet: ER-diagram

Föreläsning 6: Normalisering & funktionella beroenden

Lösningsförslag till Exempel tentamen

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

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

IT i organisationer och databasteknik

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

Databaser och Datamodellering Foreläsning IV

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Exempel-Tentamen III

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

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

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

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

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

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

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

Tentamen i Databasteknik

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

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

Webbprogrammering, grundkurs 725G54

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

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

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

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

Karlstads Universitet, Datavetenskap 1

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

Design och underhåll av databaser

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

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen DATABASTEKNIK - 1DL116

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

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

Tentamen för DD1370 Databasteknik och informationssystem

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

TDDI60 Tekniska databaser

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

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen. Databasmetodik Lördag 27 september 2014 kl

Databasteori. Övningar

Databasteknik NADA, KTH & SU

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

Tentamen i Datorteknik och - kommunikation, 2D1522/4K1522. Läs detta innan du börjar:

Ett arbetsexempel Faktureringsrutin

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

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.

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

Tentamen för DD1370 Databasteknik och informationssystem

Databasteori. Övningar

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

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

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

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

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

TDDI 60 Tekniska databaser

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary

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

Modul DB1-2 Datamodellering

Tentamen för DD1370 Databasteknik och informationssystem

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

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

Transkript:

Idag Databaskvalitet(??) Hur vet vi att vår databas är tillräckligt bra? Vad är ett beroende? Vad gör man om det blivit fel? Vad är en normalform? Hur når man de olika normalformerna? Det finns metoder för att kontrollera kvaliteten på det man åstadkommit och för att förbättra den om man hittar problem Med kvalitet i det här sammanhanget menar man hur enkelt (eller svårt) det är att hitta i databasen och hur enkelt det är att upprätthålla dataintegritet (försäkra sig om att data enkelt kan hållas korrekt) Man vill minimera dubbellagringen (utom vad gäller nyckelvärden i index) DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 1 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 2 / 18 Databaskvalitet... Databaskvalitet... enkelt och lätt att förstå (en sammanslagning av tre tabeller, create view avdvara as select * from försäljning natural join vara natural join avdelning) avd varunr volym typ våning möbler 334 332 stol 8 möbler 335 305 stol 8 väskor 336 87 stol 4 möbler 336 95 stol 8 priset är dubbellagring (= redundans) och om vi vill uppdatera så måste vi hitta alla platser där en viss information finns representerad. Vill vi ta bort något kanske det inte går utan att annan viktig information försvinner och vill vi sätta in något nytt kanske det inte går utan att ta reda på mer information. informativt avd våning möbler 8 väskor 4 avd varunr volym möbler 334 332 möbler 335 305 väskor 336 87 möbler 336 95 varunr typ 334 stol 335 stol 336 stol till priset av att det inte är lika lätt att förstå men vi kan mata in nya varor utan att tvingas veta vilken avdelning som ska sälja dem, vi kan flytta en avdelning till en annan våning utan att behöva uppdatera alla rader med varor, vi kan lägga till avdelningar utan att tvingas förse dem med varor direkt... DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 3 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 4 / 18

Vad är ett beroende? Vad finns det för normalformer? Hur kommer man då fram till att den mer informativa är bättre? Vi behöver ett verktyg som låter oss avgöra vilka värden som hör ihop Om vi betraktar den sammanslagna tabellen avdvara ser vi att varje gång avdelningen möbler dyker upp så har vi alltid samma värde på våning Vi förväntar att det ska vara så och bestämmer att våning beror av avd Vi säger att våning är funktionellt beroende av avd och skriver det: avd våning Med motsvarande resonemang kan vi se att varunr typ och att trots att {avd, varunr} {volym, typ, våning} så är avd våning och varunr typ starkare Det ger oss också ett verktyg för att normalisera, dela upp tabeller som inte uppfyller de restriktioner som beroendena lägger på datamängden Det finns ett stort antal normalformer, några med kryptiska och svårbegripliga definitioner, men man brukar kunna nöja sig med de tre första 1NF 2NF 3NF BCNF 4NF 5NF Högre NF DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 5 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 6 / 18 Hur resonerar man? Hur når man de olika normalformerna? Några exempel från varuhuset: En person kan bara arbeta på en avdelning: namn avd På varje avdelning kan det arbeta mer än en person: avd namn Man måste veta varunumret för att få reda på en varas typ: varunr typ Det kan finnas mer än en vara av en viss varutyp: typ varunr Ett visst företag levererar varor till varje avdelning för sig: {företag, avd, varunr} volym Man kan använda beroenden för att, utgående från en universell relation, finna en uppdelning som är i 3NF eller högre Men vanligast är att man använder beroenden för att analysera varje tabell man får från en modell. Har man minst 3NF så är man nöjd För att kunna det behöver man definitionerna för de olika normalformerna Det räcker med de tre första, högre normalformer är ganska kryptiskt formulerade Man har 1NF om man bara har ett värde i varje kolumn för varje rad Man har 2NF om man har 1NF och inget värde är beroende av bara en del av nyckeln (alltså behöver man bara kolla sambandsklasser) Man har 3NF om man har 2NF och om dessutom inget värde är beroende av nyckeln via ett annat attribut. Vi ska titta på lite bilder och också vässa de här informella definitionerna DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 7 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 8 / 18

1NF Antag att vi har en tabell över böcker och deras författare Bok Tabellen är inte i 1NF! Men om vi gör en rad per upprepat värde Bok DBTeori 940322 46 Svenska ODBMS 940312 0 Engelska 1NF... Man kan i den sista tabellen också se att det inte räcker med bokens titel för att unikt identifiera en rad i tabellen. Ett resonemang kring beroenden i tabellen ger följande: Både Titel och Författare behövs för att identifiera en rad Titel {Datum, Språkkod, Språk} Språkkod Språk Språk Språkkod (!!) Alla de beroendena visar att tabellen bör delas upp så det endast finns ett beroende i varje resulterande tabell. För detta behövs verktyg (regler) En av reglerna har vi just sett, vi kan utöka antalet i-termer tills vi hittar ett sätt att unikt identifiera en tabellrad Man kan också gå motsatt väg. Antag att alla termer är i-termer och tag sedan bort de termer som nås via något beroende så är den det DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 9 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 10 / 18 1NF... reducera fram en nyckel Kandidatnycklar, primärnycklar och prima attribut Antag att {Titel, Författare, Datum, Språkkod, Språk} är nyckel Börja med de enklaste, t.ex. Språkkod Språk, så tag bort Språk. {Titel, Författare, Datum, Språkkod} är kvar Titel {Datum, Språkkod} så tag bort {Datum, Språkkod}. {Titel, Författare} är kvar Fler beroenden finns inte så en möjlig nyckel, {Titel, Författare}, har vi hittat Har man många beroenden testar man olika reduceringsordning Det kan hända att man hittar flera möjligheter att unikt identifiera en rad i en tabell. Varje uppsättning attribut som duger kallas för en kandidatnyckel Hittar man mer än en kandidatnyckel väljer man en som primärnyckel Alla attribut som ingår i någon kandidatnyckel kallar man primattribut eller prima attribut med betydelsen att de kan ingå i en primärnyckel De är viktiga så man brukar hålla reda på primärnyckel, alla kandidatnycklar och ha en lista över alla prima attribut DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 11 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 12 / 18

Fullständigt funktionellt beroende (FFD) 2NF Om man har flera attribut (i-termer) i nyckeln kan man kontrollera om alla e-termer är beroende av hela nyckeln eller bara av en del av nyckeln. Ex.: i varuhusets tabell för försäljning är det klart att man måste veta både avdelning och varunr för att få reda på försäljningsvolymen för en viss vara. Alltså beror volym av både avd och varunr ({avd,varunr} volym. Man säger att volym är fullständigt funktionellt beroende av avd och varunr. Faktiskt gäller även {avd,varunr,typ} volym men det är meningslöst att utvidga vänsterledet i ett beroende. Med det utvidgade vänsterledet har vi inte längre ett fullständigt funktionellt beroende. Vi kan kontrollera om vänsterledet är minimalt eller inte genom att på försök ta bort ett eller flera attribut ur vänsterledet och se om beroendet med reducerat vänsterled fortfarande gäller En tabell är i 2NF omm den är i 1NF och det varje attribut som inte är primt är fullständigt funktionellt beroende av varje kandidatnyckel Låter krångligt men är i själva verket enkelt att kontrollera Vi kan strunta i alla primattribut och kontrollera om övriga är FFD av alla nycklar Om villkoret inte är uppfyllt så är något attribut beroende av bara en del av någon nyckel och då delar vi tabellen Titel Datum Språkkod Språk DBTeori 940322 46 Svenska ODBMS 940312 0 Engelska Titel DBTeori DBTeori ODBMS ODBMS Författare Lindqvist Johnson DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 13 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 14 / 18 3NF Normalformer Om ett attribut är beroende av någon kandidatnyckel i en tabell via ett icke primt attribut så säger vi att det är ett transitivt beroende. Sådana ger också upphov till redundans och uppdaterings-, borttagnings- och insättningsproblem En tabell är i 3NF omm den är i 2NF och det inte finns några transitiva beroenden. Finns sådana delar vi tabellen Titel Datum Språkkod Språkkod Språk DBTeori 940322 46 ODBMS 940312 0 46 Svenska 0 Engelska Här kan vi sluta och vara nöjda Vi har förvandlat en orimlig tabell till något generellt användbart: Till: DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 15 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 16 / 18

Normalformer Funktionella beroenden Titel Datum Språkkod DBTeori 940322 46 ODBMS 940312 0 Titel Författare Språkkod Språk DBTeori Lindqvist 46 Svenska DBTeori 0 Engelska ODBMS Johnson ODBMS Komplexa modeller blir lätt oöverskådliga och även i relativt små modeller händer det att man får in oavsiktliga och dolda beroenden. Med normalisering kan vi avslöja och eliminera dessa oönskade beroenden Ur diskussionen som varit kan vi härleda regler för funktionella beroenden. Låt X, Y, Z betyda mängder av attribut 1. För varje attributmängd X gäller alltid att X Y om Y är en del av X. Detta kallas för trivialt beroende. 2. Om X Y så X Z YZ 3. Om X Y och Y Z så X Z 4. Om X YZ så X Y (och X Z) 5. Om X Y och X Z så X YZ DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 17 / 18 DD1370 (Föreläsning 5) Databasteknik och informationssystem 7,5 hp Hösten 2008 18 / 18