Database-ontwerp. op basis van een SQL-database HA

Maat: px
Weergave met pagina beginnen:

Download "Database-ontwerp. op basis van een SQL-database HA"

Transcriptie

1 Database-ontwerp op basis van een SQL-database HA Boekhouden-informatica, Informaticabeheer Marc De Wandel, Ria Van Eysendeyk Werkgroep Handel 2009 Vlaams Verbond van het Katholiek Secundair Onderwijs Guimardstraat 1, 1040 Brussel

2

3 Vlaams Verbond van het Katholiek Secundair Onderwijs Guimardstraat 1, 1040 Brussel Database-ontwerp op basis van een SQL-database HA Boekhouden-informatica, Informaticabeheer Marc De Wandel, Ria Van Eysendeyk Werkgroep Handel D/2009/7841/067 Alle rechten voorbehouden. Behoudens de uitdrukkelijk bij wet bepaalde uitzonderingen mag niets uit deze uitgave worden verveelvoudigd, opgeslagen in een geautomatiseerd gegevensbestand of openbaar gemaakt, op welke wijze ook, zonder de uitdrukkelijke voorafgaande en schriftelijke toestemming van het VVKSO.

4

5 Inhoud 1 Werken met data Databases Databasesystemen Stappen bij het ontwerpen van een database Datamodel De data dictionary Het Entiteit-Relatie model Entiteiten Relatie Cardinaliteit Optionaliteit Attributen Voorbeelden Uitgewerkt voorbeeld Oefeningen Een relationele databank Tabellen Sleutels Primaire sleutel Kandidaatsleutel Alternatieve sleutel Surrogaatsleutel Refererende sleutel Namen van velden Koppelingen tussen tabellen Het normalisatieproces Normalisatievormen Niet genormaliseerde gegevensgroepen Repeterende groepen: NF Partiële functionele afhankelijkheid: NF Transitieve functionele afhankelijkheid: NF Overzicht Voorbeelden Oefening 1: facturatie Oefening 2: artikelfiche Oefening 3: abonnementen Oefening 4: stages Oefening 5: projecten Oefening 6: cursussen Oefening 7: computerpark Oefeningen Omzetting datamodel (ERD) naar databaseontwerp (tabellen) Entiteiten Zelfstandige entiteiten Relaties zonder attributen Optionaliteit Één-op-één relatie Eén-op-veel relatie Veel-op-veel relatie Relaties met attributen Eén-op-één relatie Eén-op-veel relatie Veel-op-veel relatie Overzicht... 50

6 4.4 Uitgewerkt voorbeeld Oefeningen Een database implementeren Een SQL-databank aanspreken in Visual Web Developer Een SQL-databank aanmaken in VWD Express Relaties tussen tabellen Table designer Diagrammen Check constraints Standaardwaarden Indexen Inleiding Een index aanmaken Tabelaanpassingen Rijen aanpassen Primaire sleutel Oefeningen Speciale technieken Join-eigenschappen Een tabel koppelen met zichzelf Verbinding op meer dan 1 veld Meer dan 2 tabellen gebruiken Oefeningen Niet-genormaliseerde gegevensgroepen normaliseren Gegevens worden in rijen herhaald Gegevens worden in kolommen herhaald Bijlagen Bijlage 1. Een bestaande Access-databank converteren naar een SQL-databank Bijlage 2. Korte samenvatting van Sql-commando s Selectiequery s Actiequeries Bijlage 3. Lijst met belangrijkste types... 81

7 1 Werken met data 1.1 Databases Wat is een database? Het begrip database Soorten database managementsystemen Het begrip datamodel Datadictionary Meestal speelt het voor langere tijd bewaren van gegevens een belangrijke rol in informatiesystemen. Denk bijvoorbeeld aan de loonadministratie in een bedrijf. Welke gegevens moeten hiervoor onder andere bijgehouden worden? Als deze gegevens op een gestructureerde, digitale manier bijgehouden worden, is het mogelijk de verwerking van die gegevens, bijvoorbeeld tot jaarlijkse loonfiches voor alle werknemers, te automatiseren. Dat bespaart hopen werk! Keerzijde van de medaille: een degelijke structuur opbouwen om de gegevens te bewaren, kost soms de spreekwoordelijke bloed, zweet en tranen. Het is gedeeltelijk een wetenschap en gedeeltelijk een kunst. Het wetenschappelijke deel is het onderwerp van de volgende hoofdstukken: je leert hoe je, door het gebruik van bepaalde technieken, tot een werkbare structuur komt. Zo'n gestructureerde digitaal bewaarde verzameling gegevens, opgezet om in een bepaalde informatiebehoefte te voorzien, wordt een database of gegevensbank genoemd. Wat is data? Algemeen wordt een onderscheid gemaakt tussen data en informatie. Data (of gegevens): ruwe feiten of observaties met betrekking tot fysieke fenomenen (bv. een klant) en bedrijfstransacties (bv. een verkoop). Data zijn objectieve meetwaarden van de karakteristieken van entiteiten (mensen, plaatsen en gebeurtenissen). Informatie: data in een betekenisvolle en nuttige context voor specifieke eindgebruikers. Informatie is het resultaat van een value-added process (d.i. data processing). 1.2 Databasesystemen Een databasesysteem is een verzameling van elementen waarmee we een database kunnen exploiteren (Vandenbulcke et al. p. 19). In een database worden gegevens digitaal bijgehouden. Je hebt dus software nodig om de gegevens in te brengen en te beheren. De software die het werken met een database mogelijk maakt is het database managementsysteem (DBMS). Het databasemanagement is een onderdeel van een databasesysteem. Het geheel van database en DBMS is dan het databasesysteem (DBS). Relationele gegevensbanken vormen thans het meest verspreide systeem voor het beheer van persistente (te bewaren) gegevens. Andere, oudere vormen van gegevensbeheer zijn onder meer: hiërarchische databases en netwerkdatabases. Een recente ontwikkeling is de opkomst van objectgeoriënteerde databases, ook wel object bases genoemd. Momenteel werken naar schatting wereldwijd 80 % van de databases relationeel. In 1970 legde Edgard F. CODD de basis voor het relationele gegevensmodel. VVKSO Werkgroep Handel Database-ontwerp - pagina 7

8 Ze zijn gebaseerd op het Relationeel model (hierover later meer). In een RDBMS of Relationele Database Managementsystemen worden gegevens typisch bijgehouden in tabellen (rijen en kolommen). RDBMSen zijn zeer geschikt voor applicaties met eenvoudige data en uitgebreide bevragingsmogelijkheden, de typische administratieve applicaties. Enkel eenvoudige datatypes (numeriek, tekst ) kunnen bijgehouden worden. Een gebruiker kan zelf geen datatypes toevoegen. Een grote troef voor RDBMSen is dat ze allen bevraagd kunnen worden met een standaardtaal: SQL (Structured Query Language). MS-Access, Oracle, MySql en Microsoft SQL Server, zijn voorbeelden van RDBMS-en. In de cursus wordt gebruik gemaakt van Sql-databases. In een relationeel databanksysteem worden gegevens bijgehouden in tabellen (Engels relations) waartussen relaties (Engels relationships) kunnen liggen. Die relaties verbinden de gegevens in de verschillende tabellen. De tabellen bestaan uit rijen (records of tupels) en kolommen (velden). In elke rij staan de gegevens van één item, bijvoorbeeld een product. Elk kenmerk komt overeen met een kolom, bijvoorbeeld de productnaam. De grote vraag bij het opmaken van een database voor zo n relationeel systeem is natuurlijk: welke tabellen heb ik nodig en wat is hun inhoud? 1.3 Stappen bij het ontwerpen van een database Personen die betrokken zijn bij het ontwerp van een database zijn: database ontwerpers, database administrators (verantwoordelijk voor het onderhoud van en de aanpassingen aan databasessystemen) en eindgebruikers. Het motto voor het ontwerpen van een database is zeker: 'Bezint voor je begint'. Een slecht ontworpen database kan een firma letterlijk duur te staan komen. Databaseontwerpers - voor grote databases is dit teamwerk- worden goed betaald. Maar voor wat, hoort wat natuurlijk! De verantwoordelijkheid is groot en de job niet altijd even gemakkelijk. Het ontwerp van een database verloopt in verschillende stappen die hieronder schematisch weergegeven worden. Pagina 8 Database-ontwerp

9 Analyse van de informatiebehoefte Bepalen van het domein. Benoemen van de entiteiten Opstellen en documenteren van het datamodel Keuze van het DBMS Opstellen, invoeren en documenteren van het dataontwerp Invoer data Aan de hand van de analyse van de informatiebehoefte kan een datamodel (zie verder) opgesteld worden. Als dit gebeurd is, kan de structuur bepaald worden waarin de gegevens zullen bewaard worden: het DBMS waarin gewerkt wordt, wordt gekozen. Het datamodel moet vertaald worden naar een dataontwerp (dataschema) dat kan ingevoerd worden in het DBMS. Als het dataontwerp geïmplementeerd is, kunnen uiteindelijk de data ingevoerd worden. 1.4 Datamodel Wat is een model? Een model is een abstracte voorstelling van (een deel van) de reële wereld. Dit wil zeggen dat de maker van een model bepaalde essentiële kenmerken van de realiteit isoleert, en alle andere kenmerken als bijkomstig achterwege laat. Een gegevensmodel of datamodel is een abstracte voorstelling van een informatiesysteem, waarbij alle dynamische aspecten (generatie, transformatie en verwerking van gegevens) achterwege blijven en slechts de statische informatiestructuren, hun beperkingen en hun onderlinge verbanden van belang zijn. Een datamodel gaat over de structuur van gegevens, niet over de inhoudelijke opvulling. Een gegevensmodel kan specifiëren dat een bedrijf de namen en adressen van zijn werknemers opslaat. Het zegt niet dat er een werknemer bestaat met de naam Peeters en evenmin dat de namen en adressen worden verkregen via de personeelsdienst. Het kan wel bepalen dat ieder adres een postnummer moet bevatten. Een procesmodel brengt de dynamische aspecten in beeld. Een gegevensstroomdiagram (Data Flow Diagram, DFD) is hiervan een voorbeeld. Het toont op een visuele manier waar de data gegeneerd en verwerkt worden en waarheen ze getransporteerd worden. Een gegevensmodel wordt gebruikt voor het structureren van een database terwijl een gegevensstroomschema eerder gebruikt wordt voor het programmeren. VVKSO Werkgroep Handel Database-ontwerp - pagina 9

10 Waarom modelleren? Een gegevensmodel moet een duidelijke, éénduidige voorstelling geven van de gegevens en hun onderlinge verbanden. Het moet voldoende visueel zijn zodat het kan dienen als communicatiemiddel tussen de verschillende belanghebbenden van het informatiesysteem: - ontwerpers; - analisten; - gebruikers; - beheerders; -... Pas als alle betrokken partijen het eens zijn over het model, kan er verder ontwikkeld worden. Welk model gebruiken? Er worden heel wat verschillende datamodellen gebruikt. Het Entiteit-Relatie (Entity-Relationschip) Model is een van de bekendste traditionele modellen. Er bestaan verschillende 'dialecten' van, ze verschillen hoofdzakelijk in notatie. Een voordeel van het gebruik van een algemeen bekend model is dat de samenwerking tussen de verschillende mensen die betrokken zijn bij het ontwerp, vlot kan verlopen. Geen extra trainingen nodig: iedereen kan het model interpreteren en er zijn/haar zegje over hebben. In het volgende hoofdstuk maak je kennis met een vereenvoudigde vorm van het Entiteit-Relatie Model. 1.5 De data dictionary Een datadictionary is een database waarin gegevens over een databasesysteem worden opgeslagen. Het is dus een gereserveerde ruimte in een database die wordt gebruikt om informatie op te slaan over de database zelf. Hij bevat dus gegevens over gegevens, die nuttig kunnen zijn bij het werken met een database. Onder andere volgende informatie kan steeds verstrekt worden: welke gegevens zijn er beschikbaar? hoe zijn ze opgeslagen en gedefinieerd? wie mag welke gegevens gebruiken? Een datadictionary bevordert eenduidigheid in een databasesysteem. Door het gebruik van een datadirectionary verloopt een automatiseringsproces efficiënter. De praktijk wijst op een tijdsbesparing van 10 à 15%. Een datadirectionary kan manueel of geautomatiseerd worden bijgehouden. Er zijn verschillende datadirectionarysystemen op de merkt (bv. Oracle Data Dictionary, DB2, Interbase, SAP R/3 Basic System ABAP Data Dictionary, Microsoft SQL server, ). Pagina 10 Database-ontwerp

11 2 Het Entiteit-Relatie model Entiteiten en relaties Cardinaliteit Optionaliteit Attributen In dit hoofdstuk maak je kennis met een datamodel dat zeer geschikt is voor het ontwerpen van een database: het Entiteit-Relatie Model (Entity Relationship Model), afgekort ER-model. Het is in 1976 in informaticaland héél lang gelden - door P. Chen geïntroduceerd. Sindsdien zijn er verschillende varianten ontwikkeld. In het Entiteit-Relatie model wordt gebruik gemaakt van: - entiteiten; - attributen; - relaties (relationships). 2.1 Entiteiten Een entiteit is een object (een tastbaar iets), een concept, iets dat je kunt identificeren en waarvan je gegevens wilt bijhouden: auto, persoon, magazijn, bankrekening, computer, een lied,... Een entiteit bestaat uit: - een unieke naam; - een definitie die objectief en ondubbelzinnig aangeeft, welke objecten door de entiteit worden gemodelleerd (en soms even belangrijk: welke niet); - een lijst van attributen (zie verder). Voorbeeld Naam Definitie Attributen werknemer een natuurlijke persoon die in loondienst is van de firma; personen die slechts occasioneel voor de firma werken en personen die via een interim-kantoor tewerkgesteld zijn, worden niet als werknemers beschouwd. naam, adres, telefoonnummer, geboortedatum, datum-in-dienstname, Voorstelling Een entiteit wordt voorgesteld door een rechthoek. Werknemer 2.2 Relatie Een relatie is een verband tussen twee of meer entiteiten dat model staat voor een overeenkomstige band tussen de reële objecten zoals een werknemer werkt in een bedrijf. Werkt in is hier de relatie tussen de entiteiten werknemer en bedrijf. Een relatie bestaat dus uit: - een naam, uniek binnen het beschouwde diagram; - een lijst van betrokken entiteiten; VVKSO Werkgroep Handel Database-ontwerp - pagina 11

12 - een definitie die objectief en ondubbelzinnig aangeeft, in welke omstandigheden precies het veronderstelde verband aan- of afwezig is tussen de gespecificeerde entiteiten; - een lijst van attributen (zie verder). Voorbeeld Naam Deelnemende entiteiten Definitie Attributen Werkt in werknemer, afdeling een werknemer werkt in een afdeling als hij verantwoording verschuldigd is aan het hoofd van die afdeling aantal werkuren Voorstelling Een relatie wordt voorgesteld als een verbindingslijn tussen de betrokken entiteiten. Werknemer Werkt in Afdeling De naam van de relatie kan al dan niet vermeld worden. Het pijltje is hier enkel een hulpmiddel bij het lezen van het diagram van links naar rechts: werknemer werkt in afdeling. Het pijltje kun je tevens in de andere richting tekenen: Werknemer Geeft werk aan Afdeling 2.3 Cardinaliteit De cardinaliteit van een relatie geeft aan, hoeveel instanties van een entiteit maximaal in relatie kunnen staan met één instantie van de andere entiteit. Daarbij zijn de toegelaten waarden: één of veel. Voorbeeld Als je de relatie 'persoon is ondergeschikte van manager' bekijkt, dan geldt waarschijnlijk het volgende: - iedere werknemer heeft (is ondergeschikt aan) hoogstens één manager (één-cardinaliteit): Werknemer Manager - een manager kan veel (ondergeschikte) werknemers hebben (veel-cardinaliteit): Werknemer Manager Pagina 12 Database-ontwerp

13 In een gegevensstructuurdiagram geven we de cardinaliteit aan door een markering van de lijnen (relaties) op de plaats waar ze de rechthoeken (entiteiten) bereiken: - als de instantie van de entiteit uniek is (d.w.z. hoogstens één), plaats je een dwarsstreepje op de lijn vlakbij de entiteit; - als de instantie van de entiteit verscheidene malen kan voorkomen (d.w.z. hoogstens veel), plaats je een kraaienpoot op de lijn tegen de entiteit. Werknemer Manager Voor een relatie tussen twee entiteiten zijn er dus, wat de cardinaliteit betreft, de volgende mogelijkheden: één-op-één, één-op-veel en veel-op-veel. Een één-op-één-relatie wordt ook 1:1 genoteerd, een één-op-veel-relatie 1:n (lees: één op n) en een veel-op-veel-relatie m:n (lees: m op n). Om de cardinaliteit te bepalen, stel je een vraag in de vorm: - kan een werknemer meer dan één manager hebben? - kan een manager meer dan één werknemer hebben? Bij een positief antwoord: cardinaliteit veel, anders één. I.v.m. de cardinaliteit kan je bijgevolg 3 soorten relaties hebben. Voorbeeld: Eén-op-één relatie: Klas Onderwijzer Iedere klas heeft maximaal 1 onderwijzer en iedere onderwijzer heeft maximaal 1 klas. Deze situatie komt veel voor in het lager onderwijs. Eén-op-veel relatie: Klas Onderwijzer Iedere klas heeft maximaal 1 onderwijzer en iedere onderwijzer kan een aantal klassen hebben. Deze situatie komt soms voor in het lager onderwijs als het aantal leerlingen zeer klein is. Veel-op-veel relatie: Klas Leraar Iedere klas kan een aantal leraars hebben en iedere leraar kan een aantal klassen hebben. Dit is de situatie in het secundair onderwijs. VVKSO Werkgroep Handel Database-ontwerp - pagina 13

14 2.4 Optionaliteit De optionaliteit van een relatie geeft aan, hoeveel instanties van een entiteit minimaal in relatie moeten staan met één instantie van de andere entiteit. Daarbij zijn de toegelaten waarden: nul of één. Voorbeeld Als je in een database de entiteiten ambtenaar' en 'huwelijkscontract' beschouwt, met daartussen de relatie 'handtekent', dan gelden de volgende vaststellingen omtrent de optionaliteit: - een ambtenaar handtekent niet noodzakelijk een huwelijkscontract; - ieder huwelijkscontract moet gehantekend worden door een ambtenaar. In een gegevensstructuurdiagram geven we de optionaliteit aan door het aanbrengen van een symbool op de lijnen (relaties) dicht bij de rechthoeken (entiteiten), naast de tekens voor cardinaliteit: - als de instantie van de entiteit verplicht is (d.w.z. minstens één), plaats je een dwarsstreepje op de lijn; - als de instantie van de desbetreffende entiteit optioneel is (d.w.z. minstens nul), plaats je een cirkeltje op de lijn. handtekent ambtenaar huwelijkscontract Het verplichte karakter van een relatie is een zeer strenge eis. Als een relatie verplicht is, wil dat zeggen dat je geen enkele situatie kunt modelleren waarin de relatie niet voorkomt, zelfs niet tijdelijk. Om de optionaliteit te bepalen, stel je een vraag in de vorm: - moet een ambtenaar minstens één huwelijkscontract ondertekenen? - moet een huwelijkscontract minstens door één ambtenaar ondertekend zijn? Bij een positief antwoord: optionaliteit één, anders nul. Samengevat geeft de cardinaliteit aan hoeveel instanties van een entiteit maximaal bij een instantie van de andere entiteit kunnen horen (maximaal 1 of meerdere), terwijl de optionaliteit het minimum aantal instanties van een entiteit aangeeft die horen bij een instantie van de andere entiteit (0 is mogelijk of altijd minstens 1). 2.5 Attributen Iedere entiteit en relatie is meestal voorzien van een verzameling attributen. Een attribuut is een eigenschap die met de instanties van de entiteit of de relatie geassocieerd wordt. Entiteiten hebben bijna altijd attributen. Relaties kunnen gemakkelijk voorkomen zonder attributen. Zo heeft een werknemer o.a. een voornaam, een familienaam, een woonplaats Samengestelde gegevens splitsen Je wenst bijvoorbeeld gegevens op te slaan van personen zodat deze telefonisch of per brief kunnen gecontacteerd worden. Als attributen van de persoon heb je dan nodig: naam, adres en telefoonnummer. Je zou dus kunnen opteren voor drie attributen. Dit is echter niet handig. Als je bijvoorbeeld een adresetiket wilt samenstellen, heb je straat, postnummer en gemeente apart nodig. Pagina 14 Database-ontwerp

