Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

45
Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio- Ingenieur.)

Transcript of Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

Page 1: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

ComputervaardighedenHoofdstuk 5 — Databanken

(Let op: dit is enkel voor studenten Bio-Ingenieur.)

Page 2: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

2

Inhoud

• Terminologie• Data importeren• Basis queries• Allerhande Joins

“Doe dit.”

“Aandachtspunt!”

“Wat gebeurt hier ?”

“Controleer wat je ziet.”

Page 3: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

3

Anatomie van een databank

• Een databank is een verzameling van tabellen.• Een tabel is een lijst van records.• Een record is een lijst van velden.

• Alle records binnen éénzelfde tabel hebben dezelfde structuur.- Ariteit (aantal velden).- Type (soort veld; hoofdzakelijk getal of tekst)

Page 4: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

4

Elk Access project is één databank

Hier vind je een

overzicht van de

tabellen in deze

databank.

Dit is een

voorbeeld van

zo’n tabel. Elke

tabel heeft een

unieke naam.

Deze tabel heet

“Data”.

Hier zie je het aantal records in een tabel.

Page 5: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

5

Een nieuwe databank starten

1. Open Microsoft Access

2. Menu: File/New ...

3. Kies voor “blank database”

4. Kies een naam voor je database

5. En sla op.

Page 6: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

6

Data importeren

1. File > Get External Data > Import...

Let op: kies niet voor “Link Tables...” ! Dit laat je

wel toe de data te gebruiken, maar importeert

deze niet in Access. Als je bewaart wordt de data

niet mee bewaard, en als je je Access project

nadien doorstuurt (of indient op het examen)

werkt je verdere code niet meer.

2. Kies je databestand.

Let op: kies het juiste type bij “Files of type”!

Page 7: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

7

Data importeren

3. Selecteer “Delimited”; Next4. Kies de juiste delimiter. Zorg dat “First

Row contains Field Names” geselecteerd is.

Next.

Gebruik de preview om het effect van je keuzes te

bekijken en te verifiëren.

Page 8: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

8

Data importeren

5. Kies voor “In a New Table”; Next 6. Next.

Page 9: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

9

Data importeren

7. Kies voor “No primary key”; Next 8. Kies een naam voor je tabel; Finish.

Page 10: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

10

Queries

• Een query is een bevraging van de databank.• Een query gebeurt op basis van de records in één

of meer tabellen.• Het resultaat van een query is zelf ook een tabel.

- Deze tabel blijft gebonden aan de query, en verandert als de records in de andere tabellen veranderen.

Page 11: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

11

Nieuwe Query starten

1. Klik op “Queries”, en dubbelklik op

“Create Query in Design View”

2. Voor elke tabel die je wil bevragen,

selecteer deze en klik op “Add”. Sluit af

met “Close”.

Let op: kies uitsluiten de tabellen die je echt nodig

hebt ! Overbodige tabellen zullen het resultaat van

je query beïnvloeden.

Page 12: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

12

De Query maken en evalueren

3. Dubbelklik op “*” in tabel “Data”.4. Klik op het “View” icoon linksboven.

Kies voor “Datasheet View”. De design

view wordt dan vervangen door een tabel

met de resultaten van de query.

Deze stap bouwt de query op. De query

hierboven selecteert alle records. Andere

soorten queries volgen later in de slides.

Page 13: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

13

SQL: de code achter je Query

5. Klik linksboven op het “View” icoon. Kies

deze keer voor “SQL View”. De datasheet

view wordt vervangen door een tekstveld

met daarin de code van je Query.

Deze code is SQL code. SQL is een standaard

query taal (Standard Query Language => SQL) die

door zowat alle databanken gesproken wordt. Wat

je in de design view doet, is eigenlijk het opstellen

van zo’n SQL query die dan door Access wordt

verwerkt.

Let op: Deze cursus verwacht niet dat je zelf zo’n

code kan schrijven. Je moet echter wel weten hoe

je ze terug kan vinden, aangezien deze code vaak

als antwoord dient op examenvragen.

