GIS, databasteknik och kartografi. Kursmaterial för databasdelen

Relevanta dokument
Databasteknik NADA, KTH & SU

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

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

Funktionella beroenden - teori

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

Databaser Design och programmering

Logisk databasdesign

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

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

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

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

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

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

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

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Informationssystem och databasteknik

Karlstads Universitet, Datavetenskap 1

GIS, databasteknik och kartografi. Databasmodellering

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

Konceptuella datamodeller

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

Universitetet: ER-diagram

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

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. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

NORMALISERING. Mahmud Al Hakim

Analytisk relationsdatabasdesign

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

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

Grunderna för relationsmodellen!

IT i organisationer och databasteknik

Tentamen i Databasteknik

Relationell databasdesign

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

Databaser design och programmering. Design processen ER- modellering

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

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

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

Databasdesign. E-R-modellen

Karlstads Universitet, Datavetenskap 1

Tentamen i Databasteknik

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

Ett arbetsexempel Faktureringsrutin

Tentamen i. Databasteknik

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

Karlstads Universitet, Datavetenskap 1

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

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

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Tentamen i Databasteknik

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

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

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

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

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

Tentamen för DD1370 Databasteknik och informationssystem

Lite om databasdesign och modellering

Tentamen för DD1370 Databasteknik och informationssystem

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

Exempel-Tentamen III

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Tentamen plus lösningsförslag

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

Föreläsning 6: Normalisering & funktionella beroenden

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

Tentamen DATABASTEKNIK - 1DL116

Databasteori. Övningar

Databaser och Datamodellering Foreläsning IV

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

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

Modul DB1-2 Datamodellering

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

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

TDDI 60 Tekniska databaser

Databasteori Övningar

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

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

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

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

Lösningsförslag till Tentamen,

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

TENTAMEN TDDB77 Databaser och Bioinformatik 22 augusti 2006, kl 14-18

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

Databasteori. Övningar

Tentamen för DD1370 Databasteknik och informationssystem

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

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

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

TDDI60 Tekniska databaser

Tentamen för DD1370 Databasteknik och informationssystem

Lösningsförslag till Exempel tentamen

Webbprogrammering, grundkurs 725G54

Tentamen för DD1370 Databasteknik och informationssystem

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

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

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

Transkript:

GIS, databasteknik och kartografi Kursmaterial för databasdelen Våren 2004

Innehåll Objekt och objektklasser......................... 3 Samband och sambandsklasser...................... 4 Övningsuppgifter: Datamodellering................... 5 Databasmodell databasstruktur: liten kokbok............. 8 Övningsuppgifter: Relationsalgebra och SQL.............. 9 Normalisering............................... 10 Funktionellt beroende........................ 10 Nycklar och primattribut...................... 11 Normalformer............................ 11 Beräkning av transitiva höljen................... 12 Härledningsregler för funktionella beroenden........... 12 Normaliseringsstegen........................ 13 Normaliseringsexempel.......................... 14 Övningsuppgifter: Normalisering..................... 16 2

1E1601 GIS, databasteknik och kartografi Våren 2004 Objekt och objektklasser Ett objekt är ett föremål eller ett begrepp som kan identifieras entydigt med ett identifikationsbegrepp inom modellens ram. En objektklass är en samlande beskrivning av objekt som identifieras på samma sätt. En objektklass beskrivs i modeller som en namngiven rektangel. Person Objektklassen person används t.ex. för att skapa objekt (instanser) innehållande (i det här fallet) ID-nr, namn och adress på personer. 2207 Hans Persson Gamla Vägen 3 3151 Olle Jonsson Nya Vägen 33 I datamodeller beskriver vi objektklasserna enligt ovan med angivande av objektklassens namn, samt i ovaler enligt nedan där attributen, identifikationsterm (i-term) samt egenskapstermer (e-termer) anges med namn med i-termen understruken................... ID-nr........................................ Namn....... Adress.............. Person Alternativt kan man bryta ut attributen ur den grafiska modellen och ange dessa i en speciell egenskapsmatris egenskapsmatris Typ Namn i-termer e-termer Objekt Person ID-nr Namn, Adress Objektförekomster presenteras i huvudsak genom tabeller, t.ex.: Person ID-nr Namn Adress 2207 Hans Persson Gamla Vägen 3 3151 Olle Jonsson Nya Vägen 33 3