15 De gegevens naam, adres en telefoonnummer zijn samengestelde gegevens: naam bevat zowel voor- als familienaam, adres bevat straat, huisnummer, postnummer en gemeente en telefoonnummer bevat zonenummer en eigenlijke nummer. Als je de deelgegevens van een samengesteld gegeven afzonderlijk gebruikt, is het beter ze te beschouwen als afzonderlijke attributen. Zo splits je naam waarschijnlijk best op in de attributen voornaam en familienaam. Adres kan gesplitst worden in straat, postnummer en gemeente. Meestal zal het geen zin hebben om straatnaam en straatnummer afzonderlijk op te splitsen, gewoon omdat ze niet afzonderlijk gebruikt worden. In dit geval mag je het samengesteld attribuut onveranderd laten staan in het ERD. Procesgegevens Een procesgegeven of berekend gegeven is een gegeven waarvan de waarde bepaald wordt door de waarde van één of meer andere gegevens. In een groothandel worden bijvoorbeeld artikelgegevens bijgehouden, o.a. naam, inkoopprijs, en hoeveelheid in voorraad. Bij het interventariseren wil men, per artikel, de waarde van de voorraad kennen. Je zou hiervoor een attribuut WaardeVoorraad kunnen voorzien waarbij WaardeVoorraad = Inkoopprijs * HoeveelheidInVoorraad. Dit betekent echter dat om de integriteit van de database te behouden bij elke verandering van de voorraad of de inkoopprijs ook de waarde van dit attribuut moet aangepast worden. Daarom worden procesgegevens meestal niet opgenomen in de database. Een ander voorbeeld is het bijhouden van de geboortedatum en de leeftijd van een persoon. De leeftijd van de loper kan immers steeds worden afgeleid uit de geboortedatum. Procesgegevens worden berekend op het moment dat ze nodig zijn (tijdens het proces). Een attribuut bestaat uit de volgende elementen: - een naam, uniek binnen de collectie attributen van dezelfde entiteit of relatie; - een entiteit of relatie waarvan het attribuut een kenmerk is; - een domein, dit is de collectie van alle mogelijke waarden die het kenmerk kan aannemen; - een definitie die éénduidig de interpretatie van de gekozen waarde uit het domein aangeeft; - het al dan niet verplichte karakter van het attribuut: moet elke instantie van de gegeven entiteit of relatie over deze eigenschap beschikken, of is dit optioneel, met andere woorden, modelleer je ook instanties waarvoor deze eigenschap irrelevant of onbekend is. Voorbeeld Naam Entiteit personen ten laste Werknemer Domein de natuurlijke getallen, inclusief 0 Definitie Verplicht het aantal personen dat fiscaal ten laste van de medewerker is, volgens opgave door de medewerker zelf Ja VVKSO Werkgroep Handel Database-ontwerp - pagina 15

16 Voorstelling De attributen worden bij in de rechthoek geschreven. In diagrammen worden ze meestal weggelaten om de overzichtelijkheid niet te schaden. Werknemer WerknemerID Naam Adres Telefoonnummer Datum-in-dienst Zorg er voor dat bij de attributen van een entiteit een attribuut voorkomt dat de entiteit uniek identificeert (als later de ERD wordt omgezet naar een tabel zal dergelijk attribuut gebruikt worden als primaire sleutel). De moeilijkste stap bij het opstellen van een ERD is het identificeren van de attributen die bij de relaties horen. Voorbeeld: De gegevens van lopers aan meerdere loopnummers (100 m, 200 m, 400 m, ) worden bijgehouden. De lopers kunnen telkens een andere plaats behalen. Om het resultaat van een loper te bepalen, dien je dus steeds bij te vermelden welke loopnummer bedoeld wordt. Loper neemt deel aan behaalde plaats Loopnummer De vraag wat de behaalde plaats is, is niet opportuun indien je niet weet over welke loper het gaat. Het attribuut Behaalde plaats hoort dus thuis bij de relatie en niet bij de entiteit Loper of de entiteit Loopnummer. 2.6 Voorbeelden a) Datamodel van een taxibedrijf 1) Chauffeur Taxi 2) Chauffeur Taxi 3) Chauffeur Taxi 4) Chauffeur Taxi Welke uitspraken horen bij welke ERD-diagram? Er zijn meerdere ERD-diagramama s mogelijk bij een bepaalde uitspraak. Pagina 16 Database-ontwerp

17 Er kunnen taxi s zonder chauffeur bestaan:. Een taxi kan bestuurd worden door meerdere chauffeurs:. Een chauffeur kan meerdere taxi s besturen:. Een taxi wordt maar door 1 chauffeur bestuurd:. Een chauffeur rijdt maar met 1 taxi:. b) Datamodel van een schooladministratie Een school wenst een databank die bijhoudt hoeveel lesuren de leerling in elke richting van elk vak krijgt. Bij een richting hoort een uniek Id en een omschrijving (bv. Boekhouden-Informatica). Elk vak krijgt krijgt eveneens een uniek Id en een vaknaam. Bij een bepaalde richting horen er steeds meerdere vakken. Er wordt minimaal 1 vak gegeven per richting! Er zijn uiteraard verschillende klassen die een klascode hebben (bv. 4HB). Er zijn op school richtingen waarvoor er meerdere klassen (kunnen) zijn zoals 4 Handel A en 4 Handel B. Zijn er geen inschrijvingen voor een bepaalde kals dan wordt die klas natuurlijk niet ingericht. c) Datamodel van een plaatselijke vereniging Bij een plaatselijke vrouwenvereniging wil men informatie over de leden zoals naam, adres, in een databank opslaan.ook wil men in die databank gegevens van de kinderen van de leden (naam en geboortedatum kind) opslaan. Elk lid en elk kind krijgen een uniek Id (de vaders kunnen uiteraard zich niet inschrijven als lid). d) Datamodel van een verkoop Klant Order Verkoper Volgens dit datamodel gelden de volgende regels: Product - een klant die nog geen order heeft geplaatst, kan bestaan; - een verkoper die nog niets heeft verkocht, kan bestaan; - een product dat nog niet verkocht is kan bestaan; - een order van een bestaand product moet via een bestaande verkoper door een bestaande klant gedaan worden. Welke attributen zou je aan elke entiteit toekennen? VVKSO Werkgroep Handel Database-ontwerp - pagina 17

18 2.7 Uitgewerkt voorbeeld Datamodel voor Computerpark Er zijn 6 belangrijke entiteiten: Computer, Randapparaat, Software, Verbruiksproduct, Licentie en Leverancier. Met randapparaat wordt een uitwendig randapparaat bedoeld, bijvoorbeeld: hub, printer, modem, scanner De relaties tussen de entiteiten Levertx, Heeft, Draait op, Is verbonden met, Connecteert worden getoond in het volgende diagram samen met hun cardinaliteit en optionaliteit. (In deze oplossing wordt verondersteld dat de computers in netwerk verbonden zijn via een hub, d.w.z. de computers zijn onderling niet rechtstreeks verbonden.) Bestudeer het volgende diagram aandachtig. Ga, wat de cardinaliteit en de optionaliteit betreft, na wat deze precies betekenen. Waarom is bijvoorbeeld de relatie tussen Leverancier en Verbruiksproduct anders dan tussen Leverancier en Computer of Leverancier en Randapparaat? Per entiteit worden volgende attributen bewaard. De domeinen worden niet aangegeven omdat ze vrij evident zijn. Computer Naam Definitie Verplicht ComputerID identificatie van de computer, naam waaronder de PC gekend is, bijvoorbeeld PC01, Joske... Serienummer serienummer gegeven door producent Ja Merk merknaam of 'wit product' Ja Type naam van het type zoals gekend bij producent Ja Pagina 18 Database-ontwerp

19 Lokaal Functie locatie waar toestel zich bevindt, bijvoorbeeld: B11, Directiebureel... bijvoorbeeld: lescomputer, labocomputer, server, internetserver... Processor type en klokfrequentie Ja Harde schijf Diskettestation CD/DVD RAM RAMtype RAMUitTeBreiden Beeldscherm Klavier Muis Geluidskaart Netwerkkaart ISATotaal ISABezet PCITotaal PCIBezet BIOS Moederkaart Chipset Extras Opmerkingen merk, type, capaciteit van alle ingebouwde schijven (samengesteld gegeven) merk, type (samengesteld gegeven) merk en type van ingebouwd CD of DVD-station (samengesteld gegeven) aanwezige hoeveelheid RAM Type uitbreidingsmogelijkheid merk, type (samengesteld gegeven) merk, type (samengesteld gegeven) merk, type (samengesteld gegeven) merk, type (samengesteld gegeven) merk, type (samengesteld gegeven) totaal aantal ISA-uitbreidingsgleuven aantal bezette ISA-uitbreidingsgleuven totaal aantal PCI-uitbreidingsgleuven aantal bezette PCI-uitbreidingsgleuven naam naam naam soort, merk en type van extra ingebouwde onderdelen, bijvoorbeeld zipdrive (samengesteld gegeven) algemene opmerkingen i.v.m. het toestel Ja Ja Randapparaat Naam Definitie Verplicht RandapparaatID identificatienummer van het specifieke randapparaat Ja Functie functie, bijvoorbeeld: poort, netwerkkaart, modem, printer Ja Merk naamproducent Ja Type naam van het type zoals gekend bij producent Ja Beschrijving Doel voornaamste karakteristieken waarvoor het randapparaat gebruikt wordt, bijvoorbeeld: randapparaat, reserve, didactisch materiaal VVKSO Werkgroep Handel Database-ontwerp - pagina 19

20 Software Naam Definitie Verplicht NaamSoftware inclusief versienummer, bijvoorbeeld MS Word 9.0 Ja Producent bijvoorbeeld Microsoft AantalCD aantal installatie cd's LocatieCD aanduiding waar de cd s bewaard worden Licentie Naam Definitie Verplicht Licentienummer of freeware, gegevens 'shareware' indien dit het geval is Ja Soort licentie schoollicentie, klaslicentie, netwerk... Ja Registratiedatum datum waarop licentie geregistreerd is AantalLicenties aantal toestellen of gebruikers waarvoor licentie geldt Verbruiksproduct Naam Definitie Verplicht Soort papier, toner voor HPLaser6... Ja Merk naam producent Type type naam zoals gekend door producent Beschrijving voornaamste karakteristieken Voorraad hoeveelheid stuks in voorraad Ja Bestelpunt minimumvoorraad Ja Leveringstermijn gemiddelde leveringstermijn in dagen In bestelling Ja/nee Leverancier Naam Definitie Verplicht Firmanaam naam van de firma Ja Contactpersoon naam van de contactpersoon bij de firma Klantnummer klantnummer zoals gekend bij leverancier Telnr Telefoonnummer Faxnr Faxnummer adres adres van contactpersoon Adres adres van de firma De attributen die bij de relaties Levertx en Draait op horen worden in de volgende tabellen weergegeven. De relaties Is verbonden met en Connecteert hebben geen attributen. Pagina 20 Database-ontwerp

21 Levert Naam Definitie Verplicht Leveringsdatum datum waarop goederen geleverd werden Ja Aankoopprijs prijs per stuk Ja Opmerking opmerking i.v.m. de levering Draait op Naam Definitie Verplicht begindatum einddatum opmerking datum installatie datum verwijdering opmerking, bijvoorbeeld Service Release die geïnstalleerd is, optionele componenten 2.8 Oefeningen Ontwerp voor de beschreven omgevingen een datamodel. Volg bij het ontwerpen de volgende stappen: - bepaal de entiteiten; - bepaal de relaties; - bepaal de cardinaliteit van de relaties; - bepaal de optionaliteit van de relaties; - bepaal de attributen van de entiteiten en de relaties. 1 Ontwerp een datamodel voor een puntenboek van een leraar. Je moet zowel de punten voor gewone toetsen als voor proefwerken opslaan. Op het einde van de maand moet er op basis van de databank een puntenlijst afgedrukt worden met de punten van dagelijks werk voor het maandrapport en op het einde van het trimester de punten voor dagelijks werk en proefwerk. De leraar kan meerdere vakken geven en kan in meerdere klassen komen. 2 Ontwerp een datamodel voor een databank voor de schoolbibliotheek. Voor elk boek wordt bijgehouden welk type het is (boek, tijdschrift, naslagwerk). Elk werk heeft uiteraard een naam (titel) en is voorzien van een etiket met een uniek nummer. Een gebruiker moet een werk kunnen opzoeken op basis van een trefwoord. Een werk kan aan meerdere trefwoorden voldoen. Boeken kunnen uitgeleend worden. Je moet kunnen zien of het werk nog aanwezig is of uitgeleend. Indien het uitgeleend is, heeft de persoon het recht om het werk te reserveren. Je moet natuurlijk weten aan wie het is uitgeleend omdat de leners het boek maar één maand mogen bijhouden. Op elk moment moet een lijst kunnen afgedrukt worden van de ontleende en gereserveerde boeken. 3 Een sportclub (atletiek) wenst van al zijn leden een aantal gegevens bij te houden zoals hun lidnummer, naam, adres, postnummer, gemeente, telefoonnummer en welke beste tijden ze behaalden op de loopnummers 100 m, 200 m en 400 m en de datum waarop die beste tijden gelopen werden. 4 Een kapper wil voor elk bezoek van zijn klanten bijhouden welke bewerkingen hij heeft uitgevoerd (zoals knippen, wassen & gebruikte producten, kleuren & gebruikte producten) zodat hij later een historiek kan samenstellen per klant. 5 Een huisarts wil een databank met volgende gegevens: patiënten, gezinsgegevens (gezinshoofd, gezinsleden ), adres, telefoon, mutualiteit, bezoeken per gezinslid, diagnose per bezoek, voorgeschreven geneesmiddelen. VVKSO Werkgroep Handel Database-ontwerp - pagina 21

22 6 De firma La Linea werkt met vertegenwoordigers die kleding verkopen in een bepaald verkoopgebied. Een klant bestelt altijd via dezelfde vertegenwoordiger. De databank moet zeker volgende zaken bevatten: - vertegenwoordigers: vertegenwoordigersnummer, naam en adresgegevens, totale omzet (verdienste) en commissiepercentage; - klanten: klantnummer, naam, adres, saldo, kredietlimiet. Elke klant heeft een vertegenwoordiger maar nooit meer dan één; - kledingsstukken: artikelnummer, omschrijving, prijs, aantal in voorraad; - bestellingen: bestelnummer, klantgegevens, vertegenwoordiger, bestelde artikelen met aantal en prijs. Bijkomende vereisten - een bestelling wordt alleen aanvaard indien de klant geregistreerd is; - per bestelling is er hoogstens één klant; - klanten kunnen een korting krijgen: de te betalen prijs kan dus lager zijn dan de prijs in het artikelenbestand; - indien de prijs van een artikel verhoogt, betaalt de klant nooit meer dan afgesproken bij de bestelling. Pagina 22 Database-ontwerp

23 3 Een relationele databank Het relationeel model Primaire en refererende sleutels Het normalisatieproces 3.1 Tabellen Gegevens kunnen gegroepeerd worden omdat ze om de een of andere reden bij elkaar horen (cfr. entiteiten in het entiteit-relatie datamodel). Zo een groep noem je een objecttype. In een relationele databank worden objecttypes geïmplementeerd d.m.v. tabellen met twee dimensies: rijen en kolommen. Per object wordt één rij gebruikt en per gegeven (attribuut) één kolom. Deze tabellen worden relaties (relations) genoemd. Dit is een term uit de wiskunde, niet te verwarren met de relaties (relationships) in het datamodel. Een database zal meestal uit meerdere tabellen bestaan die onderling met elkaar in verband staan. Voorbeeld: patientgegevens De attributen van een patiënt-objecttype zijn voornaam, familienaam, geboortedatum, lengte en gewicht. Ze vormen de kolommen of velden van de tabel. De (gegevens van) verschillende patiënten vormen de verschillende rijen of records in de tabel. Een tabel in een relationele database moet aan bepaalde voorwaarden voldoen: twee rijen mogen nooit helemaal hetzelfde zijn (geen duplicaten); de volgorde van de rijen en kolommen mogen geen intrinsieke betekenis hebben, d.w.z. het verplaatsen van rijen en/of kolommen heeft geen invloed op de betekenis van de bewaarde gegevens; elke cel dient atomaire gegevens te bevatten, d.w.z. er mag maar een waarde van het attribuut in voorkomen. In een cel waarin een lengte aangegeven wordt, mag maar 1 lengte staan en niet bijvoorbeeld de resultaten van opeenvolgende metingen. 3.2 Sleutels Primaire sleutel Elke rij is uniek en kan bijgevolg geïdentificeerd worden door de waarde in een kolom of een combinatie van kolommen. Deze kolom of combinatie van kolommen noemt men primaire sleutel (PS). Als de primaire sleutel uit meerdere kolommen bestaat, spreekt men van een samengestelde sleutel. M.a.w. 2 verschillende rijen in een tabel mogen nooit in de primaire sleutel dezelfde waarde hebben en in elke rij moet de primaire sleutel steeds 1 waarde hebben. Primaire sleutels mogen bijgevolg nooit de waarde Null hebben, wat betekent dat de primaire sleutel altijd moet ingevuld worden, nooit leeg of onbekend mag zijn! De primaire sleutel van een tabel speelt een belangrijke rol in een relationele database. Besteed dus steeds voldoende zorg aan de keuze ervan! VVKSO Werkgroep Handel Database-ontwerp - pagina 23

24 3.2.2 Kandidaatsleutel Het kan voorkomen dat er meerdere kolommen of combinaties van kolommen de rij identificeren. Er zijn dan meerdere kandidaatsleutels. Eén ervan wordt gekozen tot primaire sleutel (primary key). In de tabel tblpatientgegevens is er eigenlijk geen kandidaatsleutel. Theoretisch, hoewel zeer onwaarschijnlijk, is het mogelijk dat er twee personen met dezelfde naam zijn, die op dezelfde dag geboren zijn en dan nog dezelfde lengte en hetzelfde gewicht hebben. In dergelijke gevallen voeg je een veld toe, meestal met een numerieke waarde, dat als primaire sleutel fungeert Alternatieve sleutel Kandidaatsleutels die geen primaire sleutel zijn geworden, worden alternatieve sleutels genoemd. De waarde van een alternatieve sleutel mag wel Null zijn. Bijvoorbeeld telefoonnummer in een tabel tblklanten. Het begrip kandidaatsleutel is dus een verzamelnaalm voor alle primaire en alternatieve sleutels Surrogaatsleutel In de praktijk kies je best een extra kolom als primaire sleutel zoals PatientID, d.w.z. een kolom die niet overeenkomt met een eigenschap van een entiteit, maar die enkel dient om de rij te identificeren. Als je een kolom neemt die overeenkomt met een eigenschap van een attribuut, dan kan dit in de loop van de tijd veranderen. Stel dat je als primaire sleutel een telefoonnummer zou nemen. In theorie biedt dit een unieke identificatie van bijvoorbeeld een klant. Als echter de telefoonmaatschappij om een of andere reden de nummers aanpast, bijvoorbeeld zonenummer 089 wordt gesplitst in 089 en 011 zal de applicatie overal waar deze waarde als primaire sleutel en refererende sleutel (zie volgende paragraaf) gebruikt wordt, moeten aangepast worden. Dat vraagt heel wat meer werk dan enkel de gegevens in één kolom aanpassen. Een sleutel zoals PatientID die niet overeenkomt met een eigenschap van een entiteit noemt men een surrogaatsleutel Refererende sleutel Een refererende of vreemde sleutel is een geheel van attibuuttypen van een relatie waarvoor geldt: de attribuuttypen verwijzen naar de primaire sleutel uit een andere tabel. Refererende sleutels dienen juist om het verband tussen twee relaties (tabellen) weer te geven. Bij onvoldoende kennis van de werking met sql-databanken: zie hoofdstuk 5. Beschouw volgende view in ArtemisSQL.mdf: Pagina 24 Database-ontwerp

