Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen
description
Transcript of Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen
Universiteit Antwerpen
Databank - Gevorderden
5.1Computervaardigheden en Programmatie
Computervaardigheden en Programmatie
1rste BAC Toegepaste Biologische Wetenschappen
Hoofdstuk 5Databank - Gevorderden
Universiteit Antwerpen
Databank - Gevorderden
5.2Computervaardigheden en Programmatie
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
Universiteit Antwerpen
Databank - Gevorderden
5.3Computervaardigheden en Programmatie
Uitzonderlijke observaties• Alle observaties per soort waarvoor
– gewicht < minimum gewicht– gewicht > maximum gewicht– spanwijdte < minimum spanwijdte– spanwijdte > maximum spanwijdte
Universiteit Antwerpen
Databank - Gevorderden
5.4Computervaardigheden en Programmatie
datum soort span- gew- min. max. min. maxwijdte icht span. span. gew. gew.
11/11/1992 baardvleermuis 19 4 19 22,5 4 811/11/1992 grootoorvleermuis 24 5 24 28,5 4,611,311/11/1992 grootoorvleermuis 28 12 24 28,5 4,611,302/11/1993 baardvleermuis 19,5 5 19 22.5 4 802/11/1993 grootoorvleermuis 25 7 24 28,5 4,611,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)
Universiteit Antwerpen
Databank - Gevorderden
5.5Computervaardigheden en Programmatie
"1-to-Many" Relaties
VleermuisSoortenNaamMinimumSpanwijdteMaximumSpanwijdteMinimumGewichtMaximumGewicht
ObservatiesDatumSoortSpanwijdteGewicht
*
1
1 vleermuissoort ...
kan vele malen geobserveerd worden
Universiteit Antwerpen
Databank - Gevorderden
5.6Computervaardigheden en Programmatie
Inner Join (Query)VleermuisSoortenNaamMinimumSpanwijdteMaximumSpanwijdteMinimumGewichtMaximumGewicht
ObservatiesDatumSoortSpanwijdteGewicht
VleermuisSoortenx Observaties
NaamMinimumSpanwijdteMaximumSpanwijdteMinimumGewichtMaximumGewichtDatumSpanwijdteGewicht
Cartesisch Productwaar
VleermuisSoorten.Naam
= Observaties.Soort
Universiteit Antwerpen
Databank - Gevorderden
5.7Computervaardigheden en Programmatie
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
datum soort span- gew- min. max. min. maxwijdte icht span. span. gew. gew.
11/11/1992 baardvleermuis 19 4 19 22,5 4 811/11/1992 grootoorvleermuis 24 5 24 28,5 4,6 11,311/11/1992 grootoorvleermuis 28 12 24 28,5 4,6 11,302/11/1993 baardvleermuis 19,5 5 19 22.5 4 802/11/1993 grootoorvleermuis 25 7 24 28,5 4,6 11,3
Inner Join (Resultaat)soort min. max. min. max
span.span.gew. gew.baardvleermuis 19 22,5 4 8grootoorvleermuis 24 28,5 4,6
11,3
Universiteit Antwerpen
Databank - Gevorderden
5.8Computervaardigheden en Programmatie
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
Universiteit Antwerpen
Databank - Gevorderden
5.9Computervaardigheden en Programmatie
Inner Join (basis)• 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"
1
2
3
4
Universiteit Antwerpen
Databank - Gevorderden
5.10Computervaardigheden en Programmatie
Inner Join (extra criteria)
1
• definieer criterium voor gewicht
>[VleermuisSoorten].[MaximumGewicht]
Or
<[VleermuisSoorten].[MinimumGewicht]• bewaar als
UitzonderlijkeObservatiesGewicht
Universiteit Antwerpen
Databank - Gevorderden
5.11Computervaardigheden en Programmatie
Outer Join (Query)VleermuisSoortenNaamMinimumSpanwijdteMaximumSpanwijdteMinimumGewichtMaximumGewicht
ObservatiesDatumSoortSpanwijdteGewicht
VleermuisSoortenx Observaties
NaamMinimumSpanwijdteMaximumSpanwijdteMinimumGewichtMaximumGewichtDatumSpanwijdteGewicht
Cartesisch Productwaar
(VleermuisSoorten.Naam= Observaties.Soort)
of(er bestaat geen
observatie metVleermuisSoorten.Naam= Observaties.Soort)
Universiteit Antwerpen
Databank - Gevorderden
5.12Computervaardigheden en Programmatie
datum soort span- gew-wijdte icht
11/11/1992 baardvleermuis 19 411/11/1992 grootoorvleermuis 24 511/11/1992 grootoorvleermuis 28 1202/11/1993 baardvleermuis 19,5 502/11/1993 grootoorvleermuis 25 7
datum soort span- gew- min. max. min. maxwijdte icht span. span. gew. gew.
11/11/1992 baardvleermuis 19 4 19 22,5 4 811/11/1992 grootoorvleermuis 24 5 24 28,5 4,6 11,311/11/1992 grootoorvleermuis 28 12 24 28,5 4,6 11,302/11/1993 baardvleermuis 19,5 5 19 22.5 4 802/11/1993 grootoorvleermuis 25 7 24 28,5 4,6 11,3
bosvleermuis 26 32 13 20dwergvleermuis 18 24 3,5 8
Outer Join (Resultaat)soort min. max. min. max
span.span.gew. gew.baardvleermuis 19 22,5 4 8grootoorvleermuis 24 28,5 4,6
11,3bosvleermuis 26 32 13 20dwergvleermuis 18 24 3,5 8
niet geobserveerde soorten
NULL (blanco)
Universiteit Antwerpen
Databank - Gevorderden
5.13Computervaardigheden en Programmatie
Outer Join (basis)• 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" 2
1
Universiteit Antwerpen
Databank - Gevorderden
5.14Computervaardigheden en Programmatie
"Many-to-Many" RelatiesVleermuisSoort
NaamMinimumSpanwijdteMaximumSpanwijdteMinimumGewichtMaximumGewicht
ObservatieTrip
DatumObservatorLocatie
ObservatiesSpanwijdteGewicht
**
• 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
Universiteit Antwerpen
Databank - Gevorderden
5.15Computervaardigheden en Programmatie
Join (3 tabellen)• 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"
Universiteit Antwerpen
Databank - Gevorderden
5.16Computervaardigheden en Programmatie
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
Universiteit Antwerpen
Databank - Gevorderden
5.17Computervaardigheden en Programmatie
Antwerpse Metro (overzicht)
Universiteit Antwerpen
Databank - Gevorderden
5.18Computervaardigheden en Programmatie
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
Universiteit Antwerpen
Databank - Gevorderden
5.19Computervaardigheden en Programmatie
Recursieve Join (2/3)• Criteria
– (1) kolom "Haltes.lijn""= Haltes_1.halte"
• Datasheet view– Hoeveel records ?
1
Universiteit Antwerpen
Databank - Gevorderden
5.20Computervaardigheden en Programmatie
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
Universiteit Antwerpen
Databank - Gevorderden
5.21Computervaardigheden en Programmatie
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.
Universiteit Antwerpen
Databank - Gevorderden
5.22Computervaardigheden en Programmatie
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