Våren 2004 GIS, databasteknik och kartografi 1E1601 Samband och sambandsklasser Ett samband beskriver ett relevant förhållande mellan två eller flera objekt. Det identifieras entydigt av I-termerna för de objekt det associerar till varandra. En sambandsklass som associerar två objekt med varandra kallas binär. En sambandsklass vars samband associerar fler än två objekt med varandra sägs vara av högre ordning. Oftast behövs ingen noggrannare indelning, men skulle det behövas anger man som sambandsklassens ordning det antal objekt som associeras med varandra. Binära sambandsklasser säges då vara av andra ordningen. På samma sätt som med objekt och objektklasser så samlas samband i sambandsklasser. På en sambandsklass kan finnas definierat någon form av restriktion, t.ex. att objekt i en eller flera klasser associeras med endast ett objekt ur en annan klass. För binära sambandsklasser brukar man skilja på 1:1-, 1:N- och M:N-sambandsklasser. Sambandsklasserna beskrivs som romber med linjer till de objektklasser vars objekt relateras till varandra utan angivande av i-termer, eller i t-matriser med angivande av namnen på sina i- resp. e-termer. Kvinna Gift med Man 1:1 Chef Basar över Anställd 1:N Författare Skrivit Bok M:N Projekt Beställning Leverantör Material Sambandförekomster beskrivs i form av tabeller, precis som objektförekomster. 4

1E1601 GIS, databasteknik och kartografi Våren 2004 Övningsuppgifter: Datamodellering 1. Ett flygbolag önskar ett databassystem omfattande: Alla passagerare som har rest eller ämnar resa med bolaget. Namn, adress och telnr är intressanta samt naturligtvis sträckan de har eller ska åka. Varje sträcka som trafikeras varje dag av ett antal förbindelser (flights). Varje sådan förbindelse har ett unikt förbindelsenummer och ska innehålla information om varifrån planet går, destination, avgångstid och ankomsttid. Observera dock att 0900-planet mellan Umeå (UME) och Arlanda (ARN) har samma förbindelsenummer varje dag. För olika resursberäkningar registreras också för varje avgång vilket specifikt plan som ska användas. För varje avgång vill man också ha uppgifter om arbetande personal. De registreras med namn, yrke och adress. För piloterna är man också intresserad av vilka flygplanstyper de är utbildade för. Flygplanstypen består av tillverkare och modellbeteckning Det kan naturligtvis finnas flera plan av samma typ. Dessa identifieras unikt med ett namn t.ex. LELLE VIKING. Gör en datamodell över detta så att t.ex. följande frågor kan besvaras: Med vilka piloter har en passagerare åkt? Bestäm namnet på de flygplan en speciell pilot är utbildad för. Ta reda på alla avgångar från ARN till UME under veckan 22/4-29/4 med förbindelsenummer, avgångs- och ankomsttid. Undersök om någon pilot är kompetent att flyga hela flygplansflottan. Vilka passagerare har åkt med någon förbindelse med avgångstid före kl 0700? Gör, utgående från modellen, en databasstruktur enligt kokboken på sid 8. 5

