Posts tonen met het label informatica. Alle posts tonen
Posts tonen met het label informatica. Alle posts tonen

zaterdag 12 mei 2012

Praktische informatica: De basisvaardigheden voor database ontwerpers - deel 4


“Koppelen betekent aansluiten als één geheel.”
                                                            - Sam Rain
Queries en tabellen zijn natuurlijk prachtig, maar wat nu als je een paar tabellen hebt voor een boel formulieren of de behoefte hebt aan een enkel rapport? De oplossing is het leggen van een relatie tussen de tabellen, waardoor je met een query een super informatiebalk kunt genereren.
Relaties zijn hèèl simpel, er zijn 2 gangbare relaties:
-       de 1-op-1 relatie
-       de 1-op-veel relatie.
De 1-op-1 relatie vertelt dat een rij tot maar één andere rij mag toebehoren. De 1-op-veel relatie vertelt dat een rij kan behoren tot meerdere andere rijen. Echt waar, dat is het!
De relaties zijn mogelijk door de ‘id’ kolom (zie deel 2); omdat alle rijen (records) een uniek nummer hebben zijn ze rekenkundig gemakkelijk te koppelen door een rij te ontwerpen met een ‘relatie kolom’. Dit klinkt moeilijker dan het is.
Stel, we nemen de tabel Tijgers (zie deel 2) en maken een extra tabel ‘Verzorgers’:
Id (reeks) – naam (tekst) – aanwezig (ja/nee)
Iedere tijger heeft 1 verzorger, dus koppelen we de tabel Tijgers aan Verzorgers door een kolom ‘verzorger_id’ toe te voegen aan het ontwerp van ‘Tijgers’:
Id (reeks) – naam (tekst) – leeftijd (datum) – gewicht (numeriek) – agressiviteit (numeriek) – verzorger_id (numeriek).
Als we 10 verzorgers zouden toevoegen, hadden we zonder relaties de Tabel Tijgers moeten uitbreiden en voor iedere tijger de verzorger handmatig moeten invullen. Met tabellen zoals puma’s, leeuwen en panters zou het een ramp worden en bij een geval van ziekte of ontslag zouden de dieren verhongeren, omdat de verzorgers de database moeten aanpassen. In plaats daarvan kan met de ‘id’ van de verzorger meteen alle informatie van de verzorger worden opgehaald aan de hand van de tijger! Ook kan dezelfde truuk gebruikt worden voor de andere dieren – en weet je hoeveel verzorgers er vandaag werken!
Relaties teken je als ontwerper in diagrammen:
Verzorgers
Id
naam
aanwezig
Tijgers
 Id
naam
leeftijd
gewicht
agressiviteit
verzorger_id
Leeuwen
Id
naam
leeftijd
gewicht
agressiviteit
verzorger_id
                                   




Koppelen heet een ‘join’ in queries; het combineert een rij met een andere rij; wat ook kan is de simpele ‘waar’ (where):
Selecteer Tijgers.naam, Verzorgers.naam
waar Tijgers.Verzorger_id gelijk is aan Verzorgers.id
sorteer aflopend
uit Tabel Tijgers, Verzorgers.
Ook kun je als ontwerper de relatie definiëren voor de ontwikkelaar als volgt:
·      Tijgers hebben 1 verzorger
·      Verzorgers hebben meerdere tijgers.
Als ontwerper is het belangrijk om duidelijk te zijn over wat je wilt bereiken!
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave van alle artikelen!

©SamRain

Database ontwerpen

Praktische informatica: De basisvaardigheden voor database ontwerpers - Deel 3


“De kunst van zoeken is weten wat je wilt vinden.”
                                                                        - Sam Rain
In deel 1 besprak ik de vier zuilen van een database vluchtig; in dit deel ga ik dieper in op de Queries die de tabellen praktisch maken.
Zoeken in tabellen is veel gemakkelijker dan men doet voorkomen. Feitelijk is de zoekopdracht een selectie van rijen, waarbij de criteria bepaalt hoeveel rijen er geselecteerd worden om door een filter te gaan die kolommen teruggeven. Ontwerpers zullen minder vaak zich bezig houden met supercomplexe instructies en meer met de praktische kant.
Een zoekopdracht is eigenlijk een samengestelde formule, die losgelaten wordt op de tabellen in de database om een collectie van gegevens ‘terug te geven’. Een query bedenken is makkelijk; met het volgende stappenplan:
1)    Welke informatie heb ik nodig?
2)    In welke tabel(len) staat deze informatie?
3)    Met welke criteria wil ik de informatie selecteren?
4)    Welke informatie wil ik laten zien?
Alleen stap 3 is ‘wennen’ voor non-techneuten; toch blijft het een kwestie van kijken en vergelijken. Bijna alle database applicaties hebben een methode om queries te ontwerpen – sommigen zelfs een simpele interface met knopjes waardoor je queries in seconden maakt. De meesten ondersteunen ook SQL, een programmeertaal speciaal voor databases. Als ontwerper is belangrijker om vast te leggen wat de query zou moeten doen dan het typografisch vast te leggen in een technische taal – dit eerste is helemaal geen moeilijk karwei!
Criteria in een query zijn niets meer dan vergelijkingen, die door sleutelwoorden worden aangegeven:
Waar (where)            :   vergelijk de ‘waarde’ van een veld met een andere veld of een
                                      opgegeven ‘waarde’;
