220 likes | 334 Views
Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen. Hoofdstuk 5 Databank - Gevorderden. Inhoud. Terminologie redundantie normalisatie Relaties "1-to-Many" (1-N) Join Inner Join; Outer (Left/Right) Join Relaties (vervolg) "Many-to-Many" (N-M)
E N D
Computervaardigheden en Programmatie1rste BAC Toegepaste Biologische Wetenschappen Hoofdstuk 5 Databank - Gevorderden Databank - Gevorderden
Inhoud • Terminologie • redundantie normalisatie • Relaties • "1-to-Many" (1-N) • Join • Inner Join; Outer (Left/Right) Join • Relaties (vervolg) • "Many-to-Many" (N-M) • Join (vervolg) • Recursive Join • Oefeningen Databank - Gevorderden
Uitzonderlijke observaties • Alle observaties per soort waarvoor • gewicht < minimum gewicht • gewicht > maximum gewicht • spanwijdte < minimum spanwijdte • spanwijdte > maximum spanwijdte Databank - Gevorderden
datum soort span- gew- min. max. min. max wijdte icht span. span. gew. gew. 11/11/1992 baardvleermuis 19 4 19 22,5 4 8 11/11/1992 grootoorvleermuis 24 5 24 28,5 4,6 11,3 11/11/1992 grootoorvleermuis 28 12 24 28,5 4,6 11,3 02/11/1993 baardvleermuis 19,5 5 19 22.5 4 8 02/11/1993 grootoorvleermuis 25 7 24 28,5 4,6 11,3 Naïeve Tabelvoorstelling redundante informatie • Redundante Informatie • verkwisting van plaats • gevaar op inconsistenties • verander 1 record alle gelijkaardige records • symptoom van slecht databankontwerp ! • Oplossing ? Normalisatie (opsplitsen in meerdere tabellen) Databank - Gevorderden
VleermuisSoorten Naam MinimumSpanwijdte MaximumSpanwijdte MinimumGewicht MaximumGewicht "1-to-Many" Relaties 1 vleermuissoort ... kan vele malen geobserveerd worden Observaties Datum Soort Spanwijdte Gewicht 1 * Databank - Gevorderden
VleermuisSoorten Naam MinimumSpanwijdte MaximumSpanwijdte MinimumGewicht MaximumGewicht Inner Join (Query) VleermuisSoorten x Observaties Naam MinimumSpanwijdte MaximumSpanwijdte MinimumGewicht MaximumGewicht Datum Spanwijdte Gewicht Cartesisch Product waar VleermuisSoorten.Naam = Observaties.Soort Observaties Datum Soort Spanwijdte Gewicht Databank - Gevorderden
datum soort span- gew- min. max. min. max wijdte icht span. span. gew. gew. 11/11/1992 baardvleermuis 19 4 19 22,5 4 8 11/11/1992 grootoorvleermuis 24 5 24 28,5 4,6 11,3 11/11/1992 grootoorvleermuis 28 12 24 28,5 4,6 11,3 02/11/1993 baardvleermuis 19,5 5 19 22.5 4 8 02/11/1993 grootoorvleermuis 25 7 24 28,5 4,6 11,3 Inner Join (Resultaat) datum soort span- gew- wijdte icht 11/11/1992 baardvleermuis 19 4 11/11/1992 grootoorvleermuis 24 5 11/11/1992 grootoorvleermuis 28 12 02/11/1993 baardvleermuis 19,5 5 02/11/1993 grootoorvleermuis 25 7 soort min. max. min. max span. span. gew. gew. baardvleermuis 19 22,5 4 8 grootoorvleermuis 24 28,5 4,6 11,3 Databank - Gevorderden
Voorbereidingen • Importeer • "Observaties1.txt" • tabel "Observaties" • "VleermuisSoorten.txt" • 1-N relatie • >>Tools>>Relationships • Selecteer tabellen"Observaties" & "VleermuisSoorten" • Sleep "Observaties.soort" op "VleermuisSoorten.Naam" • (1) bevestig via "Create" • (2) resultaat in "Relationships" • Sluit "Relationships" 1 2 Databank - Gevorderden
Nieuwe query (design view) >>Show Table>>"Observaties" & "VleermuisSoorten" (1) Automatisch relatie sleep uit Observaties (2) datum, soort, gewicht uit VleermuisSoorten (3) MinimumGewicht & MaximumGewicht (4) Bekijk in datasheet view Bekijk in SQL-view "inner join" Inner Join (basis) 1 2 3 4 Databank - Gevorderden
definieer criterium voor gewicht >[VleermuisSoorten].[MaximumGewicht] Or <[VleermuisSoorten].[MinimumGewicht] bewaar als UitzonderlijkeObservatiesGewicht Inner Join (extra criteria) 1 Databank - Gevorderden
VleermuisSoorten Naam MinimumSpanwijdte MaximumSpanwijdte MinimumGewicht MaximumGewicht Outer Join (Query) VleermuisSoorten x Observaties Naam MinimumSpanwijdte MaximumSpanwijdte MinimumGewicht MaximumGewicht Datum Spanwijdte Gewicht Cartesisch Product waar (VleermuisSoorten.Naam = Observaties.Soort) of (er bestaat geen observatie met VleermuisSoorten.Naam = Observaties.Soort) Observaties Datum Soort Spanwijdte Gewicht Databank - Gevorderden
datum soort span- gew- min. max. min. max wijdte icht span. span. gew. gew. 11/11/1992 baardvleermuis 19 4 19 22,5 4 8 11/11/1992 grootoorvleermuis 24 5 24 28,5 4,6 11,3 11/11/1992 grootoorvleermuis 28 12 24 28,5 4,6 11,3 02/11/1993 baardvleermuis 19,5 5 19 22.5 4 8 02/11/1993 grootoorvleermuis 25 7 24 28,5 4,6 11,3 bosvleermuis 26 32 13 20 dwergvleermuis 18 24 3,5 8 Outer Join (Resultaat) datum soort span- gew- wijdte icht 11/11/1992 baardvleermuis 19 4 11/11/1992 grootoorvleermuis 24 5 11/11/1992 grootoorvleermuis 28 12 02/11/1993 baardvleermuis 19,5 5 02/11/1993 grootoorvleermuis 25 7 soort min. max. min. max span. span. gew. gew. baardvleermuis 19 22,5 4 8 grootoorvleermuis 24 28,5 4,6 11,3 bosvleermuis 26 32 13 20 dwergvleermuis 18 24 3,5 8 niet geobserveerde soorten NULL (blanco) Databank - Gevorderden
Nieuwe query (design view) >>Show Table>>"Observaties" & "VleermuisSoorten" Dubbelklik relatie (1) Include all ... VleermuisSoorten ... only from ...: Observaties OK (2) relatie krijgt een pijltje !! sleep uit VleermuisSoorten, Observaties * Bekijk in datasheet view Bekijk in SQL-view "left join" of "right join" Outer Join (basis) 2 1 Databank - Gevorderden
VleermuisSoort Naam MinimumSpanwijdte MaximumSpanwijdte MinimumGewicht MaximumGewicht ObservatieTrip Datum Observator Locatie "Many-to-Many" Relaties * * Observaties Spanwijdte Gewicht • Tijdens een observatietrip observeren we 0 of meerdere vleermuissoorten • Een vleermuissoort kan tijdens 0 of meerdere observatietrips geobserveerd worden • Bij elke observatie noteren we de spanwijdte en het gewicht Databank - Gevorderden
Importeer ObservatieTrips.txt in tabel ObservatieTrips Relaties >>Tools>>RelationShips rechtermuisklik >>Show Table... Voeg tabel Observatietrips toe Sleep "datum" van "Observaties" naar "ObservatieTrips" Maak nieuwe query ObservatieTripRapport Voeg tabellen "Observaties", "Observatietrips", "VleermuisSoorten" toe Voor elke tabel sleep "*" op design grid Criteria Alleen de observatietrips met observator "Serge Demeyer" Join (3 tabellen) Databank - Gevorderden
Oefeningen (vleermuizen) • maak queries voor • Alle observaties waarvan de spanwijdte groter of kleiner is dan de minima/maxima voor de soort • alle soorten die niet werden geobserveerd • tel alle soorten die niet werden geobserveerd • alle observaties in de ijskelder • alle observaties in de ijskelder gemaakt na 2000 Databank - Gevorderden
Antwerpse Metro (overzicht) Databank - Gevorderden
Recursieve Join (1/3) • Importeer • Haltes.txt & Lijnen.txt • Bekijk inhoud tabellen • Maak nieuw query • design view • naam: 1overstap • voeg tabel "Haltes" 2 x toe • (1) Haltes & (2) Haltes_1 • (3) relatie: "Haltes.volgende" "Haltes_1.halte" • Sleep "Lijn" en "Halte" uit "Halte" en "Halte_1" op grid • Resultaat in Datasheet view ? 1 2 3 Databank - Gevorderden
Recursieve Join (2/3) • Criteria • (1) kolom "Haltes.lijn""= Haltes_1.halte" • Datasheet view • Hoeveel records ? 1 Databank - Gevorderden
Recursieve Join (3/3) • Maak een "left outer join" • (1) Include ALL ...from "Haltes" ...and only ... "Haltes_1" ... • Datasheet view • Hoeveel records ? • Criterium • (2) 2de lijn (Or:)Haltes_1.Lijn Is Null • Datasheet view • Hoeveel records ? • Verklaar het verschil 1 2 Databank - Gevorderden
Oefeningen (antwerpse metro) • maak queries voor • Welke stations kan ik in precies drie stappen bereiken vanuit station "Meir" ? Geef de tussenhaltes. • Welke stations kan ik in precies drie stappen bereiken vanuit station "Meir", zonder van lijn te veranderen ? Geef de tussenhaltes. • Vanuit welke stations kan ik in maximaal drie stappen station "Meir" bereiken, zonder van lijn te veranderen ? Geef de tussenhaltes. Databank - Gevorderden
Conclusie • Terminologie • redundantie normalisatie • Relaties • "1-to-Many" (1-N) • Join • Inner Join; Outer (Left/Right) Join • Relaties (vervolg) • "Many-to-Many" (N-M) • Join (vervolg) • Recursive Join • Oefeningen Databank - Gevorderden