Applicatie ontwikkelaar 4e jaar P1

Op deze pagina vinden jullie opdrachten en samenvattingen bij de lessen database theorie in periode 1 van het 4e jaar van de opleiding Applicatieontwikkelaar.
Er zijn 6 lessen. Tijdens de 7e les krijgen jullie een toets over de stof.

Huiswerk: Regelmatig staan op deze pagina's vragen en opdrachten die je geacht wordt bij te houden in een document. Ik moedig je aan om het huiswerk gezamenlijk te maken en te delen met je klasgenoten en je docent.

Eind opdracht.

Deel 1

Werk deze opdracht individueel uit. minimaal in een document evt. aangevuld met een online proof of concept. Mail het document voor woensdag 27 oktober aan t.boose@rocleiden.nl

Een voetbal organisatie organiseert een competitie tussen F teams. Daarvoor is een spreadsheet in gebruik waarin alles verwerkt wordt.
LET OP!!! het spreadsheet bestaat uit 2 tabbladen.

Jij krijgt bij deze de opdracht om het spreadsheet om te zetten in een database die minimaal tot op Boyce-Cott niveau genormaliseerd is. 
De volgende zaken moeten in je model zijn verwerkt:

- Teams spelen alleen tegen teams uit dezelfde poule.
- De velden gewonnen, aantal gewonnen, aantal verloren en aantal gelijk moet berekend kunnen worden. Deze mogen niet opgeslagen worden.
- De adressen van de thuisclubs staan bij de wedstrijden vermeld en bij alle elftallen van die club. Dit is redundant. Los dat op.
- Er zijn kennelijk 2 scheidsrechters met dezelfde naam bij verschillende clubs. Los dit zinnig op.

Laat van je ontworpen database zien:
- Een CHEN ERD (simpel model)
- Een uitgewerkt UML Database diagram
- Uitgewerkte implementatie in SQL.
- Voorbeeld tabellen op basis van het voorbeeld spreadsheet. 

Deel 2

Jou ontwerp is ondertussen geïmplementeerd door een softwareontwikkelaar en de klant is zo blij dat ze weer bij jou terugkomen met extra wensen.
- Het doelpunten saldo het aantal gespeelde wedstrijden en de plaats in de competitie moet zichtbaar worden bij de elftallen. 
- De nummers van de kleedkamers moeten toegevoegd worden aan het systeem.
- De wedstrijden worden voortaan 2 weken op voorhand ingevoerd en en 1 dag na de wedstrijd word de uitslag verwerkt.
- De spelers moeten met hun e-mail adressen worden toegevoegd zodat ze op de hoogte kunnen worden gehouden van aanpassingen in het wedstrijdschema.

Schrijf een advies van een half a4-tje waarin je aangeeft welke wijzigingen nodig zijn op je database en hoe je invulling zou geven aan de andere wensen.

Succes met deze opdracht.


Les 1: Intro, 

Gestructureerde gegevensopslag.

Waarom slaan we gegevens gestructureerd op?
- Voorkomen van redundantie
- Voorkomen van anomalieën (onmogelijke of elkaar tegensprekende gegevens)
- Optimaliseren van performance door minimaliseren van opslag.

Gegevens vs Informatie.

"
Informatie wordt vaak verward met het begrip gegeven.
Hoewel deze begrippen veel met elkaar te maken hebben, zijn ze niet hetzelfde. Gegevens zijn rauwe feiten of symbolen. Gegevens worden pas informatie als de gegevens een betekenis hebben voor de ontvanger. Machines (zoals computers) kunnen informatie niet "begrijpen" zoals een mens dat kan; zij kunnen gegevens slechts verwerken.

 Gegevens Informatie
Feiten
Symbolen
Inlichtingen
Opslaan
Verzamelen
Meten

Ontvanger (mens)
Begrijpen / Begrip
Betekenis
Waarheid
Beeld / Waarneming


"

Atomaire datatypes?