25 In de tabel tblorders is Klantnummer de refererende sleutel. Uiteindelijk zullen tabellen met elkaar in verband gebracht worden via het toevoegen van vreemde sleutels. Bekijk de inhoud van tabel tblklanten. Wat is het laatste klantnummer? Voeg een record toe in tabel tblorders met als klantnummer 275. Er volgt: 3.3 Namen van velden Ieder veld behoort een duidelijke, binnen de tabel unieke naam te krijgen, waarmee het zich van alle andere gegevens onderscheidt. Hoewel het in de meeste pakketten voor gegevensbeheer, zoals met sql-bestanden mogelijk is om een naam te kiezen die bestaat uit meerdere woorden, kun je misschien beter de woorden aan elkaar schrijven en ieder nieuw woord met een hoofdletter laten beginnen. Overdrijf niet in de lengte van de naam: 25 karakters zou ruim voldoende moeten zijn. Voorbeelden van zinvolle naamgeving: WaardeVoorraad, BetalingPerCheck enz. Een tabel kan bijvoorbeeld weergeven worden als: Patiëntgegevens(PatiëntID, Voornaam, Familienaam, Geboortedatum, Lengte, Gewicht) waarbij de primaire sleutel onderstreept wordt. 3.4 Koppelingen tussen tabellen Verschillende tabellen in een relationele database kunnen gegevens bevatten die onderling gekoppeld zijn, die dus samen een grotere gegevensgroep vormen. Bijvoorbeeld: een tabel bevat gegevens van ouders en een andere tabel bevat gegevens van kinderen. Er moet een mechanisme bestaan om aan te geven welke ouders bij welke kinderen horen. VVKSO Werkgroep Handel Database-ontwerp - pagina 25

26 Een dergelijke koppeling wordt in het Nederlands ook een relatie genoemd (Engels: relationship). Dit kan tot verwarring leiden. In hetgeen volgt wordt de term relatie gebruikt om een koppeling tussen tabellen aan te geven. In een relationeel ontwerp wordt een relatie aangegeven door een lijn tussen de twee tabellen die de koppelende velden verbindt. Het veld in de kind -tabel dat de koppeling legt met de (primaire sleutel) van ouder -tabel is de refererende sleutel of vreemde sleutel (foreign key). Ouder OuderID Familienaam Voornaam Straat postnummer Gemeente Kind KindID Voornaam Leeftijd Geslacht OuderIDREF 3.5 Het normalisatieproces Alle tabellen zijn niet zo maar te gebruiken in een relationele database. In paragraaf 3.1 werden reeds 3 voorwaarden opgesomd waaraan voldaan moet zijn, maar er zijn er nog. De bijkomende voorwaarden hebben hoofdzakelijk te maken met het consistent houden van de database, d.w.z. de database mag geen tegenstrijdige gegevens bevatten. Zulke tegenstrijdige gegevens kunnen ontstaan als eenzelfde gegeven, bijvoorbeeld het adres van een persoon, meerdere keren bijgehouden wordt. Het adres kan dan bijvoorbeeld op een plaats aangepast worden, maar dezelfde aanpassing wordt vergeten op de andere plaats. Gelukkig bestaan er regels waarmee je een tabel kunt aanpassen om tot een goede structuur te komen. Dit proces wordt normalisatie genoemd. Normalisatie is een bepaalde herschikking van de gegevens en gegevensgroepen, waarbij soms nieuwe groepen worden gevormd door gegevens uit bestaande groepen af te zonderen. Uiteindelijk wil je tot de volgende situatie komen: Alle attributen van een groep zijn functioneel afhankelijk van de volledige primaire sleutel en tussen attributen onderling bestaan geen functionele afhankelijkheden. Een gegeven is functioneel afhankelijk van een ander als dit gegeven gekend is als het andere gegeven gekend is. Bijvoorbeeld in het rijksregister zijn de gegevens naam en woonplaats functioneel afhankelijk van het rijksregisternummer. Als je het rijksregisternummer van iemand kent, dan kun je zijn naam en woonplaats vinden. Door het gebruik in volgende paragrafen wordt het begrip wellicht duidelijker. Het doel van normalisatie is het vermijden van redundantie dit betekent dat bepaalde informatie tegelijkertijd op meer dan één plaats wordt voorgesteld. De voornaamste nadelen van redundantie zijn: - risico's van inconsistentie: indien dezelfde soort informatie op meer dan één plaats tegelijk aanwezig is, dan kunnen de verschillende plaatsen van informatieopslag elkaar tegenspreken; - moeilijker gegevensonderhoud: sommige wijzigingen moeten op verschillende plaatsen tegelijk worden doorgevoerd. Een basisidee van de relationele structuur is dat gegevens worden opgesplitst in verschillende tabellen die met elkaar verbonden zijn. Op die manier wordt redundantie en inconsistentie vermeden. Nochtans is redundantie soms nuttig. Zo kan een overdreven genormaliseerd gegevensbeheersysteem veel tijd vragen om gegevens op te zoeken, door het grote aantal verschillende gegevensgroepen. Pagina 26 Database-ontwerp

27 Je gaat hoe dan ook de normalisatie steeds volledig doorvoeren en achteraf bepaalde redundanties eventueel opnieuw invoeren, op voorwaarde dat je daarvoor een goede reden kunnen opgeven. 3.6 Normalisatievormen Een normaalvorm (NV of NF Normal Form) is een stap in het normalisatieproces. Elke normaalvorm stelt bepaalde eisen aan de manier waarop de gegevens zijn opgeslagen (zoals eisen aan de geldende functionele afhankelijkheden). Er zijn 6 normaalvormen. Hier worden er maar 3 besproken omdat ze meestal volstaan om tot een efficiënte database te komen: - NF1: verwijder de zich herhalende deelverzamelingen (repeterende groepen). - NF2: verwijder de attributen die functioneel afhankelijk zijn van slechts een deel van de sleutel. - NF3: verwijder de attributen die functioneel afhankelijk zijn van andere attributen. Met 'verwijderen' wordt bedoeld in een afzonderlijke gegevensgroep onderbrengen, niet weglaten uit het gegevensmodel! 3.7 Niet genormaliseerde gegevensgroepen Onderstaande tabel tblbestellingen bevat gegevens over meubelen en de leverancier ervan. Het is eigenlijk niets anders dan een losse verzameling van gegevens. Een dergelijke gegevensgroep is een gegevensgroep in de nulde normaalvorm (0NF). Het is de naieve benadering om gegevens te structureren: de structuur van de database bootst de verschijningsvorm van de gegevens in de werkelijkheid na. Bij het ontwerp werd enkel gekeken naar de bestelling. De tabel wordt aanzien als een lijst van bestellingen. Naam Kleur Prijs Aantal Naam Tel Straat Postc Plaats TAFEL Wit 445,00 2 IDEA Boomsesteenweg WILRIJK STOEL Wit 198,00 8 FIEREMANS Assesteenweg 1740 TERNAT TAFEL Zwart 495,00 6 JANSSENS Zeypstraat MECHELEN TAFEL Zwart 495,00 6 JANSSENS Zeypstraat MECHELEN STOEL Bruin 124,00 10 JANSENS Zeipstraat MECHELEN KAST Zwart 544,00 5 FIEREMANS Assesteenweg TERNAT Wit Ninoofsesteenweg 156 ROOSDAAL Bruin BED Grijs 397,00 9 LINEA Boomsesteenweg WILRIJK Wit 422,00 1 BRICO Hoogstraat BRUSSEL KAST Bruin 745,00 4 JANSSENS Zeipstraat MECHELEN Bekijk de adresgegevens van leverancier Janssens. Wat stel je vast? Twee rijen zijn volledig identiek. Wat denk je hierover? Sommige artikelen bestaan in meerdere kleuren. Welke? Mag dit in een tabel van een relationele database zo bewaard worden? Verklaar. Wordt er op andere plaatsen nog gezondigd tegen dezelfde regel? Waar? VVKSO Werkgroep Handel Database-ontwerp - pagina 27

28 Het is duidelijk dat deze gegevensgroep niet voldoet om als tabel in een relationele omgeving gebruikt te worden. Herlees nog eens de voorwaarden waaraan een tabel in een relationele databank moet voldoen (paragraaf 3.1). Aan welke voorwaarden wordt in deze gegevensgroep niet voldaan? Bij een relationele tabel hoort ook een primaire sleutel. Wat zou je in deze tabel als primaire sleutel kunnen gebruiken? 3.8 Repeterende groepen: NF1 NF1: iedere tabel die voldoet aan de minimale eisen die aan een relatie (tabel) worden gesteld is automatisch in NF1. Praktisch komt het er op neer dat er een primaire sleutel moet bestaan en dat alle cellen atomair zijn. Een RDBMS zoals MS Access, SQL Server, MySQL laat enkel atomaire cellen toe. Wel is het in veel RDBMS-sen mogelijk om zonder een primaire sleutel te werken. In volgende voorbeelden wordt uitgelegd welke problemen kunnen opduiken als een tabel niet in NF1 is en hoe je een gegeven tabel in NF1 kunt zetten. Voorbeeld 1 In een bedrijf worden de volgende personeelsgegevens bijgehouden: Persnr Naam Straat Postnummer Gemeente Taal Devos Dorpsplein Brugge Nederlands Frans Engels Vandevelde Centrumlaan Gent Nederlands Duits Het veld Taal bevat de talen gekend door de personeelsleden. Wat is de primaire sleutel van deze gegevensgroep? Waarom kan deze gegevensgroep niet als tabel gebruikt worden in een relationele database? De talenkennis van de personeelsleden moet op een andere manier bewaard worden. Welke problemen kun je verwachten als je diverse velden voorziet (Taal1, Taal2, Taal3,...) om dan in elk veld een gekende taal te noteren? Welke problemen treden op als je per personeelslid zoveel rijen voorziet als er gekende talen zijn? Een gegeven of een combinatie van gegevens die per entiteit meerdere keren voorkomt noemt men een repeterende groep. Pagina 28 Database-ontwerp

29 De oplossing van de aangehaalde problemen vereist het verwijderen van de repeterende groep (hier het gegeven Taal) uit de oorspronkelijke gegevensgroep en het creëren van een nieuwe gegevensgroep met de gegevens van de repeterende groep. Er wordt een scheiding gemaakt van gegevens WAARBIJ MEN ER MOET VOOR ZORGEN OM GEEN INFORMATIE TE VERLIEZEN! Een volgende opsplitsing zou dan ook verkeerd zijn: Persnr Naam Straat Postnummer Gemeente Devos Dorpsplein Brugge Vandevelde Centrumlaan Gent en Taal Nederlands Frans Engels Nederlands Duits Waarom is dit geen goed voorstel en volgend voorstel wel? Persnr Naam Straat Postnummer Gemeente Devos Dorpsplein Brugge Vandevelde Centrumlaan Gent Persnr en Taal Nederlands Frans Engels Nederlands Duits Om geen gegevensverlies te hebben moet je dus de repeterende groep uit de oorspronkelijke gegevensgroep verwijderen en in een aparte gegevensgroep zetten, waarbij je de primaire sleutel herhaalt. Wat is een primaire sleutel voor de tweede gegevensgroep? Bovenstaande gegevensgroepen staan in de eerste normaalvorm (1NF). Het is mogelijk dat er meerdere repeterende groepen voorkomen. Die moeten allemaal in aparte gegevensgroepen bijgehouden worden. VVKSO Werkgroep Handel Database-ontwerp - pagina 29

30 De zo ontstane gegevensgroepen zijn gerelateerd. De relatie wordt gelegd door het primaire sleutelveld van de eerste gegevensgroep die herhaald wordt in de tweede gegevensgroep. In de tweede gegevensgroep kan dat sleutelveld meerdere keren dezelfde waarde bevatten. Het kan dus zeker geen primair sleutelveld voor de tweede gegevensgroep vormen. Men spreekt van een refererende sleutel of foreign key. In het bovenstaande voorbeeld is Persnr de primaire sleutel van de eerste gegevensgroep en de refererende sleutel van de tweede gegevensgroep. Voorbeeld 2 Bij het normaliseren hoef je niet onmiddellijk de gegevens in tabelvorm weer te geven. Meestal is dit zelfs niet mogelijk omdat er te veel gegevens zijn. Je kunt de gegevens ook onder elkaar weergeven zoals in volgend voorbeeld. (De primaire sleutel wordt onderstreept.) nulde normaalvorm personeelsnummer naam adresgegevens (straat, postnummer, gemeente) talenkennis (taal, mondelinge kennis, schriftelijke kennis) behaalde diploma's (naam, jaartal) eerste normaalvorm personeelsnummer naam adresgegevens (straat, postnummer, gemeente) en personeelsnummer taal mondelinge kennis schriftelijke kennis en personeelsnummer diplomanaam jaartal Personeelsnummer is de primaire sleutel van de eerste gegevensgroep en de refererende sleutel van de twee andere. Voorbeeld 3 nulde normaalvorm lidnummer naam adresgegevens (straat, postnummer, gemeente) kinderen (naam, leeftijd, gevolgde lessen) eerste normaalvorm Pagina 30 Database-ontwerp

31 Stap 1 lidnummer naam adresgegevens (straat, postnummer, gemeente) en lidnummer naamkind leeftijd gevolgde lessen Stap 2 lidnummer naam adresgegevens (straat, postnummer, gemeente) en lidnummer naamkind leeftijd en lidnummer naamkind gevolgde les Voor de eenvoud kun je aan de tweede gegevensgroep een speciaal sleutelveld toevoegen dat kan dienen als primaire sleutel voor de gegevensgroep. Je krijgt dan iets als het volgende. eerste normaalvorm lidnummer naam adresgegevens (straat, postnummer, gemeente) en kindnummer lidnummer naamkind leeftijd en kindnummer gevolgde les VVKSO Werkgroep Handel Database-ontwerp - pagina 31

32 Voorbeeld 4 Hieronder zie je een tabel met namen van personen en de softwarepakketten die ze geven: Persnum Naam Software P10 Marc Powershell, Asp.Net P11 Ria Excel, Word, Access P13 Annie Word, Access P16 Guy Asp.Net, Word, Vb.Net P19 Gerry Vb.Net, Asp.Net, Powershell Strikt genomen is deze tabel in de eerste normaalvorm, maar er wordt gezondigd tegen de geest van deze normaalvorm omdat er meerdere betekenisvolle gegevens in een cel staan. Het is moeilijk om uit een dergelijke tabel alle personeelsleden te filteren die Word geven. De repeterende groep wordt gevormd door de gebruikte Software. Een omzetting naar de eerste normaalvorm geeft het volgende resultaat: Persnum Naam P10 Marc P11 Ria P13 Annie P16 Guy P19 Gerry en Persnum Software P10 Powershell P10 Asp.Net P11 Excel P11 Word P11 Access P13 Word P13 Access Misschien heb je het probleem van het softwaregebruik als volgt opgelost. Persnum Naam Powershell Asp.Net Word Access Vb.Net Excel P10 Marc x x P11 Ria x x x P13 Annie x x P16 Guy x x x P19 Gerry x x x Schijnbaar is er hier geen sprake van herhalende groepen. In elke cel staat immers hoogstens één vermelding nl. een x als de persoon het betreffende programma gebruikt. Dergelijke structuur heeft enkele belangrijke nadelen. - Veel velden zijn leeg maar nemen toch plaats in op de schijf. - Wanneer een pakket niet meer gebruikt wordt, is het bij alle records leeg maar het is nog aanwezig. Je kunt het slechts verwijderen wanneer je de structuur van de tabel wijzigt. Dit is een activiteit die de gewone gebruiker niet zal uitvoeren. Wanneer er een nieuw pakket wordt toegevoegd moet je eveneens de tabelstructuur aanpassen. Wanneer je echter met een gesplitste tabel werkt, dan heb je slechts records te verwijderen of toe te voegen. De tabelstructuur verandert hierdoor niet, wel het aantal rijen in de tabel. Pagina 32 Database-ontwerp

33 3.9 Partiële functionele afhankelijkheid: NF2 Een relatie is in 2 NF als alle attributen die niet opgenomen zijn in de PS van de gehele PS afhankelijk zijn. Praktisch kan dit alleen problemen opleveren als de primaire sleutel een samengestelde sleutel is. Voorbeeld 1 In een onderneming waar software op maat van de klant ontwikkeld wordt, wordt elke opdracht gezien als een project dat geïdentificeerd wordt door een projectnummer en naam. Analisten, programmeurs en andere medewerkers worden toegewezen aan één of meerdere projecten. Om de kosten te kunnen bepalen, wordt per medewerker bijgehouden hoelang hij aan een project gewerkt heeft. nulde normaalvorm personeelsnummer adresgegevens (straat, postnummer, gemeente) uurloon projecten (projectnummer, projectnaam, klantnaam, werkduur) eerste normaalvorm personeelsnummer adresgegevens (straat, postnummer, gemeente) uurloon en personeelsnummer projectnummer projectnaam klantnaam werkduur Kenmerkend voor een primaire sleutel is dat hij een rij volledig identificeert. Dit wil zeggen: als de primaire sleutel gekend is, dan kun je de waarden van alle andere velden vinden. Men zegt dat alle velden functioneel afhankelijk (f.a.) zijn van de primaire sleutel (veld X is functioneel afhankelijk van veld Y als de waarde van veld X vastligt als de waarde van veld Y gegeven is). Voorbeeld Als we de klantid kennen dan kennen we tevens de klantnaam, klantadres, Bij een klantid hoort immers ondubbelzinnig een klantnaam, een klantadres, De klantnaam is dus functioneel afhankelijk van de klantid. Het omgekeerde geldt niet: het klantid is niet functioneel afhankelijk van de klantnaam. Bij een klantnaam kunnen er meerdere klantid s horen. De klantnaam Piet Pieters of Jan Janssens kan meerdere keren voorkomen in de tabel zodat Piet Pieters niet ondubbelzinnig kan zeggen welk klantid er mee overeenkomt. Als de primaire sleutel een samengestelde sleutel is, m.a.w. uit meerdere velden bestaat, dan is het mogelijk dat kennis van een deel van de sleutel voldoende is om de waarde van een of meer velden te vinden. In het bovenstaande voorbeeld, tweede tabel, is dit het geval voor de velden projectnaam en klantnaam. Als het projectnummer gekend is, dan kan men de waarde van deze beide velden vinden. Men zegt dat deze velden partieel functioneel afhankelijk zijn van de primaire sleutel (of afhankelijk zijn van een deel van de sleutel). VVKSO Werkgroep Handel Database-ontwerp - pagina 33