Of (or)                       :  vergelijk twee ‘waarden’ óf kies een andere vergelijking met
                                       twee ‘waarden’;
En (and)                   :    vergelijk twee vergelijkingen;
Dit zijn de ‘logische’ operatoren; andere operatoren vergelijken de rekenkundige gelijkwaardigheid, terwijl de logische operatoren de ‘Boolean’ gebruiken (waar/onwaar, ja/nee, true/false).
=                        :            Gelijk aan de waarde aan de linkerzijde
>,<                     :            Groter of kleiner dan de waarde aan de linkerzijde.
Als we de ‘Tijgers’ tabel nemen uit deel 2, en we willen een query ontwerpen voor ons nieuwe rapport genaamd ‘Agressieve Tijgers’ dan weten we dat we top-10 tijgers gaan selecteren, met de criteria dat we sorteren op de kolom ‘agressiviteit’ en dat we alleen de waarde van 4 of hoger zien als agressief. We gaan de query dan zo ‘ontwerpen’ en geven het de naam TopTienAgressieveTijgers.
Selecteer 10 rijen            -> Selecteer / bepaal hoeveelheid rijen
waar agressiviteit > 4      ->
bepaal criteria
sorteer aflopend           
  -> bepaal ordening
uit tabel Tijgers              
-> definieer tabel
Met queries kun je ook invoergegevens, hele gedetailleerde zoekopdrachten en zelfs beheerfuncties knutselen – uiteindelijk komt het neer op selecteren, aanpassen, verwijderen en aanmaken van rijen. Hoe vaker je een oplossing bedenkt, hoe meer je wilt gaan leren over queries in de diepte; laat voor serieuze toepassingen een techneut met je meedenken!
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave van alle artikelen!

vrijdag 11 mei 2012

Praktische informatica: De basisvaardigheden voor database ontwerpers - Deel 2


“Zoek naar niets, vind ook niets – letterlijk.”
                                                            - Sam Rain
In deel 1 besprak ik de vier zuilen van een database vluchtig; in dit deel ga ik dieper in op de tabellen.
Een tabel, in het geval van een database, dient als functie door een grote collectie van individuele informatiegroepen te beheren. Een ‘informatiegroep’ bepaal je door de typische eigenschappen te identificeren naar het ‘soort’ eigenschap. De ‘informatiegroep’ is een ‘rij’ (row) en het ‘soort’ eigenschap een kolom (column).
Stel we willen ‘tijgers’ beheren (nou ja – de informatie over tijgers). Iedere afzonderlijke tijger hoort thuis in een ‘rij’ en we kunnen de specifieke informatie ontwerpen in de kolommen. Sam’s Zoo heeft 100 tijgers, waarvan elk een eigen naam, een leeftijd, een gewicht en een ‘gedragscijfer’ (hoe hoger hoe agressiever). De eigenschappen worden ieder een kolom in de tabel ‘Tijgers’ (het meervoud van de rij dat het object weergeeft – een tijger). Omdat tabellen gebruikt worden om te zoeken (en zoals later duidelijk wordt voor andere handige truukjes) kun je iedere rij voorzien van een ‘speciale’ kolom, genaamd ‘id’. Dit staat ook voor identificatie, zodat iedere tijger óók gezocht kan worden op ‘nummer’. Het ontwerp van de rij bestaat dan uit 5 kolommen:
Id – naam – leeftijd – gewicht – agressiviteit
We zouden aan de hand van deze groep informatie o.a. het volgende kunnen vinden: a) alle tijgers tussen een bepaalde leeftijd, b) tijgers die zeer agressief zijn, c) een alfabetische volgorde van alle namen, d) het gemiddeld gewicht en e) het totaal aan tijgers. Juist voor de berekeningen zal iedere kolom specifiek ontworpen moeten worden naar een ‘datatype’ – informatie waardoor een computer begrijpt waar de informatie voor bedoeld is. Zonder al te moeilijk te gaan doen, zijn dit de algemene types in de databases.
·      numeriek (cijfers en getallen)
·      tekst (letters en woorden)
·      datum (tijdsnotering)
·      ja/nee (de Boolean)
·      reeks (de automatische nummering)
Als we deze toepassen op ons ontwerp:
Id (reeks) – naam (tekst) – leeftijd (datum) – gewicht (numeriek) – agressiviteit (numeriek)
Hebben we een functioneel tabel ontwerpen, waarop we naar hartenlust queries (zoekopdrachten) op los kunnen laten. We kunnen zoveel kolommen (eigenschappen) toevoegen als we willen; echter wil je geen ‘onnodige’ informatie toevoegen dan noodzakelijk. Een ‘rij’ toevoegen kost schijfruimte en over een bepaalde tijd zal de collectie dus groeien.
Na een tijdje belt de verzorger van Sam’s Zoo; alle tijgers zijn wel opgeslagen, maar ze overlijden ook zo nu en dan. Dòh! Weer wat geleerd, want door de rij te voorzien van een kolom ‘levend’ van het datatype ‘Boolean’ kunnen de levende tijgers snel gevonden worden en het aantal doden ook. Of was het slimmer om een geboortedatum en sterftedatum te gebruiken? En dat zijn dus de dilemma’s voor ontwerpers – alle tijgers moeten gecontroleerd worden en de nieuwe informatie worden toegevoegd. Oefening baart kunst!
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave van alle artikelen!

