![Page 2: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/2.jpg)
2
Inhoud Hoorcollege 1
Waarom modelleren 1 Voorbeeld tekstueel ontwerp Opdracht
![Page 3: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/3.jpg)
3
Voorbeeld model
Rechtopstaande holle cilinder
![Page 4: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/4.jpg)
4
Voorbeeld model
Rechtopstaande holle cilinder Onderkant is gesloten
![Page 5: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/5.jpg)
5
Voorbeeld model
Rechtopstaande holle cilinder Onderkant is gesloten Aan de zijkant zit een driekwart
ovaal Ovaal is kleiner dan cilinder Kleur is wit
![Page 6: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/6.jpg)
6
Voorbeeld model
Een mok, waterkoker? Thermoskan?
Vraag: is dit eenduidig?
![Page 7: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/7.jpg)
7
Opdracht Verzin een voorwerp Beschrijf dit voorwerp Geef tekstuele beschrijving aan
mede student.
![Page 8: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/8.jpg)
8
SELECT basisbegrippenhoofdstuk 5 [van der Lans] datatypen (num, alfanum, datum/tijd) systeemvariabelen (USER, TODAY) expressies (o.a. CASE) scalaire vs. set functies:
scalaire functies: input is 1 rij set functies: input is verzameling rijen
casting
![Page 9: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/9.jpg)
9
SELECT instructie:definitie
<select-instructie>::=<select-component><from-component>[<where-component>][<group-by-component>][<having-component>][<order-by-component>]
![Page 10: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/10.jpg)
10
SELECT instructie:voorbeeld
SELECT PNAAM, LEEFTIJD [kolom(men)]
FROM PATIENT [tabel(len)]
WHERE LEEFTIJD > 50; [voorwaarde voor rij]
PAT# PNAAM LEEFTIJD GESLACHT ARTS1234 Jansen 21 M Schouten2345 Smit 56 V van Dijk2346 Lopez 35 V Kleine1243 Peters 89 M Oei
![Page 11: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/11.jpg)
11
SELECT instructie:volgorde van uitvoeren (intern)
SELECT [kolommen] [3]
FROM [tabellen] [1]
WHERE [voorwaarde voor rij] [2]
ORDER BY [kolom] [4]
1. FROM 2. WHERE
ab
3. SELECT 4. ORDER BY
![Page 12: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/12.jpg)
12
SELECT instructie:volgorde (voorbeeld)
SELECT ANO, ANAAM
FROM A
WHERE KLEUR=‘Blauw’
ORDER BY ANAAM
1. FROM AANO ANAAM KLEUR GEW PLAATS
A1 Moer Rood 12 LondenA2 Bout Groen 17 ParijsA3 Schroef Blauw 17 RomeA4 Schroef Rood 14 LondenA5 Kamrad Blauw 12 ParijsA6 Nok Rood 19 Londen
2. WHERE KLEUR=‘Blauw’ANO ANAAM KLEUR GEW PLAATS
A3 Schroef Blauw 17 RomeA5 Kamrad Blauw 12 Parijs
3. SELECT ANO, ANAAM ANO ANAAM
A3 SchroefA5 Kamrad
4. ORDER BY ANAAMANO ANAAM
A5 KamradA3 Schroef
![Page 13: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/13.jpg)
13
SELECT instructie:FROM component (definitie)
<from-component> ::=FROM <tabelref> [{,<tabelref>}...]
<tabelref> ::=<tabelspec> [[AS] <alias>]
<tabelspec> ::=[<user>.] tabelnaam
![Page 14: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/14.jpg)
14
SELECT instructie:FROM component (voorbeeld)
SELECT teamnr, naamFROM teams AS t, spelers AS sWHERE t.spelersnr = s.spelersnr
Dit is een voorbeeld van een natural join
![Page 15: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/15.jpg)
15
Natural join in stapjes:1. FROM - input
SELECT .... FROM teams AS t, spelers AS s
teams spelers
TEAMNR SPELERSNR DIVISIE SPELERSNR NAAM
1 12 2 11 Jansen2 14 2 12 Pietersen3 15 3 13 Smit
14 Vlas15 Stolk
![Page 16: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/16.jpg)
16
Natural join in stapjes:2. FROM - resultaat
SELECT ... FROM teams AS t, spelers AS sTEAMNR SPELERSNR DIVISIE SPELERSNR NAAM
1 12 2 11 Jansen1 12 2 12 Pietersen1 12 2 13 Smit1 12 2 14 Vlas1 12 2 15 Stolk2 14 2 11 Jansen2 14 2 12 Pietersen2 14 2 13 Smit2 14 2 14 Vlas2 14 2 15 Stolk3 15 3 11 Jansen3 15 3 12 Pietersen3 15 3 13 Smit3 15 3 14 Vlas3 15 3 15 Stolk
![Page 17: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/17.jpg)
17
Natural join in stapjes:3. WHERE - input
WHERE t.spelersnr = s.spelersnr;TEAMNR SPELERSNR DIVISIE SPELERSNR NAAM
1 12 2 11 Jansen1 12 2 12 Pietersen1 12 2 13 Smit1 12 2 14 Vlas1 12 2 15 Stolk2 14 2 11 Jansen2 14 2 12 Pietersen2 14 2 13 Smit2 14 2 14 Vlas2 14 2 15 Stolk3 15 3 11 Jansen3 15 3 12 Pietersen3 15 3 13 Smit3 15 3 14 Vlas3 15 3 15 Stolk
![Page 18: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/18.jpg)
18
Natural join in stapjes:4. WHERE - resultaat
SELECT ... FROM teams AS t, spelers AS s
WHERE t.spelersnr = s.spelersnr;TEAMNR SPELERSNR DIVISIE SPELERSNR NAAM
1 12 2 12 Pietersen2 14 2 14 Vlas3 15 3 15 Stolk
![Page 19: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/19.jpg)
19
Natural join in stapjes:5. SELECT - resultaat
SELECT teamnr, naam as aanvoerder
FROM teams AS t, spelers AS sWHERE t.spelersnr = s.spelersnr;
TEAMNR AANVOERDER
1 Pietersen2 Vlas3 Stolk
![Page 20: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/20.jpg)
20
SELECT instructie:WHERE (pseudo-code)
WHERE-resultaat := [ ];for each ROW in FROM-resultaat do
if conditie=waar thenWHERE-resultaat :+ ROW;
endfor;
![Page 21: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/21.jpg)
21
SELECT instructie:WHERE (operatoren etc) vergelijking: = < > <= >= <> AND, OR, NOT BETWEEN, IN, LIKE, NULL IN met subquery vergelijkingsoperator met subquery ANY, ALL EXISTS
![Page 22: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/22.jpg)
22
SELECT instructie:WHERE (voorbeelden)
WHEREGEB_DATUM > ‘1970-12-31’ ANDNOT NAAM = ‘Haas’;
WHERE GEB_DATUM BETWEEN ‘1960-1-1’ AND ‘1970-1-1’;
WHERE NAAM IN (‘Smit’,’Jansen’,’Zwart’);
![Page 23: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/23.jpg)
23
SELECT instructie:WHERE (IN met subquery) SELECT naam AS aanvoerder
FROM spelersWHERE spelersnr IN (SELECT spelersnr FROM teams);
![Page 24: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/24.jpg)
24
SELECT instructie:WHERE (EXISTS) SELECT naam AS aanvoerder
FROM spelersWHERE EXISTS(SELECT * FROM teams WHERE spelersnr=spelers.spelersnr);
![Page 25: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/25.jpg)
25
SELECT instructie:WHERE (ALL) SELECT
naam+’ is het oudst’ AS oudste, geb_datumFROM spelersWHERE geb_datum <= ALL(SELECT geb_datum FROM spelers);
![Page 26: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/26.jpg)
26
SELECT instructie:GROUP BY, HAVING volgend hoorcollege:
SET functies (COUNT, SUM, MIN, MAX, AVG, STDEV)
GROUP BY, HAVING
![Page 27: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/27.jpg)
27
Referentiele Integriteit spelernsnr in beide tabellen
moeten gesynchroniseerd blijven
teams spelers
TEAMNR SPELERSNR DIVISIE SPELERSNR NAAM
1 12 2 11 Jansen2 14 2 12 Pietersen3 15 3 13 Smit
14 Vlas15 Stolk
primary keyforeign key
![Page 28: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/28.jpg)
28
Referentiele Integriteit :refs aangeven bij CREATE CREATE TABLE teams(
teamnr SMALLINT NOT NULL,spelersnr SMALLINT NOT NULL,divisie CHAR(6) NOT NULL,PRIMARY KEY (teamnr),FOREIGN KEY (spelersnr)
REFERENCES spelers (spelersnr));
![Page 29: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/29.jpg)
29
Referentiele Integriteitrefererende acties default (SOLID):
ON UPDATE RESTRICT ON DELETE RESTRICT
(dwz wijzigen/verwijderen van een spelersnr in de SPELERS tabel wordt tegengehouden als spelersnr in TEAMS voorkomt)
![Page 30: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/30.jpg)
30
Referentiele Integriteitrefererende acties alternatief 1:
ON UPDATE CASCADE ON DELETE CASCADE
(dwz update/delete van een spelersnr in de SPELERS tabel triggert automatischeen update/delete in TEAMS)
alternatief 2: ON UPDATE SET NULL ON DELETE SET NULL
![Page 31: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/31.jpg)
31
Referentiele Integriteitvragen wat is de beste oplossing voor
SPELERS en TEAMS? ON UPDATE [restrict, cascade, set null] ON DELETE [restrict, cascade, set null]
wat is de beste oplossing voor SPELERS en BOETES? ON UPDATE [restrict, cascade, set null] ON DELETE [restrict, cascade, set null]
![Page 32: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/32.jpg)
32
Database Ontwerp Wat is het? Hoe doe je het? Voorbeeld Normaliseren (1NF, 2NF, 3NF,
BCNF) Opdracht
![Page 33: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/33.jpg)
33
Database ontwerp :Wat is het ? het bepalen van de tabellen en hun
kolommen die nodig zijn om bepaalde gegevens op te slaan (structuur)
logisch ontwerp (niet fysiek) C. J. Date : ‘database design is still
very much of an art, not a science’ gegevens integriteit
![Page 34: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/34.jpg)
34
Database ontwerp : Hoe doe je het? ontwerpmethoden (zie [Kroenke]):
E/R (entity-relationship) semantisch object model
controle: normaliseren
![Page 35: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/35.jpg)
35
Database ontwerp voorbeeld: administratie van uitgeleende boeken (1)
voor wie : de eigenaar van de boeken
functie : het geven van een actueel overzicht
van alle uitgeleende boeken; bovendien per boek:
aan wie (het boek is uitgeleend) sinds wanneer (het boek is uitgeleend)
![Page 36: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/36.jpg)
36
Database ontwerp voorbeeld: administratie van uitgeleende boeken (2)
bedenk eerst hoe je het zonder ge-automatiseerd systeem zou doen!
?
![Page 37: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/37.jpg)
37
Database ontwerp voorbeeld: administratie van uitgeleende boeken (3)
bedenk eerst hoe je het zonder ge-automatiseerd systeem zou doen! schrift met 1 regel per uitgeleend
boek(auteur, titel, lener_naam, lener_telnr, sinds)
vgl. database met 1 tabel:‘uitgeleende boeken’
![Page 38: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/38.jpg)
38
Database ontwerp voorbeeld: administratie van uitgeleende boeken (4)
auteur titel lener_naam lener_telnr sinds
Damasio The Feeling of What Happens Wim 020-6123123 15-5-2001Edelman Bright Air, Brilliant Fire Gijs 020-6456456 15-6-2001Singh The Code Book Tim 040-8345345 25-5-2001Kaufman At Home in the Universe Wim 020-6123123 15-8-2001Maddox Wat we nog niet weten Wim 020-6123123 22-9-2001Horgan The End of Science Tim 040-8345345 15-2-2001
problemen: wijzigen van telnr op meerdere plaatsen bij terugbrengen boek ook telnr weg
hoe komt dit ? afhankelijkheid : lener_naam -> lener_telnr lener_naam is een determinant van lener_telnr
![Page 39: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/39.jpg)
39
Database ontwerp voorbeeld: administratie van uitgeleende boeken (5)
oplossing: 2 tabellen schrift met uitgeleende boeken adresboekje (of GSM telefoon): naam +
telnr
uitgeleende boeken leners
auteur titel lener sinds naam telnr
Damasio The Feeling of What HappensWim 15-5-2001 Tim 040-8345345Edelman Bright Air, Brilliant FireGijs 15-6-2001 Wim 020-6123123Singh The Code Book Tim 25-5-2001 Gijs 020-6456456Kaufman At Home in the UniverseWim 15-8-2001Maddox Wat we nog niet wetenWim 22-9-2001Horgan The End of ScienceTim 15-2-2001
![Page 40: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/40.jpg)
40
Normalisatie: 1NF (first normal form) Definitie 1NF:
Een tabel is in 1NF als voor elke waarde van die tabel elke rij precies 1 waarde voor elke attribuut heeft
voorbeeld: in de tabel leners heeft elke rij 1 naam en 1 telnr
![Page 41: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/41.jpg)
41
Normalisatie: 2NF Definitie 2NF:
(aanname: er is slechts 1 kandidaat sleutel die de primaire sleutel is)
Een tabel is in 2NF als deze in 1NF is, en elk niet-sleutel attribuut (op de een of andere manier) afhankelijk is van de primaire sleutel
![Page 42: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/42.jpg)
42
Normalisatie: 2NF
leverbare artikelen
LNO ANO HOEV STATUS PLAATS
L1 A1 300 20 LondenL1 A2 200 20 LondenL1 A3 400 20 LondenL1 A4 200 20 LondenL1 A5 100 20 LondenL1 A6 100 20 LondenL2 A1 300 10 ParijsL2 A2 400 10 ParijsL3 A2 200 10 ParijsL4 A2 200 20 LondenL4 A4 300 20 LondenL4 A5 400 20 Londen
PK
![Page 43: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/43.jpg)
43
leveranciers
LNO STATUS PLAATS
L1 20 LondenL2 10 ParijsL3 10 ParijsL4 20 Londen
Normalisatie: 2NF
leverbare artikelen
LNO ANO HOEV
L1 A1 300L1 A2 200L1 A3 400L1 A4 200L1 A5 100L1 A6 100L2 A1 300L2 A2 400L3 A2 200L4 A2 200L4 A4 300L4 A5 400
PK PK
![Page 44: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/44.jpg)
44
Normalisatie: 3NF Definitie 3NF:
(aanname: er is slechts 1 kandidaat sleutel die de primaire sleutel is)
Een tabel is in 3NF als deze in 2NF is, en elk niet-sleutel attribuut niet-transitief afhankelijk is van de primaire sleutel
![Page 45: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/45.jpg)
45
Normalisatie: 3NF
leveranciers
LNO STATUS PLAATS
L1 20 LondenL2 10 ParijsL3 10 ParijsL4 20 Londen
PKleveranciers
LNO PLAATS
L1 LondenL2 ParijsL3 ParijsL4 Londen
plaatsen
PLAATS STATUS
Londen 20Parijs 10
2NF 3NF
![Page 46: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/46.jpg)
46
Normalisatie: BCNF (Boyce/Codd Normal Form) (informele) definitie:
een tabel is in BCNF als de enige determinanten kandidaat-sleutels zijn
(dwz alle afhankelijkheidspijlen beginnen bij kandidaat-sleutels)
![Page 47: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/47.jpg)
47
Normalisatie: BCNF (Boyce/Codd Normal Form)
leverbare artikelen
LNO LNAAM ANO HOEV
L1 Smith A1 300L1 Smith A2 200L1 Smith A3 400L1 Smith A4 200L1 Smith A5 100L1 Smith A6 100L2 Jones A1 300L2 Jones A2 400L3 Blake A2 200L4 Clark A2 200L4 Clark A4 300L4 Clark A5 400
![Page 48: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/48.jpg)
48
Normalisatie: BCNF (Boyce/Codd Normal Form)
leverbare artikelen
LNO ANO HOEV
L1 A1 300L1 A2 200L1 A3 400L1 A4 200L1 A5 100L1 A6 100L2 A1 300L2 A2 400L3 A2 200L4 A2 200L4 A4 300L4 A5 400
leveranciers
LNO LNAAM TELNR
L1 Smith 010-1231233L2 Jones 010-2342345L3 Blake 010-3453456L4 Clark 010-4564567
![Page 49: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/49.jpg)
49
Normalisatie:conclusie Wat zijn we eigenlijk aan het doen? Normalisatie is een kwestie van
gezond verstand! De zojuist besproken methoden zijn
‘geformaliseerd’ gezond verstand! Met wat ervaring weet je intuïtief
wanneer tabellen BCNF zijn
![Page 50: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/50.jpg)
50
Opdracht (5 minuten) Breng in BCNF:
cijfers
SNR SNAAM VAK CIJFER DOCENT D_TELNR
1 Jansen databases 7 Gerritsen 41112 Smit cryptografie 8 de Vlas 41123 Pietersen Java 9 Meima 41131 Jansen Java 6 Meima 41132 Smit databases 7 Gerritsen 4111
3 Pietersen cryptografie 8 de Vlas 4112
3 Pietersen C 9 Meima 4113
![Page 51: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/51.jpg)
51
Opdracht Afhankelijkheden:
cijfers
SNR SNAAM VAK CIJFER DOCENT D_TELNR
1 Jansen databases 7 Gerritsen 41112 Smit cryptografie 8 de Vlas 41123 Pietersen Java 9 Meima 41131 Jansen Java 6 Meima 41132 Smit databases 7 Gerritsen 4111
3 Pietersen cryptografie 8 de Vlas 4112
3 Pietersen C 9 Meima 4113
![Page 52: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/52.jpg)
52
Opdrachtoplossing (BCNF) aannames:
docentnaam is uniek, vaknaam is uniek 1 vak wordt door 1 docent gegeven
cijfers studenten vakken
SNR VAK CIJFER SNR SNAAM VAK DOCENT
1 databases 7 1 Jansen databases Gerritsen2 cryptografie 8 2 Smit cryptografiede Vlas3 Java 9 3 Pietersen Java Meima1 Java 6 C Meima2 databases 7 docenten
3 cryptografie 8 DOCENT D_TELNR
3 C 9 Gerritsen 4111de Vlas 4112Meima 4113
![Page 53: 1 Docent: Martijn Hengelmolen Email: Hengelmolen@initworks.com Aanwezig: maandag, dinsdag](https://reader035.vdocuments.net/reader035/viewer/2022062300/5551a0f04979591f3c8bb9a9/html5/thumbnails/53.jpg)
53
Zelfstudie 2 hoofdstuk 1 t/m 9 en 17 uit
[van der Lans] inclusief opgaven (niet allemaal)
doe de opgaven uitgedeeld op het college (zie ook create_art_lev_etc.sql om de tabellen aan te maken)