34 In de tweede stap in de normalisering moeten velden die partieel functioneel afhankelijk zijn uit de oorspronkelijke gegevensgroep verwijderd worden en samen met het deel van de sleutel waarvan ze afhankelijk zijn in een nieuwe gegevensgroep geplaatst worden. tweede normaalvorm personeelsnummer adresgegevens (straat, postnummer, gemeente) uurloon en personeelsnummer projectnummer werkduur en projectnummer projectnaam klantnaam Als deze stap niet gezet wordt, zal de database redundante gegevens bevatten, d.w.z. dezelfde gegevens komen meerdere malen voor (zie voorbeeld 2). Inderdaad zal in bovenstaand voorbeeld, voor elk personeelslid dat aan een bepaald project toegewezen wordt zowel de projectnaam als de klantnaam herhaald worden. Merk op dat door het afzonderen van de projectgegevens de primaire sleutel van de nieuwe gegevensgroep (projectnummer) aanwezig blijft als refererende sleutel in de oorspronkelijke gegevensgroep. De gegevens van de medewerkers zitten samen in de gegevensgroep. De gegevens van het project zitten samen in een andere gegevensgroep. De koppeling tussen deze gegevensgroepen namelijk welke werknemers werken hoelang voor welk project, zit in een aparte gegevensgroep met een samengestelde sleutel. Voorbeeld 2 Een groothandelaar koopt bepaalde artikelen bij meerdere leveranciers. nulde normaalvorm artikelnummer artikelnaam artikelcategorie leveranciersnummer aantal levtel eerste normaalvorm artikelnummer artikelnaam artikelcategorie Pagina 34 Database-ontwerp

35 en artikelnummer leveranciersnummer aantal levtel Als de stap naar de tweede normaalvorm (2NF) niet gedaan wordt, kan de tweede gegevensgroep er als volgt uitzien. Levnum LevTel Artnum Aantal L1 235 A1 10 L1 235 A2 12 L1 235 A3 14 L2 999 A2 10 L2 999 A4 5 L3 800 A1 13 L3 800 A5 10 L4 600 A6 5 Welke gegevens worden nodeloos herhaald? Hoeveel keer moet je het telefoonnummer veranderen als het telefoonnummer van L1 verandert? Wat gebeurt er indien artikel A6 gewist wordt (niet aangekocht)? Kun je het telefoonnummer van een leverancier toevoegen als hij nog geen artikel geleverd heeft? Welke velden zijn functioneel afhankelijk van slechts een deel van de sleutel? Breng bovenstaande gegevensgroep in tweede normaalvorm Transitieve functionele afhankelijkheid: NF3 Een relatie is in 3 NF als de relatie in 2 NF is en geen transitieve afhankelijkheden bevat Wat dit precies betekent, kom je te weten in de volgende voorbeelden. Voorbeeld In een boekenwinkel houdt men van alle boeken volgende gegevens bij: Boekcode Categoriecode CategorieOms Titel Auteur Verkprijs BK1276 K36 Kinderen 3-6 jaar Samson op reis 14,50 VW0058 K03 Kinderen 0-3 jaar Dieren kijken 2,45 HJ1000 K36 Kinderen 3-6 jaar Samson is ziek 14,50 Wat vind je zelf (intuïtief) van dit voorstel voor de gegevensbestandstructuur? Leg uit met voorbeeld(en) waarom je dit voorstel goed of slecht vindt. VVKSO Werkgroep Handel Database-ontwerp - pagina 35

36 In dit voorbeeld is de categorieomschrijving (CategorieOms) gekend als de categoriecode gekend is. Dit veld is dus functioneel afhankelijk van een ander veld dan het primaire sleutelveld. Men spreekt in dat geval van transitieve functionele afhankelijkheid. In de derde stap van de normalisering moeten velden die transitief functioneel afhankelijk zijn uit de oorspronkelijke gegevensgroep verwijderd worden en samen met het veld waarvan ze afhangen in een nieuwe gegevensgroep geplaatst worden. Boekcode CategorieCode Titel Auteur Verkprijs BK1276 K36 Samson op reis 14,50 VW0058 K03 Dieren kijken 2,45 HJ1000 K36 Samson is ziek 14,50 en CategorieCode K36 K03 CategorieOms Kinderen 3-6 jaar Kinderen 0-3 jaar Merk op: CategorieCode is de primaire sleutel van de nieuwe gegevensgroep en de refererende sleutel in de oorspronkelijke groep. De werkwijze is dus analoog als bij de tweede normalisatiestap. Pagina 36 Database-ontwerp

37 3.11 Overzicht Om tot een goede structuur van je relationele database te komen maak je volgende stappen. Inventariseer alle elementaire gegevens. Duid de sleutel(s) aan. Verwijder alle procesgegevens. Zet de gegevensgroepen in eerste normaalvorm. Werkwijze: - geef de deelverzameling aan die een herhaald aantal keren voorkomt. - herhaal de sleutel van de oorspronkelijke groep samen met de gegevens van de zich herhalende deelverzameling als nieuwe groep. - verwijder de zich herhalende deelverzameling uit de oorspronkelijke groep. Zet de gegevensgroepen in tweede normaalvorm. Geef de attributen aan die niet functioneel afhankelijk zijn van de volledige sleutel. Vorm een aparte groep voor ieder deel van de sleutel waarvan attributen functioneel afhankelijk zijn. Neem in iedere groep de attributen met het bijbehorende sleuteldeel op. Verwijder deze attributen uit de oorspronkelijke groep. Zet de gegevensgroepen in derde normaalvorm. Geef de attributen aan die ook functioneel afhankelijk zijn van andere attributen. Vorm een aparte groep voor ieder attribuut of combinatie van attributen, waar andere attributen functioneel afhankelijk van zijn. Neem in iedere groep de attributen met bijbehorende sleutel op. Verwijder de attributen van de nieuwe groep(en) uit de oorspronkelijke groep. VVKSO Werkgroep Handel Database-ontwerp - pagina 37

38 3.12 Voorbeelden Oefening 1: facturatie In het kader van de automatisering van het bedrijf Elza moet de administratie van volgende facturen geautomatiseerd worden: N.V. Elza Factuurnummer: 51 Veldstraat 63 Klant: Gent Firma Verstraete Vredelaan Kurrne Geleverd: Datum: 25/01/2008 Artikelnummer Omschrijving Aantal Prijs A0456 Video S ,00 C1200 Cd-speler P ,50 C0002 Cd-speler V ,35 Totaal: 1406,85 1. Inventariseer de gegevens. 2. Duid de sleutel aan: deze wordt onderstreept. 3. Verwijder de procesgegevens. FACTUREN Factuurnummer Klnummer Klnaam Kladres Klpostnr Klgemeente Factuurdatum Artikelnummer Omschrijving Aantal herhalende deelverzameling Prijs Totaal -> procesgegeven verwijderen 1 normaalvorm: verwijder de zich herhalende deelverzamelingen Op de factuur komen de gegevens Artikelnummer, Omschrijving, Aantal en Prijs meerdere keren voor. Per factuur is het aantal gekochte artikelen variabel. Probleem: voor hoeveel artikelen moet er plaats (kolommen) voorzien zijn in de tabel? Wat gebeurt er als er teveel of te weinig plaats voorzien wordt? Pagina 38 Database-ontwerp

39 Deze vier gegevens vormen een zich herhalende deelverzameling. Deze groep wordt uit de tabel verwijderd en in een aparte tabel geplaatst: tblbestellingen. Werkwijze: 1. Duid de zich herhalende deelverzameling aan. 2. Maak een nieuwe tabel met de sleutel uit de oorspronkelijke tabel en de zich herhalende deelverzameling. 3. Duid een bijkomende sleutel aan in de nieuwe tabel. 4. Verwijder de zich herhalende deelverzameling uit de oorspronkelijke tabel. 1 e normaalvorm: FACTUREN (tblfacturen) Factuurnummer Klnummer Klnaam Kladres Klpostnr Klgemeente Factuurdatum BESTELLING (tblbestelling) Factuurnummer Artikelnummer Omschrijving Aantal Prijs Merk op: als er in een zich herhalende deelverzameling een andere zich herhalende deelverzameling voorkomt, dan moet deze werkwijze nog eens herhaald worden. 2 normaalvorm: verwijder de attributen die slechts afhankelijk zijn van een deel van de sleutel In de tabel tblbestelling zijn de gegevens Omschrijving en Prijs enkel afhankelijk van een deel van de sleutel (Artikelnummer) en niet van de volledige sleutel. Daarom worden ze uit de tabel verwijderd en in een aparte tabel opgenomen. Werkwijze: 1. Duid de attributen aan die slechts afhankelijk zijn van een deel van de sleutel. 2. Stel een aparte tabel op voor ieder deel van de sleutel waarvan attributen volledig afhankelijk zijn. 3. Duid in de nieuwe tabellen een sleutel aan. 4. Verwijder de attributen van de nieuwe groep(en) uit de oorspronkelijke groep. 2 e normaalvorm: FACTUREN (tblfacturen) Factuurnummer Klnummer Klnaam Kladres Klpostnr Klgemeente Factuurdatum BESTELLING (tblbestelling) Factuurnummer Artikelnummer Aantal ARTIKELEN (tblartikelen) Artikelnummer Omschrijving Prijs VVKSO Werkgroep Handel Database-ontwerp - pagina 39

40 Er zijn nu al drie afzonderlijke tabellen. De tabel tblartikelen kan nu ook bij andere facturen gebruikt worden: het opnemen van het artikelnummer zal voldoende zijn om de bijkomende gegevens op te vragen. 3 normaalvorm: verwijder de attributen die verborgen afhankelijk zijn van de sleutel (die dus ook nog afhankelijk zijn van andere attributen) In de tabel tblfacturen zijn de gegevens Klnaam, Kladres, Klpostnr en Klgemeente verborgen afhankelijk van de sleutel via het attribuut Klnummer: bij elk klantnummer hoort slechts één naam, adres, gemeente en postnummer. Werkwijze: 1. Geef de attributen aan die verborgen afhankelijk zijn van de sleutel. 2. Vorm een aparte groep voor ieder attribuut of combinatie attributen waar andere attributen afhankelijk van zijn. 3. Duid in deze nieuwe tabellen de sleutel aan. 4. Verwijder de attributen van de nieuwe groep(en) uit de oorspronkelijke groep. 3 e normaalvorm: FACTUREN (tblfacturen) Factuurnummer Klnummer Factuurdatum BESTELLING (tblbestelling) Factuurnummer Artikelnummer Aantal ARTIKELEN (tblartikelen) Artikelnummer Omschrijving Prijs KLANTEN (tblklanten) Klnummer Klnaam Kladres Klpostnr Klgemeente Verkorte schrijfwijze: Naam van de tabel (sleutel, gegeven1, gegeven2, ) In ons voorbeeld geeft dit: tblfacturen(factuurnummer, Klnummer, Factuurdatum) tblbestelling(factuurnummer, Artikelnummer, Aantal) tblartikelen(artikelnummer, Omschrijving, Prijs) tblklanten(klnummer, Klnaam, Kladres, Klpostnr, Klgemeente) Oefening 2: artikelfiche In een magazijn houdt men per artikel een fiche bij. Daarop staat naast het aantal in voorraad ook informatie over de bestellingen die reeds geplaatst zijn. Dergelijke fiche ziet er uit zoals hieronder afgebeeld. Ontwerp tabellen in de derde normaalvorm waarmee dergelijke fiches kunnen worden bijgehouden. Pagina 40 Database-ontwerp

41 Artikelnummer: 425 Strijkijzer Hoeveelheid in magazijn: 15 Geplaatste bestellingen: Ordernummer Leverancier Leveringsdatum Aantal 5891 Debo & zoon 25/02/ Vanassche 01/03/ Vanhee 15/03/097 8 Bestelde hoeveelheid: Oefening 3: abonnementen Lezen is gezond is een uitgeverij van meerdere weekbladen. Als een abonnee niet tijdig betaalt, stuurt de administratie een aanmaning volgens onderstaand model. Ontwerp tabellen in de derde normaalvorm om deze administratie te automatiseren. Uitgeverij Lezen is gezond, Antwerpen Rekeningnummer: Abonnementsnummer: Abonneenummer: De Heer/Mevrouw Pieters Stationsstraat Gent Geachte abonnee, Er is gebleken dat u uw abonnementsgeld voor het blad Dag iedereen nog niet hebt betaald. Wij vragen u beleefd het verschuldigde bedrag van 34,99 zo snel mogelijk te betalen. Gelieve bij uw betaling de nummers te vermelden die u bovenaan de brief vindt. Hoogachtend, Oefening 4: stages Bij het organiseren van de stages op een school wordt op de administratie gebruik gemaakt van het volgende overzicht. Ontwerp tabellen in de derde normaalvorm waarmee onderstaand overzicht kan worden aangelegd. VVKSO Werkgroep Handel Database-ontwerp - pagina 41

42 Overzicht van stagiaires per bedrijf Bedrijfsgegevens Nummer Naam Adres Plaats Contactpersoon Geplaatste leerlingen Nummer Naam Klas Periode Steven Devos 6a Katrien Adams 6a Ann Verhenne 6c Geert Naert 6b Oefening 5: projecten In een softwarebureau zijn er steeds een groot aantal lopende projecten. Het is niet uitgesloten dat eenzelfde medewerker tegelijkertijd aan verschillende projecten meewerkt. In het bedrijf zijn er slechts 2 chefs: Jan is de chef van de afdeling Analyse en Piet is chef van de afdeling Programmering. Men wil steeds een goed overzicht van de zaken behouden. Ontwerp tabellen in de derde normaalvorm om deze administratie te automatiseren. PROJECTOVERZICHT Project Budget Medewerker Afdeling Chef Uren 001 Vdb Paul Analyse Jan Petra Programmering Piet Tra Tom Analyse Jan Petra Programmering Piet Ptz Paul Analyse Jan Ria Programmering Piet Oefening 6: cursussen In een bepaald bedrijf worden voor de werknemers cursussen georganiseerd. Van elke werknemer worden een aantal gegevens bijgehouden: een uniek nummer, de persoonlijke gegevens, de afdeling waar hij werkt een zijn jaarsalaris. Het bedrijf heeft een achttal afdelingen met elk een eigen baas. Deze afdelingen zijn gevestigd in verschillende plaatsen. Bij de cursusadministratie moeten alle gegevens over de cursisten steeds beschikbaar zijn. Van elke cursus wordt de officiële naam, de naam van de leraar, de startdatum en de duur van de cursus bijgehouden. Als een werknemer een cursus met succes beëindigd heeft, krijgt hij hiervoor een diploma. Op dat diploma komen enkele persoonlijke gegevens van de werknemer, zijn afdeling en de datum waarop hij de cursus heeft beëindigd. Ontwerp tabellen in de derde normaalvorm om deze administratie te automatiseren. Pagina 42 Database-ontwerp

43 Oefening 7: computerpark Beschouw als gegevensgroep de attributen behorende bij de entiteit Computer in het voorbeeld Computerpark. Nulde normaalvorm De definities worden weergegeven voor de duidelijkheid. ComputerID fungeert als primaire sleutel. Naam ComputerID Serienummer Merk Type Definitie identificatie van de computer, naam waaronder de PC gekend is, bijvoorbeeld PC01, Joske... serienummer gegeven door producent merknaam of 'wit product' naam van het type zoals gekend bij producent Lokaal locatie waar toestel zich bevindt, bijvoorbeeld: B11, Directiebureel... Functie Processor Harde schijf Diskettestation CD/DVD RAM RAMtype RAMUitTeBreiden Beeldscherm Klavier Muis Geluidskaart Netwerkkaart ISATotaal ISABezet PCITotaal PCIBezet BIOS Moederkaart Chipset Extra s Opmerkingen specifieke functie, bijvoorbeeld: lescomputer, labocomputer, server, internetserver... type met klokfrequentie merk, type, capaciteit van alle ingebouwde schijven (samengesteld gegeven) merk, type (samengesteld gegeven) merk en type van ingebouwd CD of DVD-station (samengesteld gegeven) aanwezige hoeveelheid RAM Type uitbreidingsmogelijkheid merk, type (samengesteld gegeven) merk, type (samengesteld gegeven) merk, type (samengesteld gegeven) merk, type (samengesteld gegeven) merk, type (samengesteld gegeven) totaal aantal ISA-uitbreidingsgleuven aantal bezette ISA-uitbreidingsgleuven totaal aantal PCI-uitbreidingsgleuven aantal bezette PCI-uitbreidingsgleuven naam naam naam soort, merk en type van extra ingebouwde onderdelen, bijvoorbeeld, zipdrive, cd-writer (samengesteld gegeven) algemene opmerkingen i.v.m. het toestel Eerste normaalvorm Afhankelijk van het computerpark dat beschreven wordt, bevat de gegevensgroep verschillende repeterende groepen. In sommige computerparken is het bijvoorbeeld mogelijk dat een computer meerdere netwerkkaarten bevat, meerdere diskettestations enz. Hier wordt verondersteld dat een toestel meerdere harde schijven kan hebben en meerdere extra's. Dit leidt tot volgende splitsing. VVKSO Werkgroep Handel Database-ontwerp - pagina 43

44 Computer Extra HardeSchijf ComputerID ExtraID HardeSchijfID Serienummer ComputerID ComputerID Merk Type Type Type Beschrijving Capaciteit Lokaal Merk Snelheid Functie Merk Processor Diskettestation CD/DVD RAM RAMtype RAMUitTeBreiden Beeldscherm Klavier Muis Geluidskaart Netwerkkaart ISATotaal ISABezet PCITotaal PCIBezet BIOS Moederkaart Chipset Opmerkingen Tweede normaalvorm Enkel de nieuwe gegevensgroepen moeten bekeken worden, want zij hebben een samengestelde sleutel. In beide gevallen hangen alle niet sleutelattributen af van het eerste deel van de sleutel. Dit leidt tot volgde splitsingen. ExtraComputer ExtraID ComputerID HardeSchijfComputer HardeSchijfID ComputerID Extra ExtraID Type Beschrijving Merk HardeSchijf HardeSchijfID Type Capaciteit Snelheid Merk Derde normaalvorm Diskettestation, CD/DVD, Beeldscherm, Klavier, Muis, Geluidskaart en Netwerkkaart zijn samengestelde gegevens. Bovendien is het zo dat als het identificerend gegeven bekend is. Dit leidt tot volgde splitsingen. Computer Diskettestation CD/DVD ComputerID DiskettestationID CD/DVD_ID Serienummer Merk Merk Merk Type Type Type Snelheid Speed Lokaal ComputerID Functie Processor Beeldscherm KlavierID DiskettestationID BeeldschermID KlavierID CD/DVD_ID Merk Merk RAM Type Type Pagina 44 Database-ontwerp

45 RAMtype Energiesparend Ergonomisch RAMUitTeBreiden BeeldschermID Muis Geluidskaart KlavierID MuisID GeluidskaartID MuisID Merk Merk GeluidskaartID Type Type NetwerkkaartID Soort AantalBit ISATotaal Driver ISABezet Netwerkkaart PCITotaal NetwerkkaartID PCIBezet Merk BIOS Type Moederkaart Driver Chipset Opmerkingen De andere gegevensgroepen van Computerpark zijn in de derde normaalvorm Oefeningen 1 Verbind de termen in kolom 1 met de synoniemen in kolom 2. Rij Kolom Veld Record Attribuut Relatie Tabel Instantie van entiteit Kenmerk 2 Geef een voorbeeld van een unieke sleutel die door volgende organisaties of instellingen wordt gebruikt om iemand te identificeren: Verzekeringsmaatschappij - Financiële instelling Mutualiteit Sportvereniging 3 Onderstreep in de eerste rij (veldnamen) van volgende tabel de primaire sleutel. NUMMER NAAM VOORNAAM GEBOORTEDATUM LENGTE GEWICHT P10 Legrand Pieter P11 Legrand Annemie P40 De Bolle Annemie P50 Vervaet Sandra P60 Legrand Pieter Kun je ook een kandidaatsleutel vinden? 4 Bepaal een mogelijke structuur voor personeelsgegevens van een onderneming. In de databank met personeelsgegevens wordt naast de gegevens van de werknemers (naam, datum indiensttreding, afdeling, brutoloon) ook de naam en de geboortedatum van de kinderen bijgehouden. 5 Normaliseer de gegevensgroepen die je hebt gevonden als resultaat van de oefeningen uit het vorige hoofdstuk. VVKSO Werkgroep Handel Database-ontwerp - pagina 45