Page 14: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

14

Sorteren op velden

1. Keer terug naar de “Design View”.

2. Verwijder de kolom met de “*” uit je

query. (Klik op het kleine balkje, dan

delete of rechtsklik en “Cut”.)

3. Voeg velden “day” en “sunshine” toe.

4. Kies bij de kolom voor “day” bij “Sort”

voor “Ascending”.

5. Ga naar de “Datasheet View”.

Je krijgt als resultaat een tabel met volgende

eigenschappen:

• elke record heeft slechts twee velden, en

• alle records zijn gesorteerd op datum.

Page 15: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

15

Formules

1. Keer terug naar de “Design View”.

2. Selecteer “day” in de cel “Field:” van de

eerste kolom.

3. Vervang dit met:

month: Month(day)

rain: rainAM + rainPM

4. In de “Field:” cel van kolom drie, schrijf:

5. Ga naar de “Datasheet View”.

De tabel bevat nu records met drie velden:

• het maandnummer bevat,

• de hoeveelheid zon, en

• de som is van de regen in voor- en namiddag van de

oorspronkelijke record.

Page 16: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

16

Algemene vorm van formules

Elke formule is van de vorm:

field_name : expr

function_name ( params )

Hierbij is field_name een naam voor het nieuwe veld. Dit is vrij te kiezen, maar moet uniek

zijn.

Na de dubbelpunt volgt een expressie die de waarde voor het nieuwe veld berekent. Dit is

een combinatie van rekenkundige bewerkingen (+, -, *, /) en/of aanroepen van functies. Die

laatste zien er steeds als volgt uit:

Hierbij is function_name natuurlijk de naam van de functie die je wil aanroepen. In ons

voorbeeld was dat “Month”. De parameters geef je op als een lijst, eventueel gescheiden

met komma’s (dus geen punt-komma’s als in Excel).

Page 17: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

17

Queries met voorwaarden

Probeer elk van deze queries en vergelijk:

De linker-query selecteert alle records

waarvan zowel sunshine als rain

groter zijn dan 5. Er zijn 13 dergelijke

records.

De rechter query selecteert alle records

waarvan ofwel sunshine ofwel rain

groter is dan 5. Er zijn 204 dergelijke

records.

Page 18: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

18

Queries met voorwaarden

Elke voorwaarde die je plaatst in één van de cellen van de “Criteria:” rijen test de waarde van

het veld in de overeenkomstige kolom.

Als twee voorwaarden in eenzelfde rij staan (zoals hierboven), dan moet aan beide

voorwaarden voldaan zijn vooraleer een record aanvaard wordt.

Als twee voorwaarden in verschillende rijen staan (zoals hieronder), dan is het

voldoende dat de record aan de voorwaarden van één rij voldoet om geselecteerd te worden.

Zelfde rij: logische “AND”

Verschillende rijen: logische

“OR”

Page 19: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

19

Queries met voorwaarden

Je kan ook meerdere voorwaarden in één cel plaatsen:

Bovenstaande query kijkt of sunshine kleiner is dan 1 of

(omwille van de OR) groter dan 5, en (omdat de

voorwaardan in dezelfde rij staan) of rain groter is dan 1 en

(omwille van de AND) kleiner dan 5. M.a.w.:

(sun < 1 Or sun > 5) And (rain > 1 And rain < 5)

Page 20: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

20

Queries over groepen van records

1. Start een nieuwe query op basis van de tabel “Data”.

2. Klik op het “Totals” icoon in de toolbar.

Verifieer dat je design view nu ook een “Total:” rij bevat.

Page 21: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

21

Queries over groepen van records

3. Voeg drie keer veld “sunshine” aan de query toe.

4. Selecteer bij “Total:” voor de eerste sunshine “Min”, voor de tweede sunshine “Max” en

voor de derde sunshine “Avg”.

5. Geef elke sunshine een naam (“min”, “max”, “average”).

7. Bekijk het resultaat in de datasheet view.

Page 22: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

22

Totals