Wat is een atomair datatype
- Lees De definitie van atomaire datatypes volgens Guy De Tré

Belangrijkste conclusie: Gegevens zijn atomair als ze niet samengesteld zijn en ook niet meerwaardig.

Samengesteld:

Gegevens zijn samengesteld zolang we een deel kunnen afsplitsen dat op zichzelf een betekenis heeft of een deel dat van een eenvoudiger datatype is. Numeriek is eenvoudiger dan tekst, binair is eenvoudiger dan numeriek.

Het volgende adres:

    Henk Groot
    Appelboom 38 a
    1234 AB  ZWAMMELDAM

Is een gegeven dat samengesteld is en kan worden gesplitst in:

    Henk, Groot, Appelboom, 38, a, 1234, AB, ZWAMMELDAM

Het heeft geen zin om ZWAMMELDAM te splitsen in 2 delen omdat delen geen eigen betekenis zouden hebben.

Meerwaardig:

Een gegeven is meerwaardig wanneer het meerdere waarden tegelijk bevat. Denk aan:

    Telefoonnummer: 071-2736354 bgg 06-33736473
    of aan: De lesdata zijn: 12 April, 8 mei en 20 juni.

Meerwaardige gegevens worden vaak in meervoudsvorm genoemd.


Huiswerk vragen:

Wat is redundantie?
Zoek een anomalie en beschrijf hem met (bronvermeldingen)?
Wat is een atoom?
Wat gebeurd er als je een atoom splitst?
Wat is een samengesteld gegeven?
Wat is een meerwaardig gegeven?

Huiswerk opdracht:

Maak een tabel met de deelnemers uit je klas met: Naam, email, SLB en 3 extra velden naar keuze. Waarbij in alle cellen atomaire gegevens staan.

Les1 SQL:

De beloofde postcode tabel

Besproken SQL clausules en Kywords:

Select, Insert into, Where .. in, Union, group by, order by, having, limit, delete, update, Innen Join.

Les 2: Numerieke datatypen

Bekijk op deze pagina van Jasper Vries een overzicht van Numerieke data types. Deze datatypes gaan dus over het opslaan van getallen. Ze zijn te verdelen in datatypes voor gehele getallen en voor rationale getallen. Rationale getallen worden ook wel eens breuken genoemd. In de basis wordt alle data omgevormd tot natuurlijke getallen. Natuurlijke getallen worden omgevormd naar binair om vervolgens te worden opgeslagen.

Binair natuurlijke getallen van 8 bits

  Meest significant
       Minst significant
 Positie7
6
5
4
3
2
1
0
 Decimaal (2 ^ pos)
128
64
32
16
8
4
2
1
         
 Voorbeeld: 0101 1010 =
0
1
0
1
1
0
1
0
  90 =

64
 +16
+8
 +2
 

- Shift right (alle bits een positie naar rechts) betekend \ (div) 2 "Delen door 2 en rest weggooien"
- Shift left (alle bits een positie naar links) betekend * 2 "getallen > 127 hebben geen ruimte voor het 9e bit 256"

Oefening: Tellen op de vingers van je hand.

Tel op je rechter hand van 0 t/m 31. je pink is het minst significant (waarde 1) en je duim het meest (waarde 16).

Oefening: Decimaal naar binair:


Oefen op deze pagina met het omzetten van decimale getallen naar binair:


2 binaire getallen optellen.

Binaire getallen optellen gaat op dezelfde manier als decimale getallen. Je schrijft de getallen uit, onder elkaar. vanaf het minst significante bit ga je de uitkomst berekenen:



Binair gehele getallen van 8 bits (Dus ook negatief)

De enige bewerking die je op 1 enkel bit kan uitvoeren is "not". Deze logische not operator wordt wiskundig genoteerd door middel van verticale streep boven een bewering.

(van wikipedia)

Two's complement