46 4 Omzetting datamodel (ERD) naar databaseontwerp (tabellen) Omzetting van entiteiten Omzetting van relaties Een entity-relationship diagram kun je omzetten naar de verschillende soorten DBMS. In dit hoofdstuk wordt de omzetting naar een RDBMS besproken. Het resultaat van de omzetting wordt het databaseontwerp genoemd. Een relationele database ontwerpen wil zeggen de tabellen en hun onderlinge relaties definiëren en wel zo dat de database geen overtollige noch tegenstrijdige gegevens zal bevatten. De gegevens moeten steeds genormaliseerd worden. Je mag dit doen op het niveau van het datamodel, d.w.z. het datamodel verfijnen tot de attributen die bij de entiteiten of de relaties horen, een genormaliseerde groep vormen, of op het niveau van het database ontwerp, d.w.z. eerst een omzetting doen naar gerelateerde tabellen en dan de tabellen normaliseren. 4.1 Entiteiten Zelfstandige entiteiten Als je een Entiteit-Relatie model hebt opgemaakt kun je in eerste instantie de entiteiten vertalen in tabellen. De entiteiten worden tabellen, de attributen worden velden. Indien dit nog niet gebeurd is, moet je nog een normalisatie doorvoeren. 4.2 Relaties zonder attributen Optionaliteit De optionaliteit van een relatie wordt omgezet tot een eventuele beperking (constraint) van de tabel. Als de optionalteit 1 is, is de entiteit vereist, wat meestal in de RDBMS zal leiden tot het vereist stellen van de refererende sleutel in de tabel coresponderend met de andere entiteit Één-op-één relatie Voorbeeld relatie: entiteiten: definitie: gebruikt Bureautafel(BureautafelID, Locatie, Type ) en Werknemer(WerknemerID, Familienaam, Voornaam ) Administratieve werknemers krijgen een vaste bureautafel toegewezen op kantoor. Deze bureautafel moet met niemand gedeeld worden en iedereen krijgt slechts één bureautafel. Er kunnen werknemers zijn zonder bureautafel en bureautafels die niet gebruikt worden door werknemers. Werknemer gebruikt Bureautafel Pagina 46 Database-ontwerp

47 De relatie Gebruikt wordt in het relationele ontwerp gebracht door tussen de tabellen Werknemer en Bureautafel een relatie (koppeling) te leggen. Dit gebeurt door aan de tabel Bureautafel de primaire sleutel (WerknemerID) van de tabel Werknemer toe te voegen of omgekeerd. Het toegevoegde veld is de refererende sleutel. Van elke entiteit wordt een tabel gemaakt. Hierbij neem je in één van de beide tabellen de primaire sleutel op van de andere tabel. De tabellen in het relationele ontwerp worden dus: Werknemer Bureautafel WerknemerID Familienaam Voornaam 1 1 BureautafelID Locatie Type WerknemerID of Werknemer Bureautafel WerknemerID Familienaam Voornaam BureautafelID 1 1 BureautafelID Locatie Type In principe zijn beide oplossingen gelijkwaardig. Welke van de twee uiteindelijk praktisch het beste is, hangt af van de bevraging van de databank. Als daarbij meestal uitgegaan wordt van de werknemers (wat waarschijnlijk het geval is), dan is de eerste oplossing de beste. Je ziet dat iedere tabel een primaire sleutel heeft. In de eerste oplossing is WerknemerID de refererende sleutel, in de tweede oplossing is BureautafelID de refererende sleutel. Opmerking In sommige gevallen kunnen de tabellen coresponderend met de entiteiten waartussen de één-opéén relatie zonder attributen ligt, teruggebracht worden tot één tabel. Dit kan enkel als tenminste in één van de tabellen geen enkel attribuut als primaire sleutel kan fungeren, anders krijg je immers transitieve afhankelijkheid. Het is vooral de optionaliteit die zal bepalen of het werken met één enkele tabel zinvol is. Veel lege velden bijhouden heeft geen zin Eén-op-veel relatie Beschouw dezelfde relatie als hierboven maar waarbij het mogelijk is dat een werknemer meerdere bureautafels toegewezen krijgt. Werknemer Bureautafel gebruikt De omzetting gebeurt op dezelfde manier als bij een één-op-één relatie maar nu wordt de primaire sleutel van de tabel langs de één-kant toegevoegd als refererende sleutel aan de tabel aan de veelkant. VVKSO Werkgroep Handel Database-ontwerp - pagina 47

48 Werknemer Bureautafel WerknemerID Familienaam Voornaam 1 BureautafelID Locatie Type WerknemerID De één- en de veel-kant worden respectievelijk aangeduid door de symbolen 1 en Veel-op-veel relatie Beschouw weer dezelfde relatie maar breid ze verder uit door toe te laten dat eenzelfde bureautafel gedeeld wordt door verschillende werknemers. Werknemer gebruikt Bureautafel Om deze relatie te vertalen naar een relationeel ontwerp, creëer je nog een extra tabel naast de tabellen die de entiteiten voorstellen. Deze derde tabel geef je als attributen de primaire sleutel van beide tabellen (deze tabel bevat dus enkel de primaire sleutels uit beide tabellen). Ze vormen samen de primaire sleutel van de nieuwe tabel en elk apart een refererende sleutel voor een entiteit-tabel. Iedere entiteit-tabel heeft een één-op-veel relatie met de bijkomende derde tabel. Werknemer WerknemerBureautafel Bureautafel WerknemerID Familienaam Voornaam 1 WerknemerID BureautafelID 1 BureautafelID Locatie Type 4.3 Relaties met attributen Eén-op-één relatie Voorbeeld relatie: entiteiten: definitie: attributen: Huwt Man(ManID, Familienaam, Voornaam ) en Vrouw(VrouwID, Familienaam ) Een man huwt een vrouw. Een man kan maar één vrouw huwen en omgekeerd. Niet elke man en niet elke vrouw huwt. Huwelijksdatum, NaamGetuige1, NaamGetuige2 Man huwt Vrouw De relatie wordt vertaald in een bijkomende tabel. Pagina 48 Database-ontwerp

49 Man Huwelijk Vrouw ManID Familienaam Voornaam 1 1 Huwelijksdatum NaamGetuige1 NaamGetuige2 VrouwID ManID 1 1 VrouwID Familienaam Voornaam De derde tabel bevat de primaire sleutels van de twee andere tabellen. Vanwege de één-op-één relatie kan, als primaire sleutel van de tabel die met de relatie overeenkomt, de primaire sleutel van één van beide andere tabellen gekozen worden. De attributen van de relatie worden toegevoegd als gewone velden in de derde tabel. Beide relaties zijnvan het type één-op-één Eén-op-veel relatie Voorbeeld relatie: entiteiten: definitie: attributen: Schrijft in Persoon(PersoonID, Familienaam, Voornaam, ) en Cursus(CursusID, Naam, Lesgever, Klaslokaal, ) Een persoon schrijft in voor een cursus. Een persoon kan en moet inschrijven voor één cursus. Inschrijvingsdatum, Inschrijvingsgeld Persoon schrijft in Cursus Verklaar de optionaliteit van deze relatie. Naast de entiteiten, wordt de relatie zelf ook vertaald in een tabel. Deze tabel krijgt als attributen de attributen van de relatie en de primaire sleutels van de entiteit-tabellen. Persoon Inschrijving Cursus PersoonID Familienaam Voornaam 1 1 Inschrijvingsdatum Inschrijvingsgeld PersoonID CursusID 1 CursusID Naam Lesgever Als primaire sleutel van de nieuwe tabel kan de primaire sleutel van de tabel gekoppeld via de éénop-één relatie gebruikt worden. Verklaar Veel-op-veel relatie Beschouw dezelfde relatie waarbij het nu toegestaan is dat een persoon zich inschrijft voor meerdere cursussen. VVKSO Werkgroep Handel Database-ontwerp - pagina 49

50 Persoon Cursus schrijft in Persoon Inschrijving Cursus PersoonID Familienaam Voornaam 1 Inschrijvingsdatum Inschrijvingsgeld PersoonID CursusID 1 CursusID Naam Lesgever Klaslokaal Welke verschillen zijn er met de één-op-veel relatie? De twee entiteiten worden elk omgezet naar een tabel. Er wordt opnieuw gebruik gemakt van een derde tabel die de primaire sleutels bevat van beide tabellen plus de attributen van de relatie. Hoe de primaire sleutel bepalen in de derde tabel? Zoek een functionele afhankelijkheid van de vorm X is f.a. van Y, of X is f.a. van de combinatie {Y,Z}. Als je geen enkele functionele afhankelijkheid vindt, voeg dan zelf een nieuw veld toe dat je primaire sleutel maakt. Zoals je opmerkt zijn de velden Inschrijvingsdatum en Inschrijvingsgeld functioneel afhankelijk van de combinatie {PersoonsID, CursusID}. Daarom mag je de combinatie PersoonID en CursusID instellen als primaire sleutel in de derde tabel Overzicht Relaties zonder attributen Eén-op-een relatie tabellen (entiteiten) PS van ene tabel (keuze) toevoegen als RS aan andere tabel in sommige gevallen terugbrengen tot één tabel Eén-op-veel relatie tabellen (entiteiten) PS van de één-kant toevoegen als RS aan de veel-kant Veel-op-veel relatie tabellen (entiteiten & nieuwe tabel) in de nieuwe tabel opnemen van PS van de 2 entiteit-tabellen, 2 sleutels vormen samen PS nieuwe tabel Relaties met attributen Eén-op-een relatie tabellen (entiteiten & relatie) PS van de entiteit-tabellen toevoegen aan nieuwe tabel als RS samen met de attributen van de relatie Pagina 50 Database-ontwerp

51 PS van de nieuwe tabel: één van de PS van de entiteit-tabellen (keuze) Eén-op-veel relatie tabellen (entiteiten & relatie) PS van de entiteit-tabellen toevoegen aan nieuwe tabel als RS samen met de attributen van de relatie PS van de nieuwe tabel: PS van de entiteit-tabel aan de één-kant Veel-op-veel relatie tabellen (entiteiten & relatie) PS van de entiteit-tabellen toevoegen aan nieuwe tabel als RS samen met de attributen van de relatie PS van de nieuwe tabel: samengestelde sleutel PS van de entiteit-tabellen 4.4 Uitgewerkt voorbeeld De gegevensgroepen behorende bij de entiteiten in het datamodel voor Computerpark zijn reeds genormaliseerd in vorig hoofdstuk. Alle resulterende gegevensgroepen zullen omgezet worden in een tabel. Dit leidt tot de volgende tabellen: Randapparaat, Software, Licentie, Verbruiksproduct, Leverancier, Computer, HardeSchijf, Extra, HardeSchijfComputer, ExtraComputer, Diskettestation, CD_DVD, Beeldscherm, Klavier, Muis, Geluidskaart, Netwerkkaart. De relaties tussen deze tabellen zijn af te leiden uit het datamodel of volgen uit de normalisering. Het datamodel bevat drie veel-op-veel relaties en vijf relaties met attributen nl. Levertx en Draait op. Deze moeten nog omgezet worden naar tabellen en relaties voor het relationeel model. Is verbonden met Veel-op-veel relatie zonder attributen. Computer Verbinding Randapparaat ComputerID 1 ComputerID RandapparaatID 1 RandapparaatID Levertx Het gaat hier om 4 verschillende relaties die verschillende entiteiten verbinden. Drie van de relaties zijn één-op-veel en de vierde is veel-op-veel. Elke relatie heeft dezelfde attributen. Naam Definitie Verplicht Leveringsdatum datum waarop goederen geleverd werden Ja Aankoopprijs prijs per stuk Ja Opmerking opmerking i.v.m. de levering VVKSO Werkgroep Handel Database-ontwerp - pagina 51