Våren 2004 GIS, databasteknik och kartografi 1E1601 2. Upprätta en datamodell över en skolas högstadium. Den skall innehålla uppgifter om alla skolklasser, alla elever och alla lärare. För alla klasser vill man förutom klassrumsnumret även veta vilka lärare de har i de olika ämnena, vem som är klassföreståndare och var de skall vara då de har specialämnen och inte kan vara i det egna klassrummet. Elever har en klassföreståndare men kan gå kurser som inte omfattar alla elever i klassen (tillvalsämnen t.ex.) där de går tillsammans med elever från andra klasser. Beroende på ämne kan olika klassrum vara olika lämpliga. En lärare kan vara behörig i flera ämnen. Systemet skall naturligtvis ge information om i vilken klass en elev går samt dessutom namn, personnummer, adress, tel, m.m. för såväl lärare som elever. Gör, utgående från modellen, en databasstruktur enligt kokboken på sid 8. 3. En sjukvårdsförvaltning som innefattar 6 större sjukhus, 4 mindre sjukhus och 3 fristående laboratorier önskar en datamodell över den interna sjukhusadministrationen. För sjukhusen finns uppgifter om namn, adress, telnr, antal rum och totalt antal bäddar. För laboratorierna finns uppgifter om namn, adress, telnr, de prover (med unikt provnummer) som undersökts de senaste 6 månaderna och från vilka personer resp prov kommer. Alla inneliggande patienter skall medtas med uppgift om personnummer, namn, adress, bäddnr, vilket rum och vilket sjukhus patienten finns på samt vilken diagnos patienten fått. Diagnosen innehåller t.ex. information om typ av sjukdom, övriga besvär och allergiska reaktioner. Om läkarna finns uppgifter om personnummer, namn, adress, skiftschema och specialitet och vilka patienter han ansvarar för. Om övrig personal finns uppgifter om personnummer, namn, adress samt vilka rum denna person är helt eller delvis ansvarar för. Gör datamodellen. Gör, utgående från modellen, en databasstruktur enligt kokboken på sid 8. 6

1E1601 GIS, databasteknik och kartografi Våren 2004 4. Gör en datamodell över följande biblioteksverksamhet. Detta skall finnas med: Bibliotekets namn, storlek (5 olika värden), adress, distrikttillhörighet samt uppgift om vilket bibliotek som är huvudbibliotek inom distriktet. Uppgifter om personalen som jobbar på biblioteken (Namn, adress och lön). Alla böcker med klassifikationskod, titel, författare, antal utlåningar/bibliotek. Utlåningsdatum och återlämningsdatum för böcker som är utlånade. Låntagares namn, adress och lånekortsnummer. Kö för låntagare som vill låna en speciell bok. Gör, utgående från modellen, en databasstruktur enligt kokboken på sid 8. 7

Våren 2004 GIS, databasteknik och kartografi 1E1601 Databasmodell databasstruktur: liten kokbok En liten kokbok för att klara de allra flesta fallen vid övergång från datamodell till databasstruktur. Kanske har inte alla fall täckts in till 100% men nästan. Observera att det finns ett element av ickedeterminism i den sista regeln. 1. Objektklass som innehåller e-term(er) bildar en egen basrelation. 2. Objektklass som bara består av en i-term och dessutom finns på N-sidan av någon sambandsklass av typ 1:N bildar en egen basrelation, men om den inte förekommer på N-sidan i en 1:N-sambandsklass försvinner den! 3. Sambandsklass an högre ordning än 2 bildar egen basrelation. 4. Sambandsklass av typ M:N bildar egen basrelation. 5. Sambandsklass av typ 1:N försvinner men I-termen i objektklassen som finns på 1-sidan blir E-term i objektklassen på N-sidan. Eventuella E-termer i sambandsklassen blir E-termer i objektet på N-sidan. 6. Sambandsklass av typ 1:1 behandlas som om den vore av typen 1:N (föregående regel) med godtyckligt val av N-sida. Alternativt slås de objektklasser, som sambandet förbinder, samman till en basrelation. Eventuella E-termer i sambandsklassen blir E-termer i objektet på den sida man valt till N-sida. 8