Er zijn door de jaren heen verschillende methodes voorgesteld om negatieve getallen op te slaan. Daaruit is globaal gezien 1 voorkeursmethode naar voren gekomen. Deze methode, two's complement, wordt veel gebruikt omdat:
- Het rekenen met deze negatieve getallen voor de computer makkelijk is.
- Je optimaal gebruik maakt van de opslagruimte (je heb maar 1 variant van het getal 0).

Je kunt de bewerking "not" ook op alle individuele bits van een hele byte loslaten. Daarbij worden alle bits van waarde verwisseld. Deze "bitwise not" heet ook wel inverteren. Als je dat doet en je telt er vervolgens 1 bij op heb je een getal volgens de methode two's complement van teken verwisseld. Hierbij geldt het meest significante bit als "min teken". Kortom:

vermenigvuldigen met -1 is inverteren en 1 erbij optellen.

Wil je meer oefenen met het omrekenen van binair naar decimaal en omgekeerd zoals het op de toets gevraagd zal worden? Probeer dit Excel spreadsheet eens. Hier is een xslm versie. Vergeet niet om de macro's aan te zetten voor je eigen gemak.

 Positie7
6
5
4
3
2
1
0
 Positieve waarde:
 2 ^ (Positie)
"Min teken" eng. Sign
64
32
16
8
4
2
1
 Voorbeelden:        
 127 =
0
1
1
1
1
1
1
1
 3 =
0
0
0
0
0
0
1
1
 2 =
0
0
0
0
0
0
1
0
 1 =
0
0
0
0
0
0
0
1
 0 =
0
0
0
0
0
0
0
0
 -1 =
1
1
1
1
1
1
1
1
 -2 =
1
1
1
1
1
1
1
0
 -3 =
1
1
1
1
1
1
0
1
 -4 =
1
1
1
1
1
1
0
0
 -127 =
1
0
0
0
0
0
0
1
 -128 =
1
0
0
0
0
0
0
0
         
 Voorbeeld 10 --> -10
 

 
     
 10 =
0
0
0
0
10
1
0
 !10 =
1
1
1
1
0
1
0
1
 !10 + 1 = -10
1
1
1
1
0
1
1
0
         
Voorbeeld -10 --> 10
        
 -10 =
11
1
1
0
1
1
0
 !-10 =
0
0
0
0
1
0
0
1
 !-10 + 1 = 10 =
0
0
0
0
1
0
1
0
         
90 - 70 = 90 + (-70) = 20
        
 90 =0
1
0
1
1
0
1
0
 -70 =
1
0
1
1
1
0
1
0
 20 =
0
0
0
1
0
1
0
0
         
         

Rationale getallen

Wat moet je weten:

- Rationale getallen zijn alle getallen die je kunt maken d.m.v. breuken. Een half is b.v. 1 / 2. vijf is b.v. 5 / 1
- Alle rationale getallen zijn reële getallen (alle posities op een getallenlijn) maar niet andersom.
- Niet alle posities op een getallenlijn (reële getallen) zijn rationaal.
  Er zijn punten op een lijn die je niet met breuken aan kunt wijzen. Denk bv. aan de vierkantswortel uit 2 en pi.
- Voor sommige rationale gegevens, voornamelijk geld, worden gehele getallen gebruikt met een vast aantal cijfers achter de komma (SQL Decimal).
- Decimalen kunnen wel gelijk zijn aan elkaar.
- Een rationaal getal wordt meestal opgeslagen d.m.v. een getal met "zwevende komma" (eng. floating point, kortweg float).
- Floating point getallen kennen een single (32 bit) en een double (64 bit) variant.
- Voor alle numerieke datatypes geldt dat je nooit genoeg ruimte kunt reserveren om voor alle mogelijke waarden een combinatie te hebben.
- Floating point getallen zijn dus altijd een benadering van de werkelijke waarde.
- Je kunt er niet vanuit gaan dat 2 floating point getallen gelijk zijn aan elkaar. ze kunnen hooguit ongeveer gelijk zijn.