donderdag 10 mei 2012

Praktische informatica: De basisvaardigheden voor database ontwerpers - Deel 1


“Alles is met elkaar verbonden, vooral in een database.”
                                                                                    - Sam Rain
De ‘database’ hebben we als IT-term té vaak gehoord alsof het hersenchirurgie is; graag spreken consultants over het nut zonder enkele vaardigheid in de kunde van ontwerpen. Een database ontwerpen is anders dan erin ontwikkelen of deze te beheren – met wat achtergrond kennis kun je informatie organiseren of deze praktisch gebruiken in het dagelijks leven.
Informatie is abstract – het is alles en tegelijk ook specifiek; je kunt het observeren, beheren of gebruiken naar eigen inzicht. Een database is een structuur waarin informatie in brokken verdeelt zijn om allerlei vormen te creëren; een doos Lego™ maakt het mogelijk om huizen, kastelen en autootjes te maken. Hoewel iedere doos verschilt in de inhoud, blijven de bouwstenen hetzelfde, omdat ze immers ongeacht ‘het plan’ moeten passen. De applicatie is niets meer dan een ‘robotje’ dat snel de juiste steentjes uit de doos haalt en ze in elkaar zet; een ontwerper bedenkt het ‘politiebureau’ of het huis van de ‘burgemeester’, zodat het robotje een programmaatje krijgt van een ontwikkelaar – die kijkt naar de ‘gebruiksaanwijzing’ van de ontwerper.
Alle werkzaamheden in een database kun je zien als taken; een taak kan het a) invoeren zijn van gegevens, b) het zoeken van gegevens, c) het actueel houden van gegevens. Voor iedere soort taak moet er een ‘formulier’ bedacht worden; hoé wil je de gegevens zien / invoeren / aanpassen en welke blokjes informatie bevat ieder formulier? Vaak gaandeweg bedenk je verbeteringen of ‘vergat’ je iets belangrijks – ontwerpen is dan een snel leerproces omdat computerprogramma’s geen vergeving kennen.
Naast formulieren wil je ook informatie weergeven als het zijnde een object – een rapport presenteert de informatie zonder mogelijke werkzaamheden. Denk eens aan een kassabon, een offerte of de afschriften van een bank; maar ook een webpagina of een spel kan dit. Weten wat je wilt zien is een belangrijke stap in het ontwerpen, omdat je altijd werkt richting een verwacht resultaat.
Omdat magie niet erg berekenbaar is, is er een techniek die het mogelijk maakt om formulieren qua informatie om te zetten in een rapport: tabellen. Een tabel bestaat uit kolommen en rijen, waardoor er ‘blokjes’ ontstaan – de velden. Ieder veld houdt informatie vast, de kolom waarin het veld zich bevindt bepaald de soort informatie en de rij is een groep waar de informatie tot behoord. Wanneer er informatie wordt gezocht, dan zoekt het ‘programma’ naar de rij (de groep) in het geheel. Met zoekcriteria en ‘filters’ worden kolommen (soorten) uitgesloten en het aantal rijen met gelijke informatie eventueel gesorteerd. Het zieken in een tabel met deze structuur heet een Query.
Toeters en bellen maken het alleen breder en gemakkelijker voor geavanceerde ontwerpen, maar iedere database werkt volgens deze principes.
Bedenk daarom eerst welke resultaten je wilt zien, daarna welke gegevens je zult moeten ingeven; voordat je gaat nadenken over moeilijke constructies, groepeer je eerst de informatie. Ieder formulier kent zijn eigen groep en ieder rapport vloeit voort uit een query; begin simpel en denk in hokjes!
Ontwerpen begint bij begrijpen en begrijpen kun je door te leren.
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave van alle artikelen!