1E1601 GIS, databasteknik och kartografi Våren 2004 Övningsuppgifter: Relationsalgebra och SQL Databasstruktur: Anställd (namn, lön, chef, avd) Försäljning (avd, varunr, volym) Leverantör (företag, adress) Lager (företag, avd, varunr, volym) Avdelning (avd, våning) Vara (varunr, typ) Formulera följande frågor i Relationsalgebra respektive SQL. 1. Vilka anställda arbetar på leksaksavdelningen? 2. Vilka varor säljs på andra våningen? 3. Vilka varor säljs inte av någon avdelning på andra våningen? 4. Vilka varor säljs av alla avdelningar på andra våningen? 5. Vilka varor säljs av minst två avdelningar på andra våningen? 6. Hur mycket tjänar Anderssons chef? 7. Vilka anställda tjänar mer än sin chef? 8. På vilka avdelningar tjänar alla anställda mindre än sina chefer? 9. Vilka företag levererar varor till mer än en våning? 10. På vilka avdelningar är medellönen större än 10000? 11. Vilka chefer har mer än 10 anställda under sig, och vilken lön har dessa chefer? 12. Vilka anställda på skoavdelningen har mer än 10000 i lön, och vad heter deras närmaste chef? 13. Vilka anställda tjänar mer än någon på skoavdelningen? 14. Vilka företag levererar pennor? 15. Vilka företag levererar inte pennor? 9

Våren 2004 GIS, databasteknik och kartografi 1E1601 Normalisering Dålig databasdesign kan orsaka redundans (multipel representation av information) och kan dessutom göra det omöjligt att representera viss information. Redundans orsakas oftast av att man försöker representera både enkla och sammansatta värden i samma relation. Det man kan göra åt saken är att man på ett metodiskt sätt bryter ner databasstrukturen så att alla dolda beroenden i datamängden elimineras. Tre problem uppstår i samband med redundans: Insättningsproblem. När data sätts in måste de kanske sättas in i flera basrelationer (och tupler). Man måste identifiera alla platser för representation av den nya informationen. Uppdateringsproblem. När data uppdateras måste de kanske uppdateras i flera basrelationer. Man måste identifiera alla platser där informationen redan är representerad. Borttagningsproblem. När data tas bort måste de kanske tas bort i flera basrelationer (och tupler). Man måste identifiera alla platser där informationen redan är representerad och alla platser där existerande information inte längre är relevant. För att komma till rätta med dessa problem kan databasstrukturen göras om. Alla basrelationer bör vara i minst tredje normalform (3NF). Nedan har jag samlat några redan givna definitioner. Funktionellt beroende En mängd Y av attribut säges vara funktionellt beroende (FD) av en attributmängd X (X Y ) om man för vilka två tupler som helst med samma värdeuppsättning för attributen i X alltid finner att värdeuppsättningen för attributen i Y är lika. Grafiskt kan man illustrera detta med att X Y X 2,1... X 2,k Y 2,1... Y 2,m X 1,1... X 1,k Y 1,1... Y 1,m om X Y och X 1,i = X 2,i, 1 i k så måste gälla Y 1,j = Y 2,j, 1 j m. För varje attributmängd X gäller alltid att X Y om Y X. Detta kallas för trivialt beroende. Varje minimal attributmängd X, sådan att det finns ett icketrivialt funktionellt beroende X Y kallas för en determinant. 10

1E1601 GIS, databasteknik och kartografi Våren 2004 Om X Y men det inte finns något Z X så att Z Y så säges Y vara fullständigt funktionellt beroende av X. Nycklar och primattribut Varje minimal mängd av attribut som entydigt bestämmer en tupel i en basrelation kallas för en kandidatnyckel. Varje mängd av attribut som innehåller en kandidatnyckel kallas för en supernyckel. En kandidatnyckel väljs att bli primärnyckel. OBS att detta är ett subjektivt val. Ofta väljer man enligt något minimalitetskriterium, t.ex. minst antal attribut, kortast, eller liknande. Ett attribut som ingår i en kandidatnyckel kallas för primattribut eller primt attribut. Övriga attribut kallas ickeprima. Normalformer 1NF. En basrelation är i 1NF omm alla attributvärden är atomära (en basrelation är i 1NF omm för varje tupel gäller att den innehåller exakt ett värde för varje attribut). 2NF. En basrelation är i 2NF omm den är i 1NF och varje ickeprimt attribut är fullständigt funktionellt beroende av varje kandidatnyckel. 3NF. En basrelation är i 3NF omm det för varje icketrivialt funktionellt beroende X Y gäller att dess determinant är en supernyckel eller att Y är ett primattribut (d.v.s att man har 3NF omm man har 2NF och det inte finns några transitiva beroenden X Y Z där Y inte är ett primattribut). 11