Natuurlijk is het heel interessant om te weten hoe floating point getallen precies worden opgeslagen. Dan weet je ook wanneer de precisie groter en kleiner word. Dit hoef je echter niet te weten voor de toets. Lees hier hoe het exact werkt volgens de IEEE 754 methode.

Kies 1 van de twee onderstaande opdrachten om je te verdiepen in floating point getallen. Je kunt kiezen uit de opdracht "quart" of "Single, Double in VBA"

Oefening: floating point type "quart"

Lees met een groepje de pagina door over de IEEE 754 methode en verzin zelf een verdeling voor een 8 bits floating point datatype.

 Sign1
 Exponent 
 Mantisse 

Maak vervolgens een tabel met voorbeeld getallen, hun exacte waarde en een benadering in decimalen.

 Binair Sign
 Exponent
 Mantisse Exact
 Bij benadering
      
      
      

Oefening "Single, Double in VBA"

- Maak een nieuw Excel werkboek.
- Druk op "Alt F11". VBA start.
- Klik met je rechter muisknop op "VBA Project (....)" en kies voor "invoegen", "module".
- Plak de volgende programma code in de module (Het grote vak onder "(Algemeen)".

Sub fractie()
    Dim DblDouble As Double
    Dim SngSingle As Single
    Dim teller as long


    DblDouble = 1
    SngSingle = 1

    For teller = 1 To 10
        DblDouble = (1 * (10 ^ teller)) + (1 * (10 ^ -teller))
        SngSingle = (1 * (10 ^ teller)) + (1 * (10 ^ -teller))
        Debug.Print "d: " & Format(DblDouble, "0.0000000000000000000000000")
        Debug.Print "s: " & Format(SngSingle, "0.0000000000000000000000000")
        Debug.Print
    Next teller

End Sub

- Klik in het venster "direct". Als dit er niet is kies je "beeld", "venster direct".
- Type in:

fractie <enter>

Welke variabele verliest het snelst zijn precisie DblDouble of SngSingle en waar zie je dat aan?

- Verander in het programma "10 ^ teller" in "2 ^ teller"
- Geef nog een keer het commando "fractie <enter>"

Bij welke waarde verliest de single zijn precisie?

Huiswerk vragen:

- Vink bij de volgende getallen aan of ze natuurlijk, geheel en / of rationaal zijn:

 Natuurlijk
Geheel
Rationaal
 4   
 -7
   
 1,5   
 π (pi)   

- Zet deze binaire natuurlijke getallen om naar een decimale waarde.

 BinairDecimaal
 0000 0000
 
 1111 1111
 
 1010 1010
 
 0101 0101
 
 0001 1100
 

- Beschrijf hoe je eenvoudig een binair natuurlijk getal verdubbeld.
  Als je het niet direct weet zet dan maar eens de volgende decimale getallen in binaire vorm onder elkaar: (5 en 10) (7 en 14) (9 en 18)

- Aan welk bit kun je zien of een binair natuurlijk getal even of oneven is?

- Tot en met welk getal kun je op 10 vingers tellen?

- Zet deze decimale getallen om naar hun two's complement (gehele) binaire waarde (ga uit van 8 bits opslagruimte).

 Binair two's complement
 Decimaal
  64
  -64
  -15
  0
  170

- Aan welk bit van een two's complement byte zie je of het om een positief of negatief getal gaat?
 
- Uit welke drie delen bestaat een floating point getal (volgens de IEEE 754 norm)?

- 2 ^ -10 = 1 / ......?

Huiswerk opdracht:


Geeft de decimale waarde van de hand bij deze handgebaren. Voor de kijkers is de pink het minst significant.

A

B

C

D

E


Les 3: Datatypes op basis van karakters

Eerst maar eens even een proeftoets om te kijken of je tot nu toe genoeg geleerd hebt.

Les 4: Tabellen, rijen, kolommen, entiteiten, records en attributen. Chen ERD


Vandaag gaan we leren om een ERD te maken.

Entiteiten

Entiteiten zijn verzamelingen van zaken van een bepaald type. Benoem ze met een zelfstandignaamwoord in enkelvoud. Voorbeelden:
Klant, Huis, Deelnemer, Boer, Project, factuur enz
Een entiteit geef je in een CHEN ERD aan met een rechthoek

Relaties

Relaties tussen entiteiten worden weergegeven door een wiebertje. Ze beschrijven een relatie tussen een element van het ene entiteittype en het andere. Gebruik hiervoor bij voorkeur een werkwoord.

Attributen

Aan entiteiten en soms ook aan relaties hangen attributen. Attributen zijn de eigenschappen van een entiteit die je op wilt slaan. Attributen moeten afhankelijk zijn van de entiteit waaraan ze hangen. Een of meerdere attributen is of vormen samen de primaire sleutel. De primaire sleutel is 1 van de kandidaat sleutels. Alle kandidaat sleutels zijn per definitie uniek voor alle entiteiten van het betreffende entiteittype.

Kardinaliteit

De kardinaliteit beschrijft de verhouding tussen de entiteiten aan weerzijde van de relatie. Bij de relatie Deelnemer maakt toets, is de maximale kardinaliteit aan beide kanten meerdere. Bij de relatie deelnemer zit in klas; 1 Deelnemer zit maximaal in 1 klas. In 1 klas zitten maximaal meerdere d eelnemers. Waar niet vermeld gaan we ervan uit dat de minimale kardinaliteit 0 is.


Hoewel het vertalen van een ERD naar een relationele database een moeilijk werkje kan zijn, geef ik wel een paar vuistregels voor de vertaling.


 TaalERD
 Database
 Zaak, ding, object  Entiteit
 Record / (Tuppel)
 Soort, Type
  Entiteittype Tabel / (Relatie)
 Relatie
  Relatie
 Constraint


Les 5: Relaties, primary -, foreign - en candidate key.

De les van deze week gaat over relaties tussen tabellen.

kandidaatsleutels en de primaire sleutel


Elke veld dat, of combinatie van velden die, voor een record in een tabel per definitie een unieke waarde heeft is een kandidaatsleutel.
Van alle kandidaatsleutels kiezen we er één, meestal de kleinste, als primaire sleutel

Alle kandidaatsleutels kunnen afgedwongen worden door een unieke waardes te vereisen (dit heet soms een unique index) en null waardes niet toe te staan.
Een bekende en een onbekende waarde zouden immer gelijk aan elkaar kunnen zijn.

Een relatie heeft 2 kanten


Een relatie tussen twee tabellen maak je door een veld aan te maken in een verwijzende tabel (meestal de N kant van een relatie) dat verwijst naar de primaire sleutel. Dit veld heet foreign key (verwijzende sleutel) en heeft exact dezelfde kenmerken als de primaire sleutel behalve dat hij niet uniek hoeft te zijn en soms zelf null mag zijn.

Is een verwijzende sleutel wel uniek dan betreft dit een 1 op 1 relatie.

Is een verwijzende sleutel niet uniek dan betreft dit een 1 op N relatie.

Referentiele integriteit

De kracht van een relationele database zit hem erin dat je het afdwingen van de realties aan de database over kunt laten.


- bij invoer van nieuwe gegevens controleert de database op consistentie.
- Bij het wijzigen en verwijderen van gegevens onderneemt hij de gewenste actie

Het is gebruikelijk om in een database model alleen te verwijzen naar de primaire sleutel zodat 2 verwijzende sleutels aan elkaar gerelateerd kunnen worden zonder tussenkomst van de primaire tael.

Les 6: Toets 


Les X: (E)ER Diagrammen

Kun je er geen genoeg van krijgen?

Probeer de volgende presentatie te volgen:
URL van de gadget-specificatie kan niet worden gevonden