5. 5. Inhoud rste BAC Toegepaste Biologische Wetenschappen Hoofdstuk 5 Terminologie redundantie normalisatie Relaties "-to-many" (-N) Join Inner Join; Outer (Left/Right) Join Relaties (vervolg) "Many-to-Many" (N-M) Join (vervolg) Recursive Join Oefeningen 5.3 5.4 Uitzonderlijke observaties Alle observaties per soort waarvoor gewicht < minimum gewicht gewicht > maximum gewicht spanwijdte < minimum spanwijdte spanwijdte > maximum spanwijdte Naïeve Tabelvoorstelling datum soort span- gew- min. max. min. max wijdte icht span. span. gew. gew. //99 baardvleermuis 9 4 9,5 4 8 //99 grootoorvleermuis 4 5 4 8,5 4,6,3 //99 grootoorvleermuis 8 4 8,5 4,6,3 0//993 baardvleermuis 9,5 5 9.5 4 8 0//993 grootoorvleermuis 5 7 4 8,5 4,6,3 Redundante Informatie verkwisting van plaats gevaar op inconsistenties verander record alle gelijkaardige records symptoom van slecht databankontwerp! redundante informatie Oplossing? Normalisatie (opsplitsen in meerdere tabellen)
5.5 5.6 "-to-many" Relaties Inner Join (Query) vleermuissoort... kan vele malen geobserveerd worden Minimum Maximum Minimum * Soort Minimum Maximum Minimum Soort Cartesisch Product waar. =.Soort x Minimum Maximum Minimum 5.7 5.8 Inner Join (Resultaat) Voorbereidingen datum soort span- gewwijdte icht //99 baardvleermuis 9 4 //99 grootoorvleermuis 4 5 //99 grootoorvleermuis 8 0//993 baardvleermuis 9,5 5 0//993 grootoorvleermuis 5 7 soort min. max. min. max span. span. gew. gew. baardvleermuis 9,5 4 8 grootoorvleermuis 4 8,5 4,6,3 datum soort span- gew- min. max. min. max wijdte icht span. span. gew. gew. //99 baardvleermuis 9 4 9,5 4 8 //99 grootoorvleermuis 4 5 4 8,5 4,6,3 //99 grootoorvleermuis 8 4 8,5 4,6,3 0//993 baardvleermuis 9,5 5 9.5 4 8 0//993 grootoorvleermuis 5 7 4 8,5 4,6,3 Importeer ".txt" tabel "" ".txt" -N relatie >>Tools>>Relationships Selecteer tabellen "" & "" Sleep ".soort" op "." () bevestig via "Create" () resultaat in "Relationships" Sluit "Relationships"
5.9 5.0 Inner Join (basis) Inner Join (extra criteria) Nieuwe query (design view) >>Show Table>> "" & "" () Automatisch relatie sleep uit () datum, soort, gewicht uit (3) Minimum & (4) Bekijk in datasheet view Bekijk in SQL-view "inner join" 4 3 definieer criterium voor gewicht >[].[] Or <[].[Minimum] bewaar als Uitzonderlijke 5. 5. Minimum Maximum Minimum Soort Outer Join (Query) Cartesisch Product waar (. =.Soort) of (er bestaat geen observatie met. =.Soort) x Minimum Maximum Minimum datum soort span- gewwijdte icht //99 baardvleermuis 9 4 //99 grootoorvleermuis 4 5 //99 grootoorvleermuis 8 0//993 baardvleermuis 9,5 5 0//993 grootoorvleermuis 5 7 Outer Join (Resultaat) soort min. max. min. max span. span. gew. gew. baardvleermuis 9,5 4 8 grootoorvleermuis 4 8,5 4,6,3 bosvleermuis 6 3 3 0 dwergvleermuis 8 4 3,5 8 niet geobserveerde soorten datum soort span- gew- min. max. min. max wijdte icht span. span. gew. gew. //99 baardvleermuis 9 4 9,5 4 8 //99 grootoorvleermuis 4 5 4 8,5 4,6,3 //99 grootoorvleermuis 8 4 8,5 4,6,3 0//993 baardvleermuis NULL (blanco) 9,5 5 9.5 4 8 0//993 grootoorvleermuis 5 7 4 8,5 4,6,3 bosvleermuis 6 3 3 0 dwergvleermuis 8 4 3,5 8 3
5.3 5.4 Nieuwe query (design view) >>Show Table>> "" & "" Dubbelklik relatie () Include all...... only from...: OK Outer Join (basis) () relatie krijgt een pijltje!! sleep uit, * Bekijk in datasheet view Bekijk in SQL-view "left join" of "right join" VleermuisSoort Minimum Maximum Minimum "Many-to-Many" Relaties * ObservatieTrip Observator Locatie 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 * 5.5 5.6 Importeer ObservatieTrips.txt in tabel ObservatieTrips Relaties >>Tools>>RelationShips rechtermuisklik >>Show Table... Voeg tabel Observatietrips toe Sleep "datum" van "" naar "ObservatieTrips" Join (3 tabellen) Maak nieuwe query ObservatieTripRapport Voeg tabellen "", "Observatietrips", "" toe Voor elke tabel sleep "*" op design grid Criteria Alleen de observatietrips met observator "Serge Demeyer" maak queries voor Oefeningen (vleermuizen) 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 000 4
5.7 5.8 Antwerpse Metro (overzicht) Recursieve Join (/3) Importeer Haltes.txt & Lijnen.txt Bekijk inhoud tabellen Maak nieuw query design view naam: overstap voeg tabel "Haltes" x toe () Haltes & () Haltes_ (3) relatie: "Haltes.volgende" "Haltes_.halte" Sleep "Lijn" en "Halte" uit "Halte" en "Halte_" op grid Resultaat in Datasheet view? 3 5.9 5.0 Recursieve Join (/3) Recursieve Join (3/3) Criteria Maak een "left outer join" () kolom "Haltes.lijn" "= Haltes_.halte" Datasheet view Hoeveel records? () Include ALL... from "Haltes"... and only... "Haltes_"... Datasheet view Hoeveel records? Criterium () de lijn (Or:) Haltes_.Lijn Is Null Datasheet view Hoeveel records? Verklaar het verschil 5
5. 5. Oefeningen (antwerpse metro) Conclusie 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. Terminologie redundantie normalisatie Relaties "-to-many" (-N) Join Inner Join; Outer (Left/Right) Join Relaties (vervolg) "Many-to-Many" (N-M) Join (vervolg) Recursive Join Oefeningen 6