De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

SQL en Datanormalisatie

Verwante presentaties


Presentatie over: "SQL en Datanormalisatie"— Transcript van de presentatie:

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


Download ppt "SQL en Datanormalisatie"

Verwante presentaties


Ads door Google