“Totals” laat toe om karakteristieken te berekenen op basis van een groep records in

plaats van individuele records.

Mogelijkheden: min, max, avg, stdev, count, sum,...

Het resultaat is één record per groep, met daarin de berekende karakteristieken als velden.

Zo berekende deze query de minimum, maximum en gemiddelde hoeveelheid zonneschijn

over het gehele jaar.

Page 23: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

23

Totals + Group ByPas vorige query als volgt aan:

1. Voeg een nieuwe kolom toe met “day”.

2. Pas de waarde “day” aan met de expressie voor het berekenen van de maand.

3. Kies bij “Total:” voor “Group By”.

Bekijk het resultaat in de datasheet view.

De tabel bevat nu twaalf records, één voor elke maand.

Dit is omdat we alle records gegroepeerd hebben op

basis van de waarde voor maand. Zo zijn er natuurlijk

juist twaalf.

Page 24: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

24

Elke query levert een tabel op!

Je kan dus queries doen op basis van de

resultaten van eerdere queries.

Page 25: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

25

Queries op resultaten van queriesBewaar de vorige query als “SunshinePerMonth”. Start dan een nieuwe query op basis van

SunshinePerMonth (zie figuur linksonder).

Voeg dan month en average toe, en stel dat average groter moet

zijn dan 5 (zie figuur rechtsboven).

Bekijk het resultaat in de datasheet view (figuur rechts).

Sla de query op als “MonthsWithSunshineOver5” (wordt later in de

slides opnieuw gebruikt).

Page 26: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

26

Voorbereiding: tabel MonthsImporteer de data uit months.txt in een nieuwe tabel genaamd “Months”.

Page 27: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

27

Queries over meerdere tabellenStart een nieuwe query op basis van de “Months” tabel en op basis van de

“SunshinePerMonth” query.

Voeg daarna elk veld uit elke tabel toe aan de query.

Bekijk het resultaat in de datasheet view.

Page 28: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

28

Queries over meerdere tabellen

Months SunshinePerMonth

X

= 12 x 12

Page 29: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

29

Inner Join

Het resultaat van vorige query is een tabel waarbij elke record uit de eerste tabel

(Months) wordt gecombineerd met elke record uit de tweede tabel

(SunshinePerMonth).

Wat we eigenlijk willen is dat records uit beide tabellen pas worden gecombineerd als hun

waarde voor maand overeenkomt. Dit is wat we nu gaan doen:

Sleep “Number” uit “Months” op “month” uit “SunshinePerMonth”. Access toont hierna een

verbinding tussen deze twee velden. Dit is een “Inner Join”.

Bekijk het resultaat in de datasheet view.

Page 30: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

30

Inner JoinMonths SunshinePerMonth

Merk op dat door het leggen van een inner join nu alleen

records worden samengesteld waarvoor de waarden die

meespelen in de inner join dezelfde zijn.

Page 31: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

31

Primary en Foreign Keys

Gegeven dit:

Je kan nu zeggen dat “Number” en “month” keys zijn.

Van een primary key wordt verwacht dat elke record binnen een tabel een unieke waarde

voor deze key heeft. Dit is het geval voor “Number” in “Months”.

Een foreign key is een veld waarvan de waarde overeen komt met de primary key van

records in een bepaalde tabel. Dit is het geval voor “month” in “SunshinePerMonth”.

Keys worden dus gebruikt om records in verschillende tabellen aan elkaar te linken. Dit is in

essentie wat we doen in een Join.

Page 32: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

32

Inner Join + Voorwaarden

Pas de query als volgt aan: Bekijk het resultaat:

Bij combinatie van joins en voorwaarden: eerst gebeurt de join, daarna wordt het resultaat

gefilterd door de voorwaarden.

Page 33: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

33

Voorbereiding

Maak volgende query: Bekijk het resultaat:

De definitie van “MonthsWithSunshineOver5” vind

je terug op slide 25.

Merk op: dit levert het zelfde resultaat op als de

query in de vorige slide. Les geleerd: er zijn altijd

