Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
SQL en Datanormalisatie
Les 2 April 13, 2019
2
Agenda Herhaling Afwerken oefeningen Data normalisatie
Oefeningen op data normalisatie April 13, 2019
3
SELECT statement (1) April 13, 2019
4
SELECT statement (2) SELECT: lijst van kolommen (minstens 1) of *
DISTINCT: enkel unieke rijen worden weergegeven ALIAS: geef de kolom een andere naam FROM TABEL: geef de tabel(len) die de kolom(men) bevatten WHERE: beperkt het aantal rijen tot een aantal dat aan de voorwaarde voldoet CONDITIE: voorwaarde ORDER BY: bepaald de sorteervolgorde ASC: van klein naar groot DESC: van groot naar klein April 13, 2019
5
Opmerking Spaties en linefeeds worden genegeerd Commentaar
-- Dit is commentaar /* Dit is commentaar En hier staat ook nog commentaar */ April 13, 2019
6
Vergelijkingsoperatoren
Logische vergelijkingsoperatoren: =; >; <; >=; <= SQL operatoren Between…and … In LIKE IS NULL Logische operatoren AND OR NOT April 13, 2019
7
Oefeningen April 13, 2019
8
Data Normalisatie April 13, 2019
9
Voorbeeld informatiesysteem
Dessertenboek Interactief receptenboek Recepten veranderen, toevoegen, verwijderen Aantal gegevens zelf in te geven Aantal berekende waarden Energie waarde Opgeslagen ingrediëntenhoeveelheden per persoon en de opgeslagen energiewaarden per eenheid April 13, 2019
10
Voorbeeld informatiesysteem
April 13, 2019
11
Hoe deze gegevens opslaan in een tabel?
April 13, 2019
12
Per gerecht één tabel April 13, 2019
13
Per gerecht één tabel Per recept 5 kenmerken: Naam van het gerecht
Energie per persoon (in kcal) Bereidingstijd Bereidingswijze Ingrediënteninformatie subtabel Enkelvoudige gegevens Samengestelde gegevens April 13, 2019
14
Eén tabel met subtabellen
April 13, 2019
15
Geen geschikte tabelstructuur
Bepaalde informatie wordt meer dan één keer opgeslaan (redundantie) Een tabel met subtabellen is zeer complex om te beheren (herhalende groepen) Gegevens over producten worden alléén in de context van gerechten bewaard, terwijl producten een zelfstandig belang hebben April 13, 2019
16
Redundantie Overtollige gegevens
Bepaalde gegevens zijn afleidbaar uit andere gegevens in de database April 13, 2019
17
Nadelen van redundantie
Opslagruimte Inconsistentie van gegevens April 13, 2019
18
Herhalende groepen Een samengestelde kolom, die per rij een subtabel met ingrediëntengegevens bevat wordt een herhalende groep genoemd. Nadeel: Beheer van de database wordt veel ingewikkelder Gebrek aan symmetrie April 13, 2019
19
Herhalende groepen (2) Beheer van database
Invoegen van records op twee niveaus: Verwijderen wordt ook ingewikkelder SQL zou veel ingewikkelder worden April 13, 2019
20
Herhalende groepen (3) Gebrek aan symmetrie
Producten die in gerechten als ingrediënt worden opgeslaan kunnen alleen in die context gebruikt worden Een neutrale contextvrije benadering van de verschillende soorten dingen is één van de belangrijkste eigenschappen van een RDBMS April 13, 2019
21
Herhalende groepen (4) Redenering tot nu toe:
Een gerecht kan meerdere ingrediënten bevatten Omkeren van herhalende groepen Redenering wordt: Een ingrediënt kan in meerdere gerechten voorkomen April 13, 2019
22
Herhalende groepen (5) April 13, 2019
23
Herhalende groepen (6) Omkeren van herhalende groepen
Product zonder gerecht kan opgenomen worden April 13, 2019
24
Verbeterde tabelstructuren
Elimineren van herhalende groepen en redundantie April 13, 2019
25
Elimeneren van de herhalende groep
Herhalende groep afknippen April 13, 2019
26
Elimeneren van de herhalende groep
Resultaattabellen bevatten in elke cel één enkelvoudige waarde April 13, 2019
27
Elimineren van redundantie
April 13, 2019
28
Elimineren van redundantie (2)
April 13, 2019
29
Alternatief Eerst verwijderen van redundantie
Vervolgens verwijderen van herhalende groepen Geeft hetzelfde resultaat April 13, 2019
30
Elke entiteit zijn eigen tabel
Entiteit = dingen die vanuit het oogpunt van een informatie behoefte overeenkomstige kenmerken hebben Product Ingrediënt Gerecht Eenheid April 13, 2019
31
Elke entiteit zijn eigen tabel
April 13, 2019
32
Normaliseren en standaardiseren
Het verwijderen van herhalende groepen of redundantie, door tabellen van een grotere tabel af te splitsen. Standaardiseren: Bv eenheid liter April 13, 2019
33
Oefeningen April 13, 2019
34
Oefeningen Zie blad April 13, 2019
35
Oplossing oef 4 (a ii) April 13, 2019
36
Oplossing oef 4 (a iii) April 13, 2019
37
Oplossing oef 4 (b i) April 13, 2019
38
Oplossing oef 4 (b iii) April 13, 2019
39
Relationele databases - regels
Regels die voor goede structuren gelden: Beperkingsregels Regels die dingen verbieden of verplichten Gedragsregels Regels die zorgen dat acties ondernomen worden April 13, 2019
40
Beperkingsregels Optionele en verplichte kolommen Verplicht Optioneel
De kolom moet een waarde hebben Bv gerecht.gerechtnaam Optioneel De kolom mag lege cellen bevatten Bv product.eenheidnaam Bv peper -> geen eenheidnaam en energiePE Aanduiding met op April 13, 2019
41
Optionele en verplichte kolommen
April 13, 2019
42
Uniciteit Indien de waarden in een bepaalde kolom uniek moeten zijn.
Smalle uniciteitsregels: uniciteit over 1 kolom Brede uniciteitsregels: uniciteit over >1 kolom April 13, 2019
43
Uniciteit (2) April 13, 2019
44
Uniciteit (3) Enkel de smalste uniciteitsregel wordt aangeduid!
April 13, 2019
45
Illustratieve populatie
Een populatie die zo goed mogelijk de werkelijkheid illustreert April 13, 2019
46
Sleutels De primary key van een tabel is een kolom of kolomcombinatie waarvoor geldt: Verplicht Uniek In het geval van een kolomcombinatie Zo zuinig mogelijk gekozen Zijn waarden zijn aangewezen als logische rij-adressen te gebruiken in verwijzingen April 13, 2019
47
Sleutels (2) Foreign key Primary key aangeduid met een p
Een kolom of kolomcombinatie waarvan de waarden naar rijen in een andere tabel verwijzen, via de primaire sleutel daarvan. Primary key aangeduid met een p Foreign key aangeduid met een verticale pijl naar de primary key April 13, 2019
48
Oefening Duid de primary keys en foreign keys aan van de tabellen van het dessertenboek. April 13, 2019
49
Sleutels (3) April 13, 2019
50
Referentiële integriteit
Elke waarde van een foreign key moet voorkomen als de waarde van de bijhorende primaire sleutel Bv: elke waarde in product.eenheidnaam wordt geacht te verwijzen naar precies één rij in de tabel eenheid, via de primaire sleutel van die tabel Verbieden van loze verwijzingen April 13, 2019
51
Referentiële integriteit (2)
Ouder – kind relatie: De tabel met de primary key heet ouder De tabel met de foreign key heet kind April 13, 2019
52
Referentiële integriteit (3)
Bij één rij van de kindtabel hoort ofwel geen enkele rij ofwel precies één rij van de oudertabel Bij één rij van de oudertabel kunnen nul, één of meerdere rijen van kindtabel horen April 13, 2019
53
Referentiële integriteit (3)
Het RDBMS moet zorg dragen voor het bewaren van de ref. Integriteit Bij een poging een rij in de kindtabel toe te voegen Bij een poging een foreign key waarde in de kindtabel te wijzigen Bij een poging een primaire sleutel in de oudertabel te wijzigen Bij een poging tot verwijderen van een ouderrij April 13, 2019
54
Cardinaliteitsregels
Hoeveel rijen van de oudertabel kunnen bij één rij van de kindtabel horen? En andersom? April 13, 2019
55
Cardinaliteitsregels (2)
Bv: Product – eenheid Bij één product-rij horen 0 of één eenheid-rijen Bij één eenheid-rij horen 0 of meer productrijen Ingrediënt – product Bij één ingrediënt-rij hoort precies 1 product-rij Bij één product-rij horen 0 of meer ingrediënt-rijen Ingrediënt – gerecht Bij één ingredient-rij hoort precies 1 gerecht-rij Bij één gerecht-rij horen één of meer ingrediënt-rijen April 13, 2019
56
Cardinaliteitsregels (3)
Cardinaliteiten aflezen ‘aan de andere kant’ van het lijntje April 13, 2019
57
Oefeningen 1 2 3 4 April 13, 2019
58
Kunstmatige sleutels De twee foreign keys van gerechtnaam en productnaam in Ingrediënt bevatten vrij lange tekstvelden Numerieke codes als primary keys en foreign keys April 13, 2019
59
Kunstmatige sleutels (2)
April 13, 2019
60
Gedragsregels RDBMS onderneemt actie in antwoord op een aantal acties
Gedragsregels of actieregels April 13, 2019
61
Reference actieregels
Bewaren van de referentiële integriteitsregel In 2 gevallen problemen Verwijderen van een ouderrij Wijzigen van de primary key in een ouderrij Deleteregels Updateregels April 13, 2019
62
Deleteregels Restricted delete Cascading delete Nullifying delete
Nullifying komt in de praktijk weinig voor April 13, 2019
63
Updateregels Restricted update Cascading update Nullifying update
April 13, 2019
64
Reference actieregels (2)
April 13, 2019
65
Oefening 5 (zie slide 33) April 13, 2019
66
Meer over uniciteitsregels
Uniciteitsregels zijn het meest prominent Hoe bepalen we de juistheid van een voorgestelde uniciteitsregel? Bv: Avondschool Inschrijving (cursistnr, vaknaam, docentnaam) April 13, 2019
67
Meer over uniciteitsregels (2)
7 mogelijkheden voor een tabel met 3 kolommen April 13, 2019
68
Meer over uniciteitsregels (3)
April 13, 2019
69
Meer over uniciteitsregels (4)
Regels zijn niet onafhankelijk van elkaar Regels hangen af van de business rules van het bedrijf April 13, 2019
70
Combinaties van uniciteitsregels
Uniciteitsregels kunnen gecombineerd worden April 13, 2019
71
Uniciteitsregels 99 % van de gevallen over 1, 2 of 3 kolommen
April 13, 2019
72
Samengestelde sleutels
Een primary key kan samengesteld zijn: Bestaande uit meer dan één kolom April 13, 2019
73
Recursieve verwijzingen
= Verwijzing van een tabel naar zichzelf Bv: Hemellichamen in ons zonnestelsel, die satelliet kunnen zijn van een ander hemellichaam April 13, 2019
74
Recursieve verwijzingen (2)
Structuurdiagram? Cardinaliteitendiagram? April 13, 2019
75
Recursieve verwijzingen (2)
Voorstelling ook mogelijk met een virtuele tabel: April 13, 2019
76
Oefeningen 8 April 13, 2019
77
Oplossing 8 April 13, 2019
78
Oplossing 8 April 13, 2019
79
Oefening 9 April 13, 2019
80
Oefening 10 April 13, 2019
81
Oefening 11 April 13, 2019
82
Oefening 12 April 13, 2019
83
Oefening 13 April 13, 2019
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.