Våren 2004 GIS, databasteknik och kartografi 1E1601 Beräkning av transitiva höljen För att kontrollera om en attributmängd Y är funktionellt beroende av en attributmängd X kan man beräkna det transitiva höljet X + för X. Man börjar med att sätta X + = X. Därefter går man igenom den givna mängden av funktionella beroenden och för varje W Z där W X + uppdaterar man X + X + Z. Detta uförs tills X + inte längre växer. X + är nu det transitiva höljet för X, d.v.s. den mängd av attribut som är funktionellt beroende av X. Om Y X + så gäller att X Y. Härledningsregler för funktionella beroenden Man kan också härleda funktionella beroenden ur andra funktionella beroenden. Men denna metod är långsammare än att beräkna det transitiva höljet. Det finns för ändamålet ett antal regler, varav grundmängden kallas Armstrongs axiom. De förekommer med viss variation i litteraturen. Här kommer en variant OBS att det är vanligt att skriva XY för X Y : Om Y X så X Y Om X Y så XZ Y Z Om X Y och Y Z så X Z (Reflexivitet) (trivialt beroende) (Utökning) (Transitivitet) Utöver dessa brukar man också tillhandahålla ett antal regler som kan härledas ur de som givits ovan. T.ex.: Om X Y Z så X Y (och X Z) Om X Y och X Z så X Y Z Om X Y och W Y Z så W X Z (Dekomposition) (Union) (Pseudotransitivitet) 12

1E1601 GIS, databasteknik och kartografi Våren 2004 Normaliseringsstegen Första normaliseringssteget. Utförs om strukturen innehåller en eller flera egenskaper som upprepas för ett givet värde på id-termen. Genomförs genom att hitta en nyckel för hela relationen. OBS! Det är viktigt att hitta alla möjliga nycklar (kandidatnycklar). Andra normaliseringssteget. Utförs om en eller flera av de ickeprima egenskaperna i en basrelation är funktionellt beroende av en del av en kandidatnyckel, men inte av hela. Detta steg utförs alltså endast på basrelationer som har sammansatta nycklar (dvs. representerar sambandsklasser i databasmodellen). Genomförs genom att skilja ut de ickeprima egenskaper som är funktionellt beroende av endast en del av en kandidatnyckel och gör dessa till en egen basrelation som får den del av kandidatnyckeln som de är beroende av som nyckel. Tredje normaliseringssteget. Utförs om det existerar transitiva funktionella beroenden över ickeprima attribut i en basrelation. Genomförs genom att skilja ut de ickeprima attribut som är transitivt beroende av ett annat ickeprimt attribut och göra dessa till en egen basrelation som får det attribut som de är funktionellt beroende av i den ursprungliga basrelationen som nyckel. Detta kvarstår även som attribut i den ursprungliga basrelationen. 13

Våren 2004 GIS, databasteknik och kartografi 1E1601 Normaliseringsexempel Givet en relation med schemat U = {A, B, C, D, E, F, G, H} och de funktionella beroendena: A BCD AE GH E F F E Normalisera steg för steg till 1NF, 2NF och 3NF Lösning: BCDGH förekommer inte i vänstra ledet i något FD och kan alltså inte ingå i någon kandidatnyckel. Eftersom F E och E F måste en av dem alltid ingå och eftersom A inte förekommer i något högerled så måste A alltid ingå i varje nyckel. Mängden kandidatnycklar är alltså: {AE, AF}. Detta ger 1NF (välj t.ex. AE som nyckel): (A, E, B, C, D, F, G, H). BCD och F beror bara av en del av nyckeln, bryt ut dem och låt dem identifieras av sin nyckel Detta ger 2NF: (A, B, C, D) (E, F) och kvar blir: (A, E, G, H). Det finns inga transitiva beroenden och således är relationen redan i 3NF och den slutgiltiga strukturen blir: (A, B, C, D) (E, F) (A, E, G, H). Om vi istället hade haft följande funktionella beroenden: A BCDF B CD E GH så blir situationen radikalt annorlunda. Enda kandidatnyckeln blir {AE} (varför?). A BCDF och E GH ger oss 2NF: (A, B, C, D, F) (E, G, H) och kvar blir: (A, E). Det finns ett transitivt beroende B CD så den första relationen är inte normaliserad. För att få 3NF: 14