52 Levert1, levering computers (één-op-veel) De relatie wordt vertaald in een tabel: LeveringComputer. Computer LeveringComputer Leverancier ComputerID 1 1 Leveringsdatum Aankoopprijs Opmerking LeverancierID ComputerID 1 LeverancierID Als meerdere computers bij dezelfde levering aan dezelfde prijs geleverd worden, krijg je dikwijls dezelfde waarden voor de attributen en de tabel LeveringComputer. In dat geval kun je aan de levering een identificatie toekennen en pas je de tabellen aan. Computer LeveringComputer Leverancier ComputerID LeveringID 1 LeveringID Leveringsdatum Aankoopprijs Opmerking LeverancierID 1 LeverancierID Hoe voorzie je deze situatie in het datamodel? Vertaal het aangepaste datamodel naar een databaseontwerp. Bekom je hetzelfde resultaat? Levert2: levering randapparaten (één-op-veel) Idem. Levert3: levering software (één-op-veel) De relatie wordt vertaald in een tabel LeveringSoftware. Software LeveringSoftware Leverancier SoftwareID 1 1 Leveringsdatum Aankoopprijs Opmerking LeverancierID SoftwareID 1 LeverancierID Tussen de tabellen Software en LeveringSoftware bestaat een één-op-één relatie. Deze kan in sommige gevallen teruggebracht worden tot één tabel. Omdat een bepaald softwarepakket (installatie cd's) slechts in één exemplaar en door één leverancier geleverd wordt, plaatsen we de attributen van de levering bij in de tabel Software. Is dit een goed idee als er veel freeware gebruikt wordt? Verklaar je antwoord. Pagina 52 Database-ontwerp

53 Software SoftwareID LeveranciersID Leveringsdatum Aankoopprijs Opmerking 1 Leverancier LeverancierID Levert4: levering verbruiksproducten Hier moet er met een aparte tabel gewerkt worden omdat het om een veel-op-veel relatie gaat. Verbruiksproduct LeveringVerbruiksProd Leverancier VerbruiksproductID 1 LeveringID Leveringsdatum Aankoopprijs Opmerking LeverancierID VerbruiksproductID 1 LeverancierID In principe vormen LeverancierID, VerbruikproductID en Leveringsdatum samen een samengestelde primaire sleutel. Hier is de voorkeur gegeven aan een surrogaatsleutel LeveringsID. Draait op Deze relatie is een veel-op-veel relatie. Er zal dus met een bijkomende tabel moeten gewerkt worden. De attributen van Draait op zijn: Naam Begindatum Einddatum Opmerking Definitie datum installatie datum verwijdering opmerking, bijvoorbeeld Service Release die geïnstalleerd is, optionele componenten Computer DraaitOp Software ComputerID LeveringID 1 ComputerID SoftwareID Begindatum Einddatum Opmerking 1 SoftwareID Opmerking: mogelijk bevatten alle computers in hetzelfde lokaal ook dezelfde software. Is in dit geval deze oplossing een goede oplossing? Verklaar je antwoord. Pas het datamodel en het dataontwerp aan aan deze situatie. VVKSO Werkgroep Handel Database-ontwerp - pagina 53

54 Connecteert Connecteert is een speciale relatie omdat ze een entiteit verbindt met zichzelf. Ook hier is een supplementaire tabel nodig. Randapparaat RandapparaatID 1 Connectie RandapparaatID1 RandapparaatID2 Vanwege het speciale karakter van tabel Connectie zal er steeds bijzondere aandacht moeten besteed worden aan query's en filters die hiermee gemaakt worden. 4.5 Oefeningen Zet de datamodellen van de oefeningen uit het vorige hoofdstuk om naar databaseontwerpen voor een RDBMS. Pagina 54 Database-ontwerp

55 5 Een database implementeren Componenten van de database Gegevenstypes in Sql Column Properties 5.1 Een SQL-databank aanspreken in Visual Web Developer Microsoft SQL Server 2008 is de grote broer van MS Access. Je kunt er grote client-server toepassingen mee maken. Raadpleeg onderstaande website voor uitgebreide informatie. Je hoeft niet over de volledige Microsoft SQL Server toepassing te beschikken om toch met SQLdatabases te kunnen werken. De Microsoft SQL Server 2008 Express Edition kun je gratis te downloaden: Je kunt tijdens de installatie van Visual Basic Express Edition 2008 of Web Developer Express Edition 2008 aanklikken of Microsoft SQL Server Express Edition 2008 mee dient geïnstalleerd te worden. Start Visual Web Developer Express Edition 2008 (VWD) op. Open de Database Explorer via het menu View. Kies in de knoppenbalk van Database Explorer voor de knop Connect to Database. De SQL Server staat standaard ingesteld. Klik op Change indien je een Accessdatabase wilt koppelen. Zoek via de Browse-knop de SQL-database SportclubSQL.mdf op. Klik eventueel op de knop Test Connection. Er verschijnt: VVKSO Werkgroep Handel Database-ontwerp - pagina 55

56 Objecten voor het maken van een databaseverbinding: Namespace Type Database System.Data.Odbc OdbcConnection Alle databases die Odbc ondersteunen (verouderd) System.Data.OleDb OleDbConnection Alle databases die OleDb ondersteunen (Access) System.Data.OracleClient OracleConnection Oracle System.Data.SqlClient SqlConnection SQL Server Open de databank SportclubSQL.mdf. In de Database Explorer verschijnen de componenten van de de database. Dubbelklik op de verzameling Tables. Componenten van de database: Map Database Diagrams Tables Views Stored procedures Functions Synonyms Types Pagina 56 Verklaring Databasediagrammen voegen op zich niets toe aan een database, maar zijn er om de tabellen en de relaties tussen de tabellen te visualiseren. De tabellen in de database. Een view is een weergave van gegevens in de database, een soort virtuele tabel. De view kan gegevens uit 1 of meerdere tabellen weergeven. Dit zijn functies die je kunt uitvoeren. Dit kan zijn om gegevens op te vragen, toe te voegen, te wijzigen of te verwijderen. Parameters zijn toegelaten. Stored Procedures worden veel gebruikt om een toepassing niet direct op tabellen te laten uitvoeren. Daardoor is de onderliggende tabelstructuur gemakkelijker te veranderen, omdat je alleen maar de Stored Procedures dient te veranderen en de code van de toeassing kan blijven. Werken met Stored Procedures is ook veiliger, omdat ze eerst kunnen controleren of hetgeen de toepassing wil doen wel toegelaten is. Kunnen in een view of stored procedure gebruikt worden. Functies kun je niet direct vanuit een toepassing gebruiken, maar zijn er om de sql-code van views en stored procedures te vereenvoudigen en er voor te zorgen dat je niet steeds dezelfde code op verschillende plaatsen dient te schrijven. Synoniemen voor objecten (tabellen, views, stored procedures) in de database. Synoniemen maken het mogelijk om de objecten te herbenoemen zonder dat toepassingen hier last van ondervinden. Standaard zijn er een aantal types die kolommen in een database kunnen hebben. Je kunt ook types zef definiëren via de map Types. Database-ontwerp

57 Assemblies Sql-server biedt de mogelijkheid om.net functies aan te roepen in een query of stored procedure, zodat je functies in VB of C# kunt maken in plaats van in Sql. Als je een functie wilt gebruiken moet je de assembly waarin deze zit registreren in Sql-server. Dat doe je in de map Assemblies Bekijk de inhoud van de tabel tblleden via snelmenu, Show Table Data. Bekijk de structuur van tblleden (of dubbelklik op de tabel). Test of je veranderingen kunt aanbrengen in de velden van tblleden. 5.2 Een SQL-databank aanmaken in VWD Express 2008 Creëer volgende sql-database PatientenSQL.mdf, ontwerp de structuur van de tabel tblpatiëntgegevens en plaats er volgende gegevens in: VVKSO Werkgroep Handel Database-ontwerp - pagina 57

58 Werkwijze: Maak de website Patienten aan. Er wordt onder meer een map App_Data aangemaakt. Open in de website het snelmenu van de map App_Data en kies Add New Item Kies SQL Server Database en geef deze de naam PatientenSQL.mdf. Indien de database aangemaakt wordt in de map App_Data is deze automatisch gekoppeld aan de website. Je kunt ook het snelmenu van het project Patienten opvragen en kiezen voor Add New Item. Er volgt dan: Bemerk dat ook de database SportclubSQL.mdf beschikbaar blijft in de nieuwe website. Dit is het gevolg van het feit dat deze database niet werd geplaatst in de eigen App_Data-map. Het is zeer belangrijk dat je goed nadenkt voor je de structuur vastlegt. Later wijzigingen aanbrengen, kan behoorlijk ingewikkeld zijn en bovendien soms leiden tot gegevensverlies! Kies het snelmenu van Tables en selecteer Add New Table en maak volgende structuur aan (zie bijlage 3 voor een overzicht van de belangrijkste types in SQL): Pagina 58 Database-ontwerp

59 Enkel de velden Geboortedatum, Lengte en Gewicht mogen leeg gelaten worden. De lengte is een geheel getal (smallint), het gewicht kan een decimaal gedeelte bevatten (float). Plaats van het veld PatientID de Column Properties (Is Identity) op Yes zodat dit veld autonummering wordt. De Identity Increment geeft aan dat de waarde voor iedere nieuwe rij met 1 verhoogd wordt en de Identity Seed geeft aan dat de teller bij 1 begint. Maak van PatientID de sleutel en sla de tabel als tblpatientgegevens op. Let steeds op het volgende: - gebruik betekenisvolle veldnamen. Uit de naam van een veld moet je de inhoud ervan kunnen afleiden; - vermijd te lange veldnamen en gebruik zo weinig mogelijk spaties. Dit laatste is vooral van belang als je vaak in expressies of code naar objecten verwijst. Voer bovenstaande records in. Vul voor de onderstaande velden het gekozen gegevenstype in en ga na waarom die keuze gemaakt werd. Gebruik eventueel de helpfunctie voor meer uitleg over de verschillende types (Help, Search, trefwoord: types in sql). Veldnaam Werknemer-ID BrutoWedde Auto InDienst Foto Bijzonderheden Gegevenstype Gebruik steeds het gepaste gegevenstype. Een postnummer is bijvoorbeeld van het tekentype, ook al bevat het enkel cijfers, omdat je er niet mee rekent. 5.3 Relaties tussen tabellen De gegevens in de verschillende tabellen kunnen naar elkaar verwijzen via een gemeenschappelijk veld. Beide velden dienen van hetzelfde type te zijn (benaming mag verschillen). Bij referentiële integriteit kan een record van de tabel aan de veelkant maar ingevuld worden als er een overeenkomstige sleutel is in de tabel aan de éénkant. Zodoende wordt aan invoercontrole gedaan en wordt verhinderd dat onbetrouwbare gegevens in een tabel worden opgeslagen wat betekent: niet-bestaande referenties kunnen dan niet ontstaan; gegevens waarnaar verwezen wordt kunnen niet verwijderd worden; sleutelwaarden die veranderen kunnen eventueel (trapsgewijs) aangepast worden. Relaties kun je maken met de Table designer of met behulp van een diagram. VVKSO Werkgroep Handel Database-ontwerp - pagina 59

60 5.4 Table designer Klik in de werkbalk Table Designer op het pictogram Relationships. Als oefening werken we met de databank SportclubSQL.mdf en worden relaties gelegd tussen de tabellen tblleden en tblpostnummers, tussen tblleden en tblinschrijvingen en tussen tblinschrijvingen en tblsporttakken. Gemeenschappelijk veld tussen de tabellen tblpostnummers en tblleden: Primary key table tblpostnummers Key: Stad tblleden Foreign key table Refererende sleutel: Gemeente Je vertrekt van de tabel met de refererende sleutel (foreign key) om de relatie te leggen met een primaire sleutel in een andere tabel. Kies het snelmenu van tabel tblleden en kies voor Open Table Definition of Show Tabel Data. Kies in Table Designer de knop Relationships. Het dialoogvenster Foreign Key Relationships verschijnt. Kies Add. Elke relatie krijgt een naam. Je kunt deze zelf geven of de door het systeem gegeven naam aanvaarden. Om de relatie in te stellen (of te wijzigen) gebruik je de knop bij Tables And Colums Specification. Pagina 60 Database-ontwerp

61 Vul de gegevens in zoals hierboven en klik OK. Kies Close. Er wordt gevraagd om de wijzigingen te bewaren. Zoek het gemeenschappelijk veld tussen de andere tabellen. tblleden Key: Primary key table tblinschrijvingen Foreign key table Refererende sleutel: Primary key table Foreign key table Key: Refererende sleutel: Leg de ontbrekende relaties. VVKSO Werkgroep Handel Database-ontwerp - pagina 61

62 5.4.1 Diagrammen Relaties tussen tabellen kunnen ook gelegd worden door gebruik te maken van een diagram. Om dit te kunnen uitvoeren wissen we eerst de relaties die werden gemaakt via Designer Table. Selecteer het onderdeel Database Diagrams van SportclubSQL.mdf en kies Add New Diagram in het snelmenu. Er verschijnt: Voeg alle tabellen toe. De relaties die al bestaan worden in het diagram door verbindingslijnen voorgesteld. Je legt een relatie tussen twee tabellen door de primaire sleutel van één tabel te slepen naar een refererende sleutel van een andere tabel (om bestaande relaties te bewerken: selecteer de relatie en druk op F4.) Leg de relaties tussen de tabellen zoals hierboven. Primaire sleutel tblpostnummers(stad) tblleden(nummer) tblsporttakken(taknr) Refererende sleutel tblleden(gemeente) tblinschrijvingen(lidnr) tblinschrijvingen(taknr) Om relaties te bewerken kies je in het snelmenu van een afgebeelde tabel: Relationships... Pagina 62 Database-ontwerp

63 Bij het sluiten van het relatievenster bevestig je de veranderingen. Daarna wordt de naam gevraagd van het diagram. Na klikken op OK, volgt: 5.5 Check constraints Om domein integriteit te ondersteunen maakt SQL server onder meer gebruik van check constraints. In PatientenSQL.mdf, tabel tblpatientgegevens wil men de maximale lengte beperken tot 250 (cm) en het maximaal gewicht tot 200 kg. Voor beide velden mogen uiteraard geen negatieve waarden ingevoerd worden. Klik op het pictogram Manage Check Constraints in Table Designer van tblpatientgegevens. Klik op Add. Voeg de beperking toe via Expression: VVKSO Werkgroep Handel Database-ontwerp - pagina 63

64 Leg de beperkingen op voor Lengte en Gewicht. Test een beperking uit. Er volgt voor een foutief ingevoerde lengte: In uitdrukkingen zoals Postnummer >= 1000 And Postnummer <=9999 wordt een karakterstring (Postnummer) vergeleken met een gehele waarde. Sql laat het gebruik van een impliciete omzetting van het karaktertype toe. 5.6 Standaardwaarden Standaardwaarden (defaults) vormen een toevoeging om data integriteit te ondersteunen. We beschouwen database SportclubSQL.mdf en geven een standaardwaarde aan de velden Gemeente en Geslacht van tblleden. Je doet dit in de Table Designer. De meeste leden komen uit Ieper en zijn van het mannelijk geslacht. Deze gegevens plaatsen we als standaardwaarden. Voer eerst een check constraint in tblleden voor het veld Geslacht: enkel V of M zijn toegestaan. Klik op het pictogram Manage Check Constraints in Table Designer van tblleden. Selecteer het veld Gemeente en vul voor Default Value or Binding de standaardwaarde in. Pagina 64 Database-ontwerp

65 Selecteer het veld Geslacht en vul de standaardwaarde M in. Stel in tblinschrijvingen de standaardwaarde voor het veld Betaald in op False. 5.7 Indexen Inleiding Een index levert een opgeslagen structuur. SQL Express 2008 bepaalt zelf wanneer en welke index gebruikt zal worden voor het selecteren van gegevens. Door het maken van indexen in tabellen kun je de snelheid van zoekopdrachten in de tabel spectaculair verhogen. Indexen nemen uiteraard ruimte in op opslagmedia en bij het toevoegen en verwijderen van records moeten de indexen ook bijgewerkt worden. Een index vertraagt dit soort van opdrachten. Er moet dus altijd een afweging gebeuren tussen voor- en nadelen van de ingreep. SQL server kent twee soorten indexen: clustered en non-clustered. Een geclusterde index zorgt ervoor dat de rijen in de tabel fysiek geordend worden volgens de index. Er kan dus in een tabel slechts één geclusterde index bestaan. Geef je een tabel een primaire sleutel, dan wordt automatisch een geclusterde index voor deze sleutel aangemaakt. Een niet-geclusterde index kun je maken voor elk veld of combinatie van velden. Bij voorkeur kies je een index voor velden waarvoor veel selectieopdrachten bestaan. In een niet-geclusterde index voor een heap (een tabel zonder geclusterde index) wordt verwezen naar een record door zijn rijnummer in de tabel. In het andere geval wordt verwezen naar de sleutelwaarde in de geclusterde index Een index aanmaken We maken een niet-geclusterde index aan op het veld Gemeente voor de tabel tblleden van database SportclubSQL.mdf. Selecteer het veld Gemeente. Klik op het pictogram Manage Indexes and Keys in Table Designer van tblleden. Klik op Add. Vul de gegevens in zoals hierboven. VVKSO Werkgroep Handel Database-ontwerp - pagina 65

66 5.8 Tabelaanpassingen Rijen aanpassen Velden of rijen verwijderen Selecteer de rij en - druk op de Delete-toets - snelmenu en Delete Column Velden of rijen verplaatsen Selecteer de rij met de rijknop. Sleep dan de geselecteerde rij naar de gewenste positie. Velden of rijen invoegen Selecteer de rij waarvoor je een veld wenst in te voegen en - Snelmenu en kies voor Insert Column Primaire sleutel Eén veld of meerdere velden als primaire sleutel instellen: - selecteer het veld of de meerdere velden - kies het snelmenu en klik op Set primary Key of - klik op het pictogram van de werkbalk Table Designer. Het kiezen van een primaire sleutel heeft volgende voordelen: je kunt nooit twee records met dezelfde waarde voor dat veld (of combinatie van velden) tegenkomen; het sorteren en opzoeken volgens dit veld gaat aanzienlijk sneller; de tabel wordt gerangschikt volgens de waarde van de primaire sleutel. 5.9 Oefeningen 1 Hoeveel primaire sleutels kan een tabel hebben? 2 Een primaire sleutel bestaat uit meerdere velden. Hoe kun je die primaire sleutel toekennen? Hoe ga je praktisch te werk als deze velden niet naast elkaar liggen? Pagina 66 Database-ontwerp

67 6 Speciale technieken 6.1 Join-eigenschappen Een tabel koppelen met zichzelf Beschouw de database ArtemisSQL.mdf. Bij het koppelen van een tabel met zichzelf maak je gebruik van een Alias. Voer de volgende SELECT-instructie uit. SELECT TOP (100) PERCENT dbo.tblwerknemers.familienaam, dbo.tblwerknemers.voornaam, tblwerknemers_1.familienaam AS Expr1, tblwerknemers_1.voornaam AS Expr2 FROM dbo.tblwerknemers INNER JOIN dbo.tblwerknemers AS tblwerknemers_1 ON dbo.tblwerknemers.brutowedde < tblwerknemers_1.brutowedde ORDER BY dbo.tblwerknemers.familienaam, dbo.tblwerknemers.voornaam Je bent hier natuurlijk verplicht volledige kolomnamen te gebruiken omdat er verwarring mogelijk is. Wat vergelijkt deze SELECT-instructie? Bewaar de view: Verbinding op meer dan 1 veld Maak een view ZelfdeStraatView van de klanten die in dezelfde straat wonen. Dezelfde straatnamen kunnen in meerdere gemeenten voorkomen. Er moet dus een verbinding gemaakt worden zowel op Straat als op Gemeente. Om dubbele gegevens te vermijden zorgen we ervoor dat - per rij - de eerste naam alfabetisch kleiner is dan de tweede naam. VVKSO Werkgroep Handel Database-ontwerp - pagina 67

68 De volgende SQL-instructie toont het gevraagde: SELECT TOP (100) PERCENT dbo.tblklanten.naam, dbo.tblklanten.straat, dbo.tblklanten.gemeente, tblklanten_1.naam AS Expr1, tblklanten_1.straat AS Expr2, tblklanten_1.gemeente AS Expr3 FROM dbo.tblklanten INNER JOIN dbo.tblklanten AS tblklanten_1 ON dbo.tblklanten.gemeente = tblklanten_1.gemeente AND dbo.tblklanten.straat = tblklanten_1.straat AND dbo.tblklanten.naam < tblklanten_1.naam ORDER BY dbo.tblklanten.naam Meer dan 2 tabellen gebruiken Maak de view KostprijsPerOrderView die de kostprijs van de producten per order weergeeft. De INNER JOIN s zijn genest. Pas de SELECT-instructie aan zo dat per order de klantnaam getoond wordt en het factuurbedrag weergegeven wordt. Hou hierbij rekening met een winstpercentage van 33 % en de korting. Rangschik volgens de klantnaam. Voeg de tabel tblklanten bij via Add Table. Pagina 68 Database-ontwerp

69 Bewaar als FactuurbedragPerOrderView Oefeningen Vooraf: beschouw Stamboom.mdb. Zet de database om in de Sql-databank StamboomSQL.mdf. Om een migratie naar SQL Server 2008 uit te voeren kun je volgende tool downloaden: C89C 4641 BEBB 6D04476EC1BA&displaylang=en Na registratie kun je de migratie uitvoeren. De data komt steeds terecht in de DATA-map van Microsoft SQL server. Vergeet de queries niet mee te migreren. Inhoud van tblfamilieleden (via snelmenu van de tabel, Show Table Data): VVKSO Werkgroep Handel Database-ontwerp - pagina 69

70 Verklaring: de vader van Abeels Aldegonde is persoon met ID 2 d.i. Abeels Alex. Haar moeder is Martens Mia. 1. Maak een view ZelfdeStraatView van familieleden die in dezelfde straat wonen: Dezelfde straatnamen kunnen in meerdere gemeenten voorkomen (zie Keizerlei in Antwerpen en Tongeren). Er moet dus een verbinding gemaakt worden zowel op Straat als op Gemeente. Oplossing: Kun je er voor zorgen dat de dubbele namen verdwijnen? Je hoeft slecht 1 kleine aanpassing te doen! Verdere uitwerking Maak nu StamboomView die in de eerste kolom de namen plaatst van alle familieleden uit de tabel. Als de vader of moeder voorkomt in de tabel wordt de naam afgedrukt. Hints: - Voeg in de view de tabel tblfamilieleden driemaal toe en koppel de tabellen zodat je een relatie kunt leggen voor de gegevens van de vader en een relatie voor de gegevens van de moeder. - Pas ook de join-eigenschappen aan. Pagina 70 Database-ontwerp

71 Resultaat: 6.2 Niet-genormaliseerde gegevensgroepen normaliseren Gegevens worden in rijen herhaald Beschouw de eerder besproken tabel tblbestellingen van Sql-database AankopenSQL.mdf. De tabel bevat nu geen duplicaten meer en elke cel is atomair. We werken NV1 uit. In de records komen gegevens voor die in rijen worden herhaald. De gegevens die herhaald worden dienen we te splitsen in twee tabellen. We leggen een relatie tussen beide tabellen aan de hand van een gemeenschappelijk veld. Hoe de tabel splitsen in twee tabellen (er zijn andere mogelijkheden)? Stap 1: maak een selectiequery met daarin de velden waarvan de inhoud in de rijen wordt herhaald (NaamLev, Tel, Straat, Postc en Plaats). Ga naar de eigenschappen van de query en vraag enkel de unieke waarden op (= Distinct Values). Sorteer eventueel op NaamLev. We bekomen de Sql-opdracht: SELECT DISTINCT NaamLev, Tel, Straat, Postc, Plaats FROM tblbestellingen ORDER BY NaamLev Verander de selectiequery via Change Type in een tabelmaakquery Make Table Geef de aan te maken tabel een gepaste naam, in ons geval tblleveranciers. VVKSO Werkgroep Handel Database-ontwerp - pagina 71

72 Deze tabel wordt de tabel aan de éénzijde. Voer de query uit Controleer de inhoud van de aangemaakte tabel (snelmenu van tblleveranciers, Show Table Data): Stap 2: ga naar het tabelontwerp van tblleveranciers (dubbelklik op de tabel) en voeg een Autonummeringsveld Id toe. Verander de Column Properties (Is Identity) in onderdeel Identity Specification in Yes. Increment 1 betekent dat de stapwaarde 1 is, Seed betekent startwaarde 1. Maak dit veld sleutelveld. Stap 3: ga naar het oorspronkelijke tabelontwerp en voeg een veld toe (bv LevNummer) van het type numeriek int (voor verdere types: zie bijlage). Stap 4: ontwerp een nieuwe query gebaseerd op beide tabellen. Leg in het queryscherm een relatie tussen een veld uit de tabel aan de éénzijde en een veld uit de oorspronkelijke tabel waarvan de inhoud overeenstemt. In de één-tabel moet de inhoud van dit veld uniek zijn. Plaats nu het veld LevNummer in het queryrooster. Dit veld is nog leeg. Wijzig de query in een bijwerkquery (Update). Pagina 72 Database-ontwerp

73 Er verschijnt: en vul bij New Value het volgende in: Id. Voer de query uit. Er verschijnt: Test of het veld Nummer van tblbestellingen de correcte leveranciersnummers bevatten. Stap 5: verwijder in de hoofdtabel tblbestellingen alle velden (behalve het veld LevNummer) die voorkomen in tblleveranciers. Het veld LevNummer mag niet worden verwijderd omdat het nodig is om de relatie tussen de twee tabellen te garanderen. Stap 6: leg een relatie tussen beide tabellen via de knop Relationships. VVKSO Werkgroep Handel Database-ontwerp - pagina 73

74 6.2.2 Gegevens worden in kolommen herhaald We werken de normalisatie uit aan de hand van database ElzaSQL.mdf. Hierin vind je de niet genormaliseerde tabel tblnietgenormaliseerd. In deze tabel komen meerdere kolommen voor die worden herhaald. Deze kolommen hebben inhoudelijk dezelfde gegevens. We splitsen bijgevolg tblfacturen in twee tabellen. Een tabel splitsen in twee tabellen kan als volgt: (er zijn andere mogelijkheden): Stap 1: in tblnietgenormaliseerd moet een veld met unieke waarden (sleutelveld) aanwezig zijn om later een relatie te kunnen leggen. Indien er nog geen sleutel is, voeg je een nieuw autonummeringsveld toe en maak je van dit veld een sleutelveld. Vermits tabel tblnietgenormaliseerd reeds een sleutelveld heeft, namelijk Factuurnummer hoef je hier verder niets te doen. Stap 2: kopieer de tabel tblnietgenormaliseerd (via de actiequery Make Table en geef het vb. de naam tblfacturen. In het tabelontwerp van deze nieuwe tabel verwijder je alle kolommen die meerdere malen voorkomen. De tabel aan de éénzijde is nu in orde volgens NV1. Stap 3: maak in het databasevenster een kopie van de tblnietgenormaliseerd en wijzig de naam in een gepaste naam, bv. tblbestellingblok1. Ga naar het tabelontwerp van deze tabel en verwijder alle kolommen behalve het sleutelveld en het eerste blok van de herhalende gegevens. Wijzig de instellingen van het sleutelveld (geen sleutelveld, geen autonummering, niet geïndexeerd). Het ontwerp van de tabel aan de veelzijde is nu in orde. Stap 4: maak in het databankoverzicht opnieuw een kopie van de hoofdtabel en wijzig de naam in een gepaste naam, bv. tblbestellingblok2. Ga naar het tabelontwerp en verwijder alle kolommen behalve het sleutelveld en het tweede blok van de herhalende gegevens. Wijzig desnoods de veldnamen in tblbestellingblok2 zodat ze identiek zijn aan de veldnamen die gebruikt worden in de tblbestellingblok1 (dit vergemakkelijkt de te maken toevoegquery maar is niet noodzakelijk). Maak een toevoegquery waarin alle overgebleven velden staan en voeg deze records toe aan tblbestellingblok1. Voer de query uit. Herhaal stap vier indien er nog herhalende blokken voorkomen in de hoofdtabel (derde blok, vierde blok). Stap 5: verwijder de oorspronkelijke tabel en tblbestellingblok2 t/m tblbestellingblok4. Behoud tblfacturen en tblbestellingblok1. Wijzig de naam tblbestellingblok1 in tblbestelling. Verwijder in tblbestelling de records waarvan enkel het vroegere sleutelveld is ingevuld (met behulp van een verwijderquery). Stap 6: leg een relatie tussen de tabellen tblfacturen en tblbestelling. Hoe moet het nu verder voor tblartikelen en tblklanten? Leg alle relaties tussen de 4 tabellen. Pagina 74 Database-ontwerp

75 7 Bijlagen 7.1 Bijlage 1. Een bestaande Access-databank converteren naar een SQL-databank Je kunt een MS Access database transformeren naar een Microsoft SQL Server database met behulp van de Wizard Upsize van MS Access 2007 Ook in Access 2003 kun je bestaande Access-bestanden converteren naar SQL-databanken. Open de databank Sportclub.mdb in Microsoft Office Via de menukeuze Extra, Databasehulpprogramma s, Wizard Upsize start je de wizard voor deze conversie. Volg deze wizard. De SQL databank krijgt standaard de naam van de Access-databank gevolgd door SQL. In onderstaande nota s wordt de volledige werkwijze voor MS Access 2007 overlopen. Open in Microsoft Access 2007 de databank Sportclub.mdb. Activeer de menu-optie Hulpmiddelen voor databases en vervolgens SQL Server. De Wizard Upsize verschijnt. Kies Nieuwe database maken en klik Volgende. VVKSO Werkgroep Handel Database-ontwerp - pagina 75

76 Zoals je bemerkt krijgt de nieuwe SQL-databank standaard de naam van de Access-databank gevolgd door SQL. Klik op Volgende. Exporteer alle tabellen en klik op Volgende. Klik op de knop Volgende. Pagina 76 Database-ontwerp

77 Kies Nieuwe Access-client/servertoepassing maken en klik op Volgende. Met deze laatste twee instellingen vraag je een Access-Project te maken en dat bestand te openen. In een Access-Project kan een SQL-databank worden aangesproken en bewerkt. Hierin maakt Access een verbinding met de databank op de SQL Server. Er volgt nog: Bij deze convertie komt het vaak voor dat aan het ontwerp van een tabel een veld met naam upsize_ts van het type TimeStamp wordt toegevoegd. Je kunt dit veld verwijderen omdat het geen relevante informatie bevat. VVKSO Werkgroep Handel Database-ontwerp - pagina 77

Database-ontwerp. Database-ontwerp. Ondersteuning Informaticabeheer. Marleen Decuyper Ria Van Eysendeyk. Ondersteuning Informaticabeheer

Database-ontwerp. Database-ontwerp. Ondersteuning Informaticabeheer. Marleen Decuyper Ria Van Eysendeyk. Ondersteuning Informaticabeheer Alle rechten voorbehouden. Behoudens de uitdrukkelijk bij wet bepaalde uitzonderingen mag niets uit deze uitgave worden verveelvoudigd, opgeslagen in een geautomatiseerd gegevensbestand of openbaar gemaakt,

Nadere informatie

Als er besloten is een database op te stellen dient men een analyse van de informatiegegevens te volbrengen.

Als er besloten is een database op te stellen dient men een analyse van de informatiegegevens te volbrengen. Normaliseren Een van de voornaamste rollen in een informatie systeem is het bewaren van gegevens en liefst over een lange tijd. Meestal doen we dat door middel van een gegevensbank of databank. Deze gestructureerde,

Nadere informatie

In deze appendix wordt bekeken wat er moet gebeuren voordat

In deze appendix wordt bekeken wat er moet gebeuren voordat Normaliseren A In deze appendix wordt bekeken wat er moet gebeuren voordat een systeem kan worden gedefinieerd. Dit begint met een analyse van de gegevens die de basis vormen. Daarbij wordt gekeken naar

Nadere informatie

Informatie & Databases

Informatie & Databases Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat

Nadere informatie

Cursus Access voor Beginners Hoofdstuk 2

Cursus Access voor Beginners Hoofdstuk 2 Cursus Access voor Beginners Hoofdstuk 2 Handleiding van Auteur: OctaFisH April 2011 handleiding: Cursus Access voor Beginners Hoofdstuk 2 Cursus Access voor Beginners Hoofdstuk 2 Auteur: OctaFisH In deze

Nadere informatie

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober 2010. A. Snippe ICT Lyceum 1

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober 2010. A. Snippe ICT Lyceum 1 Workshop 3x Analytisch vermogen Huiswerk Lestijden 10:00 12:30 Pauze 10:15 10:30 Deze les: Hiëarchische database Relationele database ODBMS Normaliseer stappen Hiëarchische database Elk record in een database

Nadere informatie

Normaliseren voor Dummies

Normaliseren voor Dummies Waarom normaliseren? Normaliseren voor Dummies Gegevensredundantie leidt tot gegevensinconsistentie! Dit cryptisch antwoord betekent het volgende: indien men dezelfde gegevens onnodig herhaaldelijk opslaat

Nadere informatie

9 Werken met meer tabellen (zie ook query s)

9 Werken met meer tabellen (zie ook query s) 9 Werken met meer tabellen (zie ook query s) 9.1 Inleiding werkwijze je moet begrijpen waarom in de praktijk een databank meestal opgebouwd wordt met verschillende tabellen die aan elkaar gekoppeld worden.

Nadere informatie

Leerjaar 1/2 ICT-Academie. Niveau 4. Applicatie ontwikkeling

Leerjaar 1/2 ICT-Academie. Niveau 4. Applicatie ontwikkeling Databases SQL Leerjaar 1/2 ICT-Academie Niveau 4 Applicatie ontwikkeling Auteur: R. Meijerink Datum: Januari 2013 0. Inleiding Databases / SQL In deze lessen wordt je geleerd databases te bouwen in SQL-code.

Nadere informatie

Entiteit Zaken en gebeurtenissen waarvan gegevens moeten worden vastgelegd worden een entiteit genoemd: b.v. mens, voorstelling, auto.

Entiteit Zaken en gebeurtenissen waarvan gegevens moeten worden vastgelegd worden een entiteit genoemd: b.v. mens, voorstelling, auto. Relationele databases SqlServer en Oracle zijn relationele client server databases. De verwerking van de opdrachten vindt plaats op de server. Access is een relationele pc database. De verwerking van de

Nadere informatie

Programmeren met databanken volgens het lagenmodel in C#

Programmeren met databanken volgens het lagenmodel in C# Programmeren met databanken volgens het lagenmodel in C# met Visual Studio en MySQL HA-2267-04 Informaticabeheer Bert Cauwenberg en Lieven Pauwels Werkgroep Handel 2017 Guimardstraat 1, 1040 Brussel Guimardstraat

Nadere informatie

Opleiding SQL / Systeemanalyse IBK ERD. Hogeschool Rotterdam

Opleiding SQL / Systeemanalyse IBK ERD. Hogeschool Rotterdam Opleiding SQL / Systeemanalyse IBK ERD Hogeschool Rotterdam ERD ERD = Entity Relationship diagram is een model of diagram voor het inzichtelijk te maken van een conceptueel datamodel. Het is een visuele

Nadere informatie

Programmeren met databanken volgens het lagenmodel in C#

Programmeren met databanken volgens het lagenmodel in C# Programmeren met databanken volgens het lagenmodel in C# met Visual Studio en MySQL HA-2267-02 Informaticabeheer Bert Cauwenberg en Lieven Pauwels Werkgroep Handel 2016 Guimardstraat 1, 1040 Brussel Guimardstraat

Nadere informatie

Een database voor MEDIAGROEP DE CASE OBJECTTYPEN EN LABELTYPEN

Een database voor MEDIAGROEP DE CASE OBJECTTYPEN EN LABELTYPEN pagina 1 van 9 Een database voor MEDIAGROEP In dit digitale practicum wordt het efficiënt ontwerpen van een eenvoudige database behandeld. Er wordt gebruik gemaakt van een werkwijze, die een aantal jaren

Nadere informatie

Les S-01: De basisbeginselen van SQL

Les S-01: De basisbeginselen van SQL Les S-01: De basisbeginselen van SQL 1.0 Relationele databases en SQL Een database is een bestand waarin gegevens worden opgeslagen in de vorm van tabellen. Zo kan een huisarts met behulp van een database

Nadere informatie

Normaliseren. Er zijn 5 stappen in het normaliseren, maar meestal worden alleen de eerste 3 uitgevoerd.

Normaliseren. Er zijn 5 stappen in het normaliseren, maar meestal worden alleen de eerste 3 uitgevoerd. Inleiding In deze les gaan we de stappen van het normaliseren van nulde normaalvorm (0NV) tot en met de derde normaalvorm (3NV) bespreken aan de hand van een volledig uitgewerkt voorbeeld. De normalisering

Nadere informatie

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010 4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4.1 Starten met MS Access Als je het programma Microsoft Access

Nadere informatie

PROGRAMMA 2011-2012. Vak: informatica..

PROGRAMMA 2011-2012. Vak: informatica.. Vak: informatica.. Laag: Havo-. PROGRAMMA 2011-2012 week leerstof dagen toets overig 34-26.08 zomervakantie Bespreking PTA-404 Deze week: uitreiking van de Praktische Opdracht Programmeren Herhaling theorie

Nadere informatie

Informatie Systeem Ontwikkeling ISO 2R290

Informatie Systeem Ontwikkeling ISO 2R290 Informatie Systeem Ontwikkeling ISO 2R290 docent: Prof. dr. Paul De Bra Gebaseerd op: Database System Concepts, 5th Ed. doel van dit vak kennis van en inzicht in basisbegrippen over informatiesystemen

Nadere informatie

Hoofdstuk. Access wordt ook wel een elektronische kaartenbak. Access 2013, wat kunt u ermee?

Hoofdstuk. Access wordt ook wel een elektronische kaartenbak. Access 2013, wat kunt u ermee? Access 2013, wat kunt u ermee? Access wordt ook wel een elektronische kaartenbak genoemd. Anderen noemen het een programma om een relationele database mee te beheren. De vergelijking met een kaartenbak

Nadere informatie

Normaliseren versie 1.1

Normaliseren versie 1.1 Normaliseren versie 1.1 Datamodellering 27 1 Wat is normaliseren? Data organiseren in tabelvorm, zó dat: er minimale redundantie is update operaties (toevoegen, wijzigen, verwijderen) eenvoudig zijn uit

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

Opdrachten databaseontwikkeling. Niveau 3/4

Opdrachten databaseontwikkeling. Niveau 3/4 Opdrachten databaseontwikkeling. Bij: databaseontwikkeling Access 2000/2002 Niveau 3/4 Opdracht 01. In de bijlage van deze opdrachten wordt stap voor stap aangegeven welke stappen je moet volgen om tot

Nadere informatie

Relationele databases

Relationele databases Relationele databases Normaliseert eer gij begint! Normalisatie is van zeer groot belang bij het ontwikkelen van een database applicatie. De kern van de zaak, de doelstelling : Efficiënt beheer van data.

Nadere informatie

Waarom Access. In de onderstaande afbeelding ziet u een begin van de lijst met cliëntgegevens van de diëtiste.

Waarom Access. In de onderstaande afbeelding ziet u een begin van de lijst met cliëntgegevens van de diëtiste. Waarom Access Voor velen is het verschijnsel van de relationele database een brug te ver. Voor het opslaan en analyseren van gegevens neemt men zijn toevlucht tot Excel. Excel heeft inderdaad een uitgebreid

Nadere informatie

Toets informatica V5 module VIII hfst 1, 2 en 3 februari 2011

Toets informatica V5 module VIII hfst 1, 2 en 3 februari 2011 1) Hieronder staan twee beweringen: I. Het conceptueel model wordt neergelegd in het functioneel-ontwerprapport. II. Tijdens de informatieplanning worden de bedrijfsprocessen in kaart gebracht. 2) Hieronder