wel meerdere oplossingen mogelijk.

Page 34: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

34

Outer Join

Dubbelklik op de verbinding tussen

Number en month. Kies optie 2 (ALL from

“Months”), en klik OK.

Verifieer dat er de verbinding

tussen Number en month nu een

richting heeft gekregen (van

Number naar month).

Dit maakt van je inner join een outer join. De pijl toont aan dat je join nu een outer join is.

Page 35: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

35

Outer Join

Merk op dat elke record uit Months nu mee wordt

opgenomen in het resultaat, ook al was er geen

record in SunshinePerMonthOver5 met een

overeenkomstige waarde voor number. De overige

velden worden leeg gelaten.

?

?

?

Page 36: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

36

Voorbereiding

Importeer de data in “haltes.txt” in een nieuwe

tabel “Haltes”.

Importeer de data in “lijnen.txt” in een nieuwe

tabel “Lijnen”.

Page 37: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

37

Recursieve Join

Start een nieuwe query. Voeg de tabel

“Haltes” twee keer toe.

Bouw daarna de query als volgt op:

Page 38: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

38

Recursieve Join

Een recursieve join werkt dus als een gewone join. Het enige verschil is dat je twee keer dezelfde

tabel bevraagt.

Haltes Haltes

Page 39: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

39

Meerdere joins in één query

Rechtsklik naast één van de tabellen in de

query, en kies “Show Table...”

Voeg één keer tabel “Lijnen” toe

aan de query.

Page 40: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

40

Meerdere joins in één query

Pas de query als volgt aan en bekijk het resultaat.

Page 41: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

41

Meerdere joins in één query

Het resultaat toont voor elke lijn de naam van die lijn, samen met twee opeenvolgende

halten op die lijn.

Page 42: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

42

Meerdere joins in één query

Dit werkt als volgt:

1

2 3

Join 1 combineert twee records waarvan “Volgende” in de eerste record dezelfde waarde heeft als “Halte” in de

tweede record. Dit geeft ons dus twee opeenvolgende haltes.

Join 2 combineert twee records als ze dezelfde waarde voor “Lijn” hebben. Samen met vorige join hebben we

dus: twee opeenvolgende haltes op dezelfde lijn.

Join 3 linkt het lijnnummer van één van de eerste twee records (die wegens join 2 hetzelfde zijn voor beide

records) aan het nummer in de records van Lijnen. Het resultaat is dus dat voor elke twee opeenvolgende

haltes op een zelfde lijn we nu ook de naam van die lijn kennen.

Page 43: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

43

Extra: voorwaarde “Like”Breidt de vorige query als volgt uit:

“Like” kijkt of de waarde tekstueel overeenkomt met de waarde die er op volgt. Je mag “*”

gebruiken in de betekenis van “eender welke combinatie van letters”.

Dat betekent dat we hier kijken of de eerste halte ofwel “Meir” is, ofwel begint met een “S”.

Like “Meir”Like “S*”

Page 44: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

44

Survival guideEssentiële vaardigheden• Importeren van gegevens• Query met enkelvoudige criteria• Sorteren binnen een query• Query met rekenkundige bewerkingen• one-to-many" relatie definiëren• join-query over een "one-to-many" relatie

Belangrijke vaardigheden• Query met meervoudige criteria• Query met rekenkundige bewerkingen over reeksen (COUNT, MIN, MAX, AVG)• "Group By" query; inclusief het gebruik van operatoren als COUNT, MIN, MAX,

AVG• Outer join-query (links of rechts)

Nuttige vaardigheden• Recursieve join (een tabel met zichzelf joinen)

Page 45: Computervaardigheden Hoofdstuk 5 — Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.)

45

Conclusie

• Databank- Terminologie, Navigeren, Importeren

• Tabellen- Records/Velden manipuleren

• Queries- SQL- sorteren- filter volgens criteria- rekenkundige bewerkingen (ook over reeksen)- GROUP BY

• Joins- Inner Joins- Outer Joins- Recursive Joins