1E1601 GIS, databasteknik och kartografi Våren 2004 (B, C, D) (A, B, F) (E, G, H) (A, E). Vi har fått en relation som innehåller endast den ursprungliga nyckeln. Den är viktig om vi har haft en tabell med data som delats upp med ett antal projektionsoperationer. Utan den kan inte den ursprungliga tabellen återskapas. 15

Våren 2004 GIS, databasteknik och kartografi 1E1601 Övningsuppgifter: Normalisering 1. På det till dags dato lilla företaget Lilla AB har man nöjt sig med ett kortregister för att hålla reda på personalen. Företaget har som policy att se till att dess anställda är rejält försäkrade, och försäkringar som företaget består med finns också med på korten. Ett ex. på hur ett kort kan se ut: Anställd Namn: Pelle Karlsson Försäkringar Olycksfall PNr: 380812-001 Liv Adress: Vårgatan 3 PostNr: 919 19 PAdr: Vårstad AnstDat: 720221 Lön: 25 600 Anhöriga Karin 390909-9344 maka Johan 580122-3112 son Ann 611212-0044 dotter Krister 670705-0375 son Företaget växer och har behov av en databas. Att direkt överföra informationen på korten till en databasstruktur är inte möjligt. Normalisera därför detta steg för steg till 1NF, 2NF och 3NF. Notera alla antaganden. 2. Man har på KTH elevprojekt där man för varje deltagande elev registrerar: Personnummer, namn, linjetillhörighet (t.ex.: D99/L99/M99), handledares anställningsnummer(=persnr), handledares namn, handledares kontor (lokala adress), handledares arbetstelefon, projektnummer, projektnamn, kort projektbeskrivning, totala antalet poäng på projektet, elevens hittills insamlade poäng (på projektet) samt datum för elevens sista kontakt med handledare. En elev kan delta i flera projektarbeten. Allt detta har man registrerat under elevens personnummer och om eleven deltar i flera projekt finns ett registerblad per projekt (alltså är inte persnr ett entydigt id-begrepp). Skriv som en relation och överför steg för steg till 1NF, 2NF och 3NF. Motivera varje steg i lösningen. 3. Problemet i uppg. 1 råkar även Mekanik montering AB ut för när det gäller företagets inköp. Dessa har skötts m.h.a kort med utseendet: 16

1E1601 GIS, databasteknik och kartografi Våren 2004 Varunamn: Skål Varunummer: 321765 Vikt: 0,37 Leverantör: Lasses Järn Adress: Storgat 16 telefon: 123123 best datum pris lev rest 144 991014 34,70 70 74 500 991129 34,70 500 0 300 991224 35,10 0 300 Leverantör: Olles spik Adress: Lillgat 45 telefon: 321321 best datum pris lev rest 350 991117 36,40 200 150 Normalisera steg för steg till 1NF, 2NF samt 3NF. 4. Tandläkaren Sven Borrglad har ett kortregister över sina patienter där man tycker sig kunna se att han vill betrakta sig själv som familjetandläkare. Ett kort har följande utseende: Familjenr Familjenamn Familjeadress Betaln.balans Patientnr Patientnamn Tandstatus Åtgärdskod Åtgärdsbeskrivning Pris Datum sorterat efter patientnr. Överför steg för steg till 1NF, 2NF, 3NF, med angivande av vilka funktionella beroenden som motiverar varje utförd åtgärd. 17

Våren 2004 GIS, databasteknik och kartografi 1E1601 5. Givet en relation med schemat U = {A, B, C, D, E, F, G} och de funktionella beroendena BC A FG BC B D C E F A G A ABE G ACD F Normalisera steg för steg till 1NF, 2NF och 3NF 6. Givet en relation med schemat U = {A, B, C, D, E, F, G} och de funktionella beroendena AB C B E CF D C A B F CE F CD B B C Normalisera steg för steg till 1NF, 2NF och 3NF 18