Nadere informatie

Databases - Inleiding

Databases - Inleiding Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden

Nadere informatie

Les 10 : Aanmaken van een database (deel2).

Les 10 : Aanmaken van een database (deel2). Les 10 : Aanmaken van een database (deel2). Wat is een database? Een centrale opslagruimte voor gegevens. Alle informatie wordt centraal opgeslagen en kan door iedereen geraadpleegd worden. Voordelen van

Nadere informatie

DATAMODELLERING BASIS UML KLASSEMODEL

DATAMODELLERING BASIS UML KLASSEMODEL DATAMODELLERING BASIS UML KLASSEMODEL Inleiding In dit whitepaper wordt de datamodelleervorm basis UML klassemodel beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen.

Nadere informatie

Databases en SQL Foundation (DBSQLF.NL)

Databases en SQL Foundation (DBSQLF.NL) Databases en SQL Foundation (DBSQLF.NL) EXIN Hét exameninstituut voor ICT ers Janssoenborch - Hoog Catharijne Godebaldkwartier 365 3511 DT Utrecht Postbus 19147 3501 DC Utrecht Nederland T +31 30 234 48

Nadere informatie

EXAMEN juni 2016 Gegevensbanken

EXAMEN juni 2016 Gegevensbanken EXAMEN juni 2016 Gegevensbanken 8 juni 2016 14.00 u. Het examen bestaat uit twee vragen die schriftelijk uitgewerkt worden. Instructies a. De vragen moeten worden opgelost in de volgorde waarin ze genummerd

Nadere informatie

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens Info-books HA40c Toegepaste Informatica Handleiding Deel 40c : Gegevensbeheer en algoritmen in Access Jos Gils Erik Goossens Veldlengte Het maximale aantal tekens dat in een veld kan ingevoerd worden.

Nadere informatie

Zelftest Informatica-terminologie

Zelftest Informatica-terminologie Zelftest Informatica-terminologie Document: n0947test.fm 01/07/2015 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTIE Deze test is een zelf-test, waarmee u

Nadere informatie

Entity-Relationship Diagram (ERD) Modelleren

Entity-Relationship Diagram (ERD) Modelleren Entity-Relationship Diagram (ERD) Modelleren Huub de Beer Eindhoven, 4 juni 2011 Informatiesysteemontwikkeling en modelleren in fasen 1. Gegevensstromen naar en van het systeem: DFD 2. Gegevens die in

Nadere informatie

Databases Ontwerpen en Normaliseren. 5 & 6 Informatica. Ontwerpen van een database volgens de regels van Boyce/Codd

Databases Ontwerpen en Normaliseren. 5 & 6 Informatica. Ontwerpen van een database volgens de regels van Boyce/Codd Databases Ontwerpen en Normaliseren 5 & 6 Informatica Ontwerpen van een database volgens de regels van Boyce/Codd Lic. André JONCKERS 2012-2013 1 Introductie In deze cursus leer je een database ontwerpen.

Nadere informatie

Oefening 1. Bedenk een voorbeeld van een vreemde sleutel die naar de eigen relatie verwijst.

Oefening 1. Bedenk een voorbeeld van een vreemde sleutel die naar de eigen relatie verwijst. Oefening 1 Bedenk een voorbeeld van een vreemde sleutel die naar de eigen relatie verwijst. Oplossing 1 Bijvoorbeeld een werknemer die leiding geeft aan andere werknemers. Oefening 2 Gegeven is de relatie

Nadere informatie

Het omzetten van een ER-diagram naar SQL

Het omzetten van een ER-diagram naar SQL Het omzetten van een ER-diagram naar SQL Huub de Beer Eindhoven, 4 juni 2011 Omzetting ER-diagram naar SQL in twee stappen 1: ER-Diagram relationeel model Onderwerp van hoofdstuk 3 Entiteittype relatie,

Nadere informatie

Cursus Analyse voor Web Applicaties 1. Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML

Cursus Analyse voor Web Applicaties 1. Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML Cursus Analyse voor Web Applicaties 1 Organisatie Opleiding Module Onderwerp Syntra AB Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML Analyse op basis van SDM en UML

Nadere informatie

Database Structuur via menus

Database Structuur via menus Data Dictionary Database Structuur via menus Na het normaliseren en maken van een data dictionary kunnen de tabellen worden ingevoerd in de database. In deze les wordt getoond hoe dit in Access gebeurt.

Nadere informatie

ER-modeling. Datamodellering Wat is ER-modeling?

ER-modeling. Datamodellering Wat is ER-modeling? ER-modeling Datamodellering 2008 1 Wat is ER-modeling? ER-modelleren: top-down benadering bedacht door P. Chen 1976, paper in ACM Transactions on Database Systems Codd (Relationeel Model) aanvankelijk

Nadere informatie

ER-modeling. Wat is ER-modeling? ERD & relationeel model. ER-benadering DMO Datamodellering 2008

ER-modeling. Wat is ER-modeling? ERD & relationeel model. ER-benadering DMO Datamodellering 2008 ER-modeling Datamodellering 2008 1 Wat is ER-modeling? ER-modelleren: top-down benadering bedacht door P. Chen 1976, paper in ACM Transactions on Database Systems Codd (Relationeel Model) aanvankelijk

Nadere informatie

SQL & Datamodelleren

SQL & Datamodelleren SQL & Datamodelleren HVA-CMD-V1-datamodelleren Algemene handleiding bij het lesprogramma 2012-2013 Inhoud Inhoud... 2 Inleiding... 3 Leerdoelen:... 3 Plaats in het leerplan:... 3 Werkwijze:... 3 Lesstof:...

Nadere informatie

Les S-01: De basisbeginselen van SQL

Les S-01: De basisbeginselen van SQL Les S-01: De basisbeginselen van SQL 1.0 Relationele databases en SQL Een database is een bestand waarin gegevens worden opgeslagen in de vorm van tabellen. Zo kan een huisarts met behulp van een database

Nadere informatie

1 Download de database 'bieren.mdb' en bewaar het bestand in c:\werkmap van je computer.

1 Download de database 'bieren.mdb' en bewaar het bestand in c:\werkmap van je computer. DataBase Management & Databasetechnologie We gaan nu aan de slag met het databasemanagementprogramma Access. Zo'n set programma's waarmee je databases kunt maken, beheren en bevragen noemt men ook wel

Nadere informatie

PROGRAMMA 2011-2012. Vak: Informatica..

PROGRAMMA 2011-2012. Vak: Informatica.. Vak: Informatica.. Laag: vwo-. PROGRAMMA 2011-2012 week leerstof dagen toets overig 34-26.08 zomervakantie Bespreking PTA-404 1. Deze week: uitreiking van de Praktische Opdracht Programmeren Herhaling

Nadere informatie

Samen op zoek naar proeven

Samen op zoek naar proeven Samen op zoek naar proeven De handleiding Jens Vanhouwaert jens@vanhouwaert.be 1 Inhoudsopgave 1 Handleiding... 4 1.1 De website... 4 1.2 Algemene werking... 4 1.3 Download de databank... 4 1.3.1 Internet

Nadere informatie

Systeemontwikkeling, Hoofdstuk 3, Tabellen en formulieren

Systeemontwikkeling, Hoofdstuk 3, Tabellen en formulieren 3. Tabellen en formulieren Het Contextdiagram en het Data Flow Diagram geven een globaal ontwerp van het informatiesysteem dat we gaan bouwen. We gaan het ontwerp nu verder detailleren voordat we het daadwerkelijk

Nadere informatie

1. Databanken. Wat is een databank? Verschillende opslagmethodes

1. Databanken. Wat is een databank? Verschillende opslagmethodes 1. Databanken Wat is een databank? Verschillende opslagmethodes Tekst bestanden Spreadsheet Relationele gegevensbanken Relationeel model De gestandaardiseerde opvraagtaal SQL Beheer van een mysql databank

Nadere informatie

DMD-2011 Introductie. Introductie. Opzet van de cursus. Werkwijze per week. Datamodelleren en databases 2011. Twee hoorcolleges in totaal

DMD-2011 Introductie. Introductie. Opzet van de cursus. Werkwijze per week. Datamodelleren en databases 2011. Twee hoorcolleges in totaal Datamodelleren en databases 2011 Introductie Leen Breure 1/33 Opzet van de cursus Twee hoorcolleges in totaal week 1 en week 8 (14 juni) Wekelijks practicum: ca. 2 * 1 uur 1 uur: ontwikkeling van eigen

Nadere informatie

DATAMODELLERING ER DIAGRAM

DATAMODELLERING ER DIAGRAM DATAMODELLERING ER DIAGRAM Inleiding In dit whitepaper wordt de datamodelleervorm ER diagram beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen. Wil je een beeld krijgen

Nadere informatie

Vragen hoofdstuk 1: Resultaat

Vragen hoofdstuk 1: Resultaat Vragen hoofdstuk 1: Resultaat Het ontwikkelen van informatiesystemen bevat volgende activiteiten: Analyse van het probleem. Toewijzen van resources. Ontwerp van de onderdelen van het systeem. Bouw van

Nadere informatie

12. Meer dan één tabel gebruiken en sub-queries

12. Meer dan één tabel gebruiken en sub-queries 12. Meer dan één tabel gebruiken en sub-queries 12.1. Inleiding In de vorige hoofdstukken heb je telkens queries uitgevoerd op één tabel. In de praktijk is het raadplegen van gegevens over het algemeen

Nadere informatie

Netwerken en communicatie binnen en buiten het bedrijf

Netwerken en communicatie binnen en buiten het bedrijf Netwerken en communicatie binnen en buiten het bedrijf MS-OUTLOOK 97 MS-OUTLOOK 98 Richtlijnen voor de leraar Guy Willems Werkgroep Integratie Informatica Handel HA-5309-01 2000 Netwerken en communicatie

Nadere informatie

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 DATAMODEL SQL Middelbare School Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 INHOUDSOPGAVE 1. Informatiedomein 3 1.1 Informatiedomein 3 1.2 Toepassingen 3 2.

Nadere informatie

MS Access. Module 0. MS Access, versie 2000 (NL) Nummer: 256 (11062002) The Courseware Company

MS Access. Module 0. MS Access, versie 2000 (NL) Nummer: 256 (11062002) The Courseware Company MS Access Module 0 MS Access, versie 2000 (NL) Nummer: 256 (11062002) The Courseware Company Niets van deze uitgave mag verveelvoudigd worden en/of openbaar worden gemaakt door middel van druk, fotokopie,

Nadere informatie

Van een ER-diagram naar een database specificatie in SQL

Van een ER-diagram naar een database specificatie in SQL Van een ER-diagram naar een database specificatie in SQL Huub de Beer Eindhoven, 4 juni 2011 Inhoudsopgave 1 Inleiding 1 2 Van een ER-diagram naar het relationele model 1 3 Van relationeel model naar SQL

Nadere informatie

Opleiding Technische Informatica 2007-2008 Ontwerp Gericht Onderwijs 1.1 (2IO50) Technische documentatie

Opleiding Technische Informatica 2007-2008 Ontwerp Gericht Onderwijs 1.1 (2IO50) Technische documentatie Opleiding Technische Informatica 2007-2008 Ontwerp Gericht Onderwijs 1.1 (2IO50) Technische documentatie Eindhoven, 24 augustus 2007 Gemaakt door: Meulemans, W. Dinkla, K. Coördinator: Sidorova, dr. N.

Nadere informatie

ISO Datamodelleren. Prof. dr. Paul De Bra. Gebaseerd op: Database System Concepts, 5th Ed. Silberschatz, Korth and Sudarshan

ISO Datamodelleren. Prof. dr. Paul De Bra. Gebaseerd op: Database System Concepts, 5th Ed. Silberschatz, Korth and Sudarshan ISO Datamodelleren Prof. dr. Paul De Bra Gebaseerd op: Database System Concepts, 5th Ed. het bank voorbeeld waarom zijn er drie tabellen om klanten en rekeningen voor te stellen? customer (customer_name,

Nadere informatie

1.1 Een database ontwerpen voor een webliografie

1.1 Een database ontwerpen voor een webliografie 1.1 Een database ontwerpen voor een webliografie Maak een nieuwe Access-database aan, en noem die Webliografie.accdb 1.1.1 Aanmaken van de benodigde tabellen We maken eerst een tabel voor personen. Elke

Nadere informatie

4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen.

4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4.1 Starten met MS Access Als je het programma Microsoft Access

Nadere informatie

Koppeling met een database

Koppeling met een database PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

het bank voorbeeld ISO Datamodelleren modelleren met het E-R R model een database ontwerpen verzamelingen van relaties (verbanden)

het bank voorbeeld ISO Datamodelleren modelleren met het E-R R model een database ontwerpen verzamelingen van relaties (verbanden) het bank voorbeeld ISO Datamodelleren Prof. dr. Paul De Bra waarom zijn er drie tabellen om klanten en rekeningen voor te stellen? customer (customer_name, customer_street, customer_city) account (account_number,

Nadere informatie

Toegepaste notatiewijzen DLA software

Toegepaste notatiewijzen DLA software Toegepaste notatiewijzen DLA software Bert Dingemans info@dla-architect.nl Inleiding In de DLA Software wordt gebruik gemaakt van een aantal notatiewijzen voor het opstellen van een object- en procesmodel.

Nadere informatie

Les 2 Eenvoudige queries

Les 2 Eenvoudige queries Les 2 Eenvoudige queries XAMP Apache server ( http ) mysql server PHP myadmin IAM SQL oefeningen Database phpmyadmin Import : sql_producten.sql, sql_winkel.sql, sql_festival.sql SAMS SQL in 10 minuten

Nadere informatie

Inhoudsopgave Inleiding 7 Hoofdstuk 1 Introductie databases 9 Hoofdstuk 2 Hoe werkt het? 13 Hoofdstuk 3 Database versus Dataset 61

Inhoudsopgave Inleiding 7 Hoofdstuk 1 Introductie databases 9 Hoofdstuk 2 Hoe werkt het? 13 Hoofdstuk 3 Database versus Dataset 61 5 Inhoudsopgave Inleiding 7 C# en databases 7 Benodigde voorkennis 7 Hoe werk je met dit boek? 8 Hoofdstuk 1 Introductie databases 9 Wat is een database? 9 Relationele databases 9 De databases in dit boek

Nadere informatie

Maak automatisch een geschikte configuratie van een softwaresysteem;

Maak automatisch een geschikte configuratie van een softwaresysteem; Joost Vennekens joost.vennekens@kuleuven.be Technologiecampus De Nayer We zijn geïnteresseerd in het oplossen van combinatorische problemen, zoals bijvoorbeeld: Bereken een lessenrooster die aan een aantal

Nadere informatie

Projecten Applicatie Ontwikkeling

Projecten Applicatie Ontwikkeling Projecten Applicatie Ontwikkeling Standaarden Normaliseren ROC Flevoland Werner Pauchli Versie 1.0 Almere, 15 januari 2004 Inhoudsopgave Inhoudsopgave Inhoudsopgave 3 1. Documentbeheer 4 2. Inleiding

Nadere informatie

2.2 Een tabel ontwerpen

2.2 Een tabel ontwerpen 2.2 Een tabel ontwerpen 2.2.1 Gegevens analyse Alvorens de tabellen van een database te kunnen gaan opzetten, dient u eerst te bepalen, welke gegevens daarin moeten worden opgenomen. Bepaal eerst het doel

Nadere informatie

Technisch Ontwerp W e b s i t e W O S I

Technisch Ontwerp W e b s i t e W O S I Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept

Nadere informatie

databases & SQL - antwoorden

databases & SQL - antwoorden informatica databases & SQL - antwoorden Op dit lesmateriaal is een Creative Commons licentie van toepassing. 2010 Remie Woudt remie.woudt@gmail.com 2013 François Vonk (XAMP vervangen door USBWebserver

Nadere informatie

6. Het maken van een database

6. Het maken van een database 6. Het maken van een database 6.1. Inleiding In hoofdstuk 5 heb je de oefendatabase gemaakt doormiddel van een script. In dit hoofdstuk ga je zelf een database maken en deze vullen met tabellen. Hiervoor

Nadere informatie

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0 Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0 Behoudens uitzondering door de wet gesteld, mag zonder schriftelijke toestemming van de rechthebbende op het auteursrecht van

Nadere informatie

Tentamen Informatica 6, 2IJ60,

Tentamen Informatica 6, 2IJ60, Tentamen Informatica 6, 2IJ60, 18-03-2005 Dit tentamen bestaat uit 6 opgaven. Bij elke opgave staat aangegeven hoeveel punten te behalen zijn. Één punt ontvang je cadeau voor de aanwezigheid. Het eindresultaat

Nadere informatie

7. Het selecteren van gegevens

7. Het selecteren van gegevens 7. Het selecteren van gegevens 7.1. Inleiding Het doel van databases is het ontsluiten van gegevens. Een database wordt gebruikt om gegevens in op te slaan en te lezen. In dit hoofdstuk ga je door gebruik

Nadere informatie

Gebruikershandleiding

Gebruikershandleiding Release 1.3 Gebruikershandleiding Datum: oktober 2012 All rights reserved Alle rechten zijn voorbehouden. Deze documentatie blijft eigendom van Ternair Software Solutions b.v. en is uitsluitend bedoeld

Nadere informatie

DATAMODELLERING DATA MAPPING MODEL

DATAMODELLERING DATA MAPPING MODEL DATAMODELLERING DATA MAPPING MODEL Inleiding In dit whitepaper wordt de datamodelleervorm data mapping model beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen. Wil

Nadere informatie

Nummer: 011 (11062002) The Courseware Company

Nummer: 011 (11062002) The Courseware Company Access Module 0 Access voor Windows, versie 97 (UK) Nummer: 011 (11062002) Niets van deze uitgave mag verveelvoudigd worden en/of openbaar worden gemaakt door middel van druk, fotokopie, microfilm of op

Nadere informatie

Uitwerking toets modelleren voor vwo 6

Uitwerking toets modelleren voor vwo 6 Uitwerking toets modelleren voor vwo 6 Huub de Beer Schooljaar 2010/2011 Inhoudsopgave 1 DFD: toetsenfabrikant Dub5 1 1.1 Contextdiagram............................ 1 1.2 Gedetailleerd DFD..........................

Nadere informatie

8. De invoer van gegevens

8. De invoer van gegevens 8. De invoer van gegevens 8.1. Inleiding Voor het invoeren van gegevens kan het DML-statement INSERT INTO worden gebruikt. Om dit statement correct te kunnen gebruiken, moet je wel antwoord weten op de

Nadere informatie

Een inleiding in de Unified Modeling Language 79

Een inleiding in de Unified Modeling Language 79 Een inleiding in de Unified Modeling Language 79 2. Het objectdiagram Soms hebben we behoefte om in de plaats van een klasse een instantie van deze klasse weer te geven. Figuur 3.22. toont als voorbeeld

Nadere informatie

Top-down ontwerpen. Concentreren op de hoofdzaak zonder rekening te houden met allerlei details.

Top-down ontwerpen. Concentreren op de hoofdzaak zonder rekening te houden met allerlei details. Top-down ontwerpen Concentreren op de hoofdzaak zonder rekening te houden met allerlei details. Dus: de belangrijkste entiteittypes en hun onderlinge structuur proberen te vinden. De relaties in tekst

Nadere informatie

Databanken: Inleidende begrippen, normalisatie en ERD

Databanken: Inleidende begrippen, normalisatie en ERD Databanken: Inleidende begrippen, normalisatie en ERD Inhoud 1 Gegevens en betrouwbaarheid 3 1.1 Gegevens en informatie 3 1.2 Integriteit 3 1.3 Gegevensgerelateerde begrippen 4 1.4 Opslaggerelateerde begrippen

Nadere informatie

gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen

gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen Het converteren van adres- en andere relatiegegevens in PSU Relatiebeheer, en wat dat betreft elke koppeling tussen verschillende

Nadere informatie

Thinking of development

Thinking of development Thinking of development Databases Arjan Scherpenisse HKU / Miraclethings Agenda voor vandaag Opdracht tussenstand State diagram / Observer pattern Bret Victor Databases 2/42 Opdracht tussenstand Slides

Nadere informatie

Normaliseren van tabellen

Normaliseren van tabellen Normaliseren van tabellen Inleiding Uit het voorgaande blijkt duidelijk dat de grote hoeveelheid informatie die verzameld worden in een database verspreid zitten over verschillenden tabellen. Dit is een

Nadere informatie

Computerconfiguratie en netwerken. Windows 7 HA 5337 01. Vlaams Verbond van het Katholiek Secundair Onderwijs. Alle studierichtingen

Computerconfiguratie en netwerken. Windows 7 HA 5337 01. Vlaams Verbond van het Katholiek Secundair Onderwijs. Alle studierichtingen Computerconfiguratie en netwerken Windows 7 HA 5337 01 Alle studierichtingen Lut Boogaerts - Ria Van Eysendeyk - Christel Valkeners - Guy Willems Werkgroep Integratie Informatica Handel 2011 Vlaams Verbond

Nadere informatie

Ternaire relaties in ERDs zijn lastig

Ternaire relaties in ERDs zijn lastig Ternaire relaties in ERDs zijn lastig Maarten M. Fokkinga Versie van 3 juni 2002, 9:54 Inleiding In het afgelopen tentamen OIS (Ontwerpen van Informatiesystemen; 233026) stond onderstaande opgave over

Nadere informatie

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans Canonieke Data Modellering op basis van ArchiMate Canonieke Data Modellering op basis van Archimate Bert Dingemans Abstract Modelleren op basis van de open standard ArchiMate is een goed uitgangspunt voor

Nadere informatie

Functionele Specificatie van GRCcontrol. Rieks Joosten

Functionele Specificatie van GRCcontrol. Rieks Joosten Functionele Specificatie van GRCcontrol Rieks Joosten (rieks.joosten@tno.nl) 4 september 2014 Inhoudsopgave 1 Inleiding 2 2 Gemeenschappelijke taal 3 2.1 Automatiseerbare samenhangen...................

Nadere informatie

DATAMODELLERING CRUD MATRIX

DATAMODELLERING CRUD MATRIX DATAMODELLERING CRUD MATRIX Inleiding In dit whitepaper wordt de datamodelleervorm CRUD Matrix beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen. Wil je een beeld

Nadere informatie

FVISEMIntro kantoorsimulatie

FVISEMIntro kantoorsimulatie FVISEMIntro kantoorsimulatie versie 11 HA-6502-10 Kantoor, Handel (2 de graad), Handel-talen (2 de graad) Annie Vanroose, Guy Willems Werkgroep Integratie Informatica Handel 2012 Vlaams Verbond van het

Nadere informatie

1 ENTITEIT-RELATIE DIAGRAM 2 2 NORMAALVORMEN De 1e normaalvorm De 2e normaalvorm De 3e normaalvorm 3. 2.

1 ENTITEIT-RELATIE DIAGRAM 2 2 NORMAALVORMEN De 1e normaalvorm De 2e normaalvorm De 3e normaalvorm 3. 2. INHOUDSOPGAVE 1 ENTITEIT-RELATIE DIAGRAM 2 2 NORMAALVORMEN 2 2.1 De 1e normaalvorm 2 2.2 De 2e normaalvorm 3 2.3 De 3e normaalvorm 3 2.4 Werkelijkheden 4 3 MODELLEREN 5 4 VOORBEELD 7 data modelleren.doc

Nadere informatie

Macro s. 4.2 Een macro maken

Macro s. 4.2 Een macro maken 4.2 Een macro maken Een macro is een reeks van commando s die u kunt maken en die een programma uitvoeren. Wanneer u de macro in zijn geheel uitvoert, dan worden de acties opeenvolgend uitgevoerd. Elk

Nadere informatie

Access Basis. 699,- excl. BTW per deelnemer Duur: Kosten: 2 dagen Max Deelnemers: 10

Access Basis. 699,- excl. BTW per deelnemer Duur: Kosten: 2 dagen Max Deelnemers: 10 Access Basis Kosten: 699,- excl. BTW per deelnemer Duur: 2 dagen Max Deelnemers: 10 Microsoft Access behoort tot een van de meest gebruikte database applicaties, waarmee u databases kunt ontwerpen en bijhouden

Nadere informatie

Databases gebruiken. Databases gebruiken

Databases gebruiken. Databases gebruiken Databases gebruiken In deze module wordt van de kandidaat verwacht dat hij een goed begrip heeft van databases en aantoont competent te zijn in het gebruik van een database. Doel van de module De kandidaat:

Nadere informatie

H 1 Databases en databasesystemen (10 punten) a. Veel van de huidige databases zijn gebaseerd op een drie-laags systeemarchitectuur:

H 1 Databases en databasesystemen (10 punten) a. Veel van de huidige databases zijn gebaseerd op een drie-laags systeemarchitectuur: Tentamen Engineering 2007/2008 Opleiding: Embedded Systems Opl.variant: vt Groep/Klas: T Engineering Volledige vaknaam: Databases in Dag en Datum: woensdag, Tijd: 18.1-18.4 Technische Automatisering Vakcode:

Nadere informatie

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens

Nadere informatie

2.4.4 LibreOffice Werkblad Mac

2.4.4 LibreOffice Werkblad Mac 2.4.4 LibreOffice Werkblad Mac Deze cursus bestaat uit 4 delen. 1. Werkblad gebruiken voor berekeningen 2. Werkblad gebruiken voor het maken van lijsten 3. Werkblad gebruiken voor een (eenvoudige) boekhouding

Nadere informatie

Release Notes Carta 14.1

Release Notes Carta 14.1 Release Notes Carta 14.1 Datum: 2-6-2014 09:43 Auteur: Hans Wijntjes Project: Carta 14.1 Versie: 1.0 Inhoud 1 Inleiding... 3 2 Importfunctie... 3 2.1 Stap 1 Kolomdefinities... 3 2.2 Stap 2 Gedrag... 4

Nadere informatie

1 Besturingssysteem. 1.1 Wat is een besturingssysteem? 1.2 Verschillende besturingssystemen. 1.3 Windows, verschillende versies

1 Besturingssysteem. 1.1 Wat is een besturingssysteem? 1.2 Verschillende besturingssystemen. 1.3 Windows, verschillende versies 1 Besturingssysteem 1.1 Wat is een besturingssysteem? Elke computer heeft een besturingssysteem. Zonder besturingssysteem kan een computer niet werken. Het besturingssysteem zorgt ervoor dat de computer

Nadere informatie