Relationele databases: regels
|
|
|
- Nienke Mertens
- 10 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Leereenheid Relationele databases: regels Leereenheid Relationele databases: regels I N T R O D U C T I E De vorige leereenheid ging over goede en slechte relationele structuren. Een goede structuur heeft als kenmerken: geen herhalende groeen geen ongecontroleerde redundantie standaardisatie van gegevens wordt afgedwongen waar dat gewenst is elke soort ding in de bijbehorende werkelijkheid heeft zijn eigen tabel. In deze leereenheid gaan we het hebben over de regels die voor die structuren gelden: regels die dingen verbieden of verlichten: beerkingsregels regels die zorgen dat acties worden ondernomen of juist worden tegengehouden: gedragsregels. Beerkingsregels zijn voorloig het belangrijkst; er zijn verschillende tyen, die in deze leereenheid worden behandeld. Van de gedragsregels komt in deze leereenheid één belangrijk tye aan de orde. LEERDOELEN Na het bestuderen van deze leereenheid wordt verwacht dat u binnen een relationele structuur de volgende tyen beerkingsregel kunt interreteren: het verlicht zijn van een kolom, uniciteit van een kolom of kolomcombinatie, rimaire sleutel, alternatieve sleutel, kandidaatsleutel, verwijssleutel en referentiële-integriteitsregel weet hoe deze regels worden genoteerd in een strokendiagram inziet hoe uniciteitsregels zinvol kunnen worden gecombineerd voorbeelden kunt geven van structuren met recursieve verwijzingen voorbeelden kunt geven van structuren met niet-sleutelverwijzingen verwijzingen tussen tabellen kunt uitdrukken in termen van multiliciteit en deze kunt noteren in een multiliciteitendiagram voorbeelden kunt noemen van bijzondere beerkingsregels kunt aangeven waarom een tabel soms een kunstmatige rimaire sleutel krijgt kunt aangeven waarom er gedragsregels moeten bestaan van het tye refererende-actieregel het effect van elk tye refererende-actieregel kunt omschrijven en illustreren aan een voorbeeld voorbeelden kunt noemen van bijzondere gedragsregels via een voorbeeld kunt illustreren wat de betekenis en het belang is van het begri transactie het belang onderkent van strakke teken- en naamgevingsconventies. De studielast van deze leereenheid bedraagt 6 uur. 89
2 Oen Universiteit L E E R K E R N Voorbeelddatabases In de aragrafen. en. gaan we uit van de Toetjesboek-database van leereenheid. In de loo van de leereenheid wordt deze o enkele details aangeast. In figuur. herhalen we de voorbeeldoulatie. Eenheid naam liter stuks deciliter gram kilogram eetleel theeleel Gerecht naam energiepp bereidingstijd bereidingswijze Coue Kiwano Glace Terrace Mango Plus Plus Schil... Neem... Snijd... Product naam eenheid energiepe ijs kiwano slagroom suiker tequila aardbeien ernod eer mango zure room banaan liter stuks deciliter gram eetleel gram eetleel stuks deciliter stuks Ingredient gerecht roduct hoeveelheidpp Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Glace Terrace Glace Terrace Glace Terrace Glace Terrace Mango Plus Plus Mango Plus Plus Mango Plus Plus ijs kiwano slagroom suiker tequila ijs aardbeien ernod eer mango aardbeien zure room FIGUUR. Voorbeeldoulatie Toetjesboek Beerkingsregels Referentiëleintegriteitsregel De tabellen zijn onderling verbonden via verwijzingen o basis van gelijke waarden. De belangrijkste beerkingsregel heeft betrekking o die verwijzingen. Het is de regel die loze verwijzingen (verwijzingen naar niks) verbiedt. Bijvoorbeeld: een maateenheid scheutje bij een roduct, terwijl die niet in de gestandaardiseerde Eenheid-tabel voorkomt. Deze beerkingsregel heet de referentiële-integriteitsregel. Het is een belangrijke regel, omdat verwijzingen als het ware het cement van de database vormen. Zonder deze verwijzingen zou de database uiteenvallen in losse tabellen die niet gecombineerd kunnen worden. Verdero wordt de referentiële-integriteitsregel uitgebreid behandeld. Maar er zijn meer soorten beerkingsregels; daar gaan we het eerst over hebben. 90
3 Leereenheid Relationele databases: regels. OPTIONELE EN VERPLICHTE KOLOMMEN Verlichtewaarderegel Elk gerecht moet een naam hebben. Dat is immers dé manier om een gerecht aan te duiden. We zeggen: voor de kolom Gerecht.naam geldt een verlichte-waarderegel. Kortweg, hij is verlicht. Vanzelfsrekend zijn ook Product.naam en Eenheid.naam verlicht. Ook de kolommen Ingredient.gerecht en Ingredient.roduct zijn verlicht. Laten we immers één van die twee in een rij oningevuld, dan is het onmogelijk betekenis te hechten aan de wel ingevulde gegevens in die rij. Voor alle andere kolommen geldt dat het weglaten van een waarde géén roblemen geeft met de interretatie van de overblijvende gegevens in de rij. Voor die kolommen moet beslist worden of het verlichte kolommen moeten worden of niet. Dat is een ontwerkeuze. Otionele kolom null Een niet-verlichte kolom heet otioneel. Een otionele kolom mag lege cellen bevatten. De inhoud van een lege cel heet een null. Dat lijkt wat vreemd en dat is het ook: hoe kan niks een naam hebben? Eigenlijk is null niet meer dan een indicator, die aangeeft dat de cel leeg is. Null s zullen ons in deze cursus nog een hoo hoofdbrekens kosten. Alleen de kolommen die absoluut moeten worden ingevuld, worden verlicht gemaakt. Zo n kolom is bereidingswijze. Want wat moeten we met een gerecht zonder bereidingswijze? In de Toetjesboek-database zijn de meeste kolommen verlicht, alleen de volgende zijn otioneel: Gerecht.energiePP; deze kolom is otioneel in verband met ingrediënten met onbekende hoeveelheid, maar tevens vanwege het éérst invoeren van ingrediënten en het as daarna (automatisch) berekenen van energiepp Ingredient.hoeveelheidPP: een ingrediënt in een gerecht mag een onbeaalde hoeveelheid er ersoon hebben Product.eenheid: niet elk ingrediënt heeft een vaste maateenheid Product.energiePE: een roduct zonder maateenheid (zie vorige unt) kent ook geen energie er maateenheid. De voorbeeldoulatie illustreert dit: in Glace Terrace zit wel eer, maar een hoeveelheid is niet gegeven. Dat zal dan wel naar smaak zijn. En van eer is geen eenheidnaam vermeld en evenmin een energie er eenheid. In een strokenschema geven we een otionele kolom aan met o. De kolommen zonder o zijn dus verlicht, zie figuur.. De gebruiker moet ervoor zorgen dat die kolommen in elke rij een waarde bevatten. Doet de gebruiker dit niet, dan zal het databasemanagementsysteem (rdbms) via de alicatie (het Toetjesboek-rogramma) een foutmelding geven. 9
4 Oen Universiteit naam Gerecht /energiepp bereidingstijd bereidingswijze Eenheid naam Product naam eenheid energiepe Ingredient gerecht roduct hoeveelheidpp FIGUUR. Strokendiagram voor Toetjesboek (versie : otionele kolommen). UNICITEIT Uniciteitsregel Behalve dat de kolom naam in de tabel Gerecht verlicht is, moeten de waarden in die kolom ook uniek zijn: verschillende gerechten moeten verschillende namen hebben. Dit is vanzelfsrekend, maar de noodzaak wordt nog eens onderstreet door het feit dat de gerechtnamen in andere tabellen worden gebruikt om naar steeds één gerecht te verwijzen. Ook voor Product.naam geldt zo n uniciteitsregel: verschillende roducten hebben verschillende namen. Evenzo geldt in Eenheid een uniciteitsregel voor de naamkolom. Ook in de tabel Ingredient geldt een uniciteitsregel, echter niet voor één losse kolom; niet voor gerecht, omdat één gerecht meerdere roducten kan bevatten; niet voor roduct, omdat één ingrediënt in meerdere gerechten kan voorkomen; niet voor hoeveelheid, omdat bij meerdere gerecht-roduct-combinaties natuurlijk best dezelfde hoeveelheid kan horen. Wel uniek zijn de combinaties (gerecht, roduct) in Ingredient. Zo n combinatie beaalt immers recies één rij in deze tabel, ofwel één ingrediëntregel. Smalle en brede uniciteitsregel Uniciteitsregels over één kolom heten smalle uniciteitsregels. Die over twee of meer kolommen heten brede uniciteitsregels. In een tabelschema geven we uniciteitsregels aan door middel van tweeuntige ijlen, zie figuur.. Het eisen van uniciteit voor één kolom (een smalle ijl) is strenger dan het eisen van uniciteit voor een combinatie van diezelfde kolom en nog één of meer andere kolommen (een brede ijl). Bijvoorbeeld, uit de uniciteitsregel voor Gerecht.naam volgt als afgeleide regel dat ook de waardencombinaties in de kolomcombinatie (naam, energiepp) verschillend zijn. Dit is echter een zwakkere regel, want het omgekeerde geldt niet. 9
5 Leereenheid Relationele databases: regels naam Gerecht /energiepp bereidingstijd bereidingswijze Eenheid naam Product naam eenheid energiepe gerecht Ingredient roduct hoeveelheidpp FIGUUR. Strokendiagram voor Toetjesboek (versie : uniciteitsregels) Conventie Algemeen wordt als conventie aangehouden dat alleen de meest strenge uniciteitsregels als zodanig worden benoemd en als uniciteitsijl worden getekend. In een Toetjesboek-strokendiagram zal daarom wel een uniciteitsijl voor Gerecht.naam worden getekend maar geen brede ijl bij de combinatie (naam, energiepp), ook al is die combinatie uniek (zie figuur.4). Tekenen we ergens toch een brede ijl, zoals bij Ingredient, dan zullen we hiermee (vanwege genoemde conventie) in het algemeen aanduiden dat geen uniciteitsregel geldt voor de afzonderlijke kolommen of voor smallere kolomcombinaties. Gerecht naam /energiepp bereidingstijd bereidingswijze FIGUUR.4 Uniciteitsregels: alleen minimale unieke combinaties. ILLUSTRATIEVE POPULATIES Illustratieve oulatie Een illustratieve oulatie bij een beaalde regel is een oulatie die zo goed mogelijk illustreert wat wel en wat niet mag met betrekking tot die regel. Als voorbeeld nemen we een uniciteitsregel over twee kolommen. Een illustratieve oulatie hierbij zal twee dingen illustreren: de uniciteit van de waardencombinaties voor die twee kolommen het feit dat voor de afzonderlijke kolommen geen uniciteit geldt. Zie figuur.5 voor een minimaal gekozen illustratieve oulatie bij de brede uniciteitsregel voor Ingredient. Ingredient gerecht roduct hoeveelheidpp Coue Kiwano Coue Kiwano Glace Terrace ijs kiwano ijs FIGUUR.5 Minimale illustratieve oulatie voor brede uniciteitsregel 9
6 Oen Universiteit Illustratieve oulaties selen vaak een verhelderende illustratieve rol bij het vaststellen van de juiste regels. Vooral bij uniciteitsregels..4 IDENTIFICATIE EN VERWIJZING Unieke identificatie van een rij Verwijzing Een kolom of een kolomcombinatie die verlicht is en bovendien uniek, is geschikt om te gebruiken als unieke identificatie van een rij. Immers, in elke rij is dan de kolomwaarde (of de combinatie) ingevuld en alle waarden (of combinaties) zijn verschillend. Zodoende kunnen we de drie kolommen met een smalle uniciteitsijl in figuur. gebruiken om de rijen in resectievelijk Gerecht, Product en Eenheid uniek te identificeren. Die kolommen zijn immers ook verlicht. Evenzo is de kolomcombinatie (gerecht, roduct) in Ingredient geschikt om de rijen in Ingredient uniek te identificeren. In de voorbeeldoulatie ziet u hoe een kolomwaarde van Product.naam, bijvoorbeeld ijs, in een andere tabel (Ingredient) wordt gebruikt om een verwijzing te realiseren juiste rij in Product. De waarden in Ingredient.roduct zijn als het ware sleuteltjes die o een slotje assen. De waarden in Product.naam zijn de slotjes. Deze zijn allemaal verschillend; van een sleuteltje kunnen meerdere exemlaren bestaan. Zie figuur.6, waarin dit voor twee slotjes (de waarden ijs en kiwano in Product.naam) is geïllustreerd. Product naam eenheid energiepe ijs kiwano slagroom suiker tequila aardbeien ernod eer mango zure room banaan liter stuks deciliter gram eetleel gram eetleel stuks deciliter stuks Ingredient gerecht roduct hoeveelheidpp Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Glace Terrace Glace Terrace Glace Terrace Glace Terrace Mango Plus Plus Mango Plus Plus Mango Plus Plus ijs kiwano slagroom suiker tequila ijs aardbeien ernod eer mango aardbeien zure room enz FIGUUR.6 Sleuteltjes (verwijssleutelwaarden) die o unieke slotjes (rimaire-sleutelwaarden) assen 94
7 Leereenheid Relationele databases: regels Logisch adres Fysiek adres In het algemeen geldt: in een relationele database kan een kolom of kolomcombinatie die uniek identificerend is (dus met slotjes ), worden gebruikt om vanuit een andere tabel verwijzingen te realiseren (via sleuteltjes ). Zo n waarde of waardencombinatie fungeert dan als een soort adres van een rij. We sreken van logische adressen van de rijen, ter onderscheiding van de fysieke geheugenadressen..5 PRIMAIRE SLEUTELS EN VERWIJSSLEUTELS Een kolom of kolomcombinatie met slotjes heet een rimaire sleutel. Een corresondende kolom of kolomcombinatie met sleuteltjes heet een verwijssleutel. We formuleren dat iets reciezer. Primaire sleutel Een rimaire sleutel van een tabel is een kolom of kolomcombinatie waarvoor geldt: hij is verlicht hij is uniek in het geval van een kolomcombinatie: deze is zo zuinig mogelijk gekozen 4 de kolomwaarden (of -waardencombinaties) zijn aangewezen als logische rij-adressen voor verwijzingen. Ter illustratie van de zuinigheidseis (): de combinatie (naam, bereidingstijd) in Gerecht voldoet aan en, maar niet aan. Dit geldt ook voor de combinatie (naam, energiepp), ook al is energiepp niet verlicht. De zuinigheidseis houdt direct verband met het zo smal mogelijk tekenen van uniciteitsijlen (zie figuur.4). Verwijssleutel Een verwijssleutel is een kolom of kolomcombinatie waarvan de waarden (of waardencombinaties) naar rijen in een andere tabel verwijzen, via de rimaire sleutel daarvan. Een rimaire sleutel is ondanks de naam het slotje. Verwijssleutels zijn de sleuteltjes die o zo n slotje moeten assen. Primaire sleutels geven we aan met een bij de uniciteitsijl. Een verwijzing tekenen we in een strokendiagram als een verticale ijl, loend van de verwijssleutel naar de rimaire sleutel, zie figuur.7. naam Gerecht /energiepp bereidingstijd bereidingswijze Eenheid naam Product naam eenheid energiepe gerecht Ingredient roduct hoeveelheidpp FIGUUR.7 Strokendiagram voor Toetjesboek (versie 4: rimaire sleutels) 95
8 Oen Universiteit Omerkingen Ook de tabel Ingredient heeft een rimaire sleutel, ook al wordt daar niet naar verwezen. Het is echter denkbaar dat de database in de toekomst wordt uitgebreid met een tabel die er wel verwijzingen naar heeft. Dat zal dan met een brede verwijssleutel moeten; het sleuteltje moet immers o het slotje assen. De rimaire sleutel van Ingredient bestaat uit twee afzonderlijke verwijssleutels, één naar Gerecht en één naar Product. Hiermee wordt recies uitgedrukt dat een rij in Ingredient één gerecht koelt aan één roduct. Een brede rimaire sleutel mag, vanuit concetueel standunt bezien, best een null bevatten, als hij maar niet alleen null s bevat. Vrijwel elk rdbms eist echter dat rimaire-sleutelkolommen geen null s bevatten (verlichte kolommen). Een verwijssleutel mag best otioneel zijn en is in dit ozicht vergelijkbaar met een gewone kolomwaarde. Zie echter het vorige unt voor verwijssleutels die deel uitmaken van een brede rimaire sleutel..6 KANDIDAATSLEUTELS EN ALTERNATIEVE SLEUTELS De term rimaire sleutel suggereert dat er ook zoiets mogelijk is als een niet-rimaire sleutel. Dit is inderdaad juist. Met het gegeven voorbeeld is dat echter niet te illustreren, omdat elke tabel maar één kolom of kolomcombinatie heeft die aan de eisen, en voldoet. Bij gebrek aan andere kandidaten worden deze dus vanzelf aangewezen om vanuit andere tabellen naar te verwijzen (eis 4). Kandidaatsleutel Alternatieve sleutel In aragraaf.0 wordt de databasestructuur gewijzigd, zodanig dat de tabellen Gerecht en Product beide twee kandidaat-rimaire-sleutels (eisen, en ) krijgen. Zo n kandidaat-rimaire-sleutel heet kortweg kandidaatsleutel. De gekozen kandidaten (één er tabel) worden dan rimaire sleutel (eis 4); de afgevallen kandidaten (alleen eisen, en ) heten alternatieve sleutel. Elke tabel heeft minstens één kandidaatsleutel. Immers, de combinatie van alle kolommen is verlicht (er zijn geen lege rijen mogelijk) én uniek (omdat een tabel als relatie een verzameling is). Door nu zoveel mogelijk kolommen weg te laten, zodanig dat de eisen en nog steeds gelden, ontstaat een zo zuinig mogelijk gekozen combinatie. Sleutels en herhalende groeen In de meeste boeken over relationele databases worden herhalende groeen zo snel mogelijk in de ban gedaan, waarna de relationele theorie, waaronder die over uniciteitsregels en sleutels, volledig wordt ontvouwd voor genormaliseerde structuren, dus zonder herhalende groeen. Echt nodig is dat niet en vaak betekent het zelfs een gemiste kans om iets goed uit te leggen. Wij hebben ons deze beerking dan ook niet ogelegd, en zullen daarvan regelmatig rofijt hebben. In dit boek komt u dan ook regelmatig uniciteitsregels en sleutels tegen in tabellen mét een herhalende groe. Naamgeving sleutelkolommen We houden er in dit boek vrij strakke naamgevingsconventies o na. Dat schet eenheid en duidelijkheid en leidt ook tot strakke SQL-code. 96
9 Leereenheid Relationele databases: regels De kolomnaam van een smalle rimaire sleutel luidt meestal nr, code of naam. Een verwijssleutelkolom heeft meestal dezelfde naam als de corresonderende tabel, maar dan met een kleine letter. Deze conventie voor verwijssleutels kan een misverstand oleveren: dat de verwijzing vanzelf ontstaat door de naamgeving. Dat is niet het geval! We moeten daar aart SQL-code voor schrijven, zoals we zullen zien wanneer we SQL/DDL behandelen..7 REFERENTIËLE INTEGRITEITSREGEL Elke waarde in Product.eenheid wordt geacht te verwijzen naar recies één rij in Eenheid, via de rimaire sleutel van die tabel (dat is de enige kolom, in dit geval). Dan moet die waarde daar wel voorkomen natuurlijk. Bevat Product.eenheid ergens theeleel en komt dit niet voor in Eenheid.naam, dan hebben we een robleem: een verwijzing naar niks. Dan wordt er als het ware gemeten in de niet-bestaande eenheid theeleel. De referentiële-integriteitsregel verbiedt dergelijke loze verwijzingen. Referentiëleintegriteitsregel Referentiële-integriteitsregel De referentiële-integriteitsregel luidt: elke waarde van een verwijssleutel moet voorkomen als waarde van de bijbehorende rimaire sleutel (referentie = verwijzing; integriteit = het voldoen aan beerkingsregels). Informeel zegt de regel: als we ergens een sleuteltje hebben liggen, moet er (aan de andere kant van de verwijsijl) een slotje zijn waar dat sleuteltje o ast. Naar een brede rimaire sleutel kan alleen worden verwezen met een brede verwijssleutel: als het slotje breed is, moet ook het sleuteltje breed zijn. Ouder Kind De rollen die twee tabellen hebben ten ozichte van een verwijzing, worden vaak aangeduid met de termen ouder en kind (Engels: arent en child). De tabel met de verwijssleutel heet het kind; de tabel waarheen verwezen wordt, heet de ouder, zie figuur.8. Eenheid naam Product naam eenheid energiepe oudertabel kindtabel FIGUUR.8 Ouder-kind-combinatie (ten ozichte van verwijzing) Merk o dat bij een rij van de kindtabel ofwel geen enkele rij ofwel recies één rij van de oudertabel hoort. De mogelijkheid geen enkele rij kan zich alleen voordoen wanneer de verwijzing otioneel is, zoals in figuur.8. Bij een verwijzing vanuit een verlichte kolom is er altijd recies één ouderrij bij elke kindrij. Omgekeerd: bij één rij van de oudertabel kunnen nul, één of meer rijen van de kindtabel horen. Dit kan er rij verschillen. 97
10 Oen Universiteit Tekenconventie In deze cursus houden we ons aan de volgende tekenconventie: in structuurdiagrammen wordt de ouder indien mogelijk hoger dan het kind getekend (zie ogave.4 voor een uitzonderingssituatie). Associatie Een ouder-kindrelatie wordt ook wel associatie genoemd. We refereren de term associatie boven relatie omdat, zoals we hebben gezien, de term relatie in de relationele theorie al een andere betekenis heeft, namelijk die van tabel (in wiskundige zin). Verwijssleutels vormen het cement van de database. Het bewaken van de referentiële-integriteitsregel is daarom een fundamentele taak van het rdbms, die o vele momenten actueel is. Uitgaande van twee tabellen met een ouder-kind-associatie moet het rdbms in de volgende gevallen zorg dragen voor een juiste corresondentie tussen de verwijssleutel (in de kindtabel) en de rimaire sleutel (in de oudertabel): bij een oging een rij in de kindtabel toe te voegen: Gecontroleerd moet worden of de verwijssleutelwaarde voorkomt als rimaire-sleutelwaarde in de oudertabel. bij een oging een verwijssleutelwaarde in de kindtabel te wijzigen: Gecontroleerd moet worden of de nieuwe verwijssleutelwaarde bestaat als rimairesleutelwaarde in de oudertabel. bij een oging een rimairesleutelwaarde in de oudertabel te wijzigen: Moeten de corresonderende verwijssleutelwaarden dezelfde wijziging ondergaan, zodat de corresondentie in stand blijft? bij een oging tot verwijderen van een ouderrij: Moet dit worden toegestaan? En zo ja: wat moet met de kindrijen gebeuren, zodat deze niet als weeskind (met naar niets verwijzende sleutelwaarden) achterblijven? Let o het woord oging : soms zal de actie geen doorgang kunnen vinden, omdat de vereiste corresondentie niet gehandhaafd of tot stand gebracht kan worden. Met name de laatste twee kwesties zijn nadere studie waard, omdat het antwoord niet eenduidig is. In aragraaf, die gewijd is aan gedragsregels, zullen we hier nader o ingaan..8 MULTIPLICITEITSREGELS Bij een verwijzing is het meestal belangrijk vast te leggen hoeveel rijen van de oudertabel bij één rij van de kindtabel kunnen horen. En omgekeerd, hoeveel rijen van de kindtabel bij één rij van de oudertabel kunnen horen. Zo geldt voor de verwijzing van Product naar Eenheid: bij één Product-rij horen nul of eeneenheid-rijen bij één Eenheid-rij horen nul of meer Product-rijen. 98
11 Leereenheid Relationele databases: regels Multiliciteitsregel Kardinaliteitsregel Hierbij betekent nul of meer : willekeurig veel. Dit tye aantallenregels worden multiliciteitsregels genoemd, of ook wel kardinaliteitsregels, naar de wiskundige term kardinaliteit voor het aantal elementen van een verzameling. De multiliciteitsregels bij de andere verwijzingen zijn als volgt: bij één Ingredient-rij hoort recies één Product-rij bij één Product-rij horen dus nul of meer Ingredient-rijen en: bij één Ingredient-rij hoort recies één Gerecht-rij bij één Gerecht-rij horen één of meer Ingredient-rijen. Multiliciteitendiagram Al deze regels worden geïllustreerd in de voorbeeldoulatie. In figuur.9 worden ze grafisch weergegeven, in een zogenaamd multiliciteitendiagram. Merk o dat we de multiliciteiten steeds moeten aflezen aan de andere kant van het lijntje, lezend van de ene tabel naar de andere. Eenheid Gerecht Product bij één roduct horen 0 of eenheden bij één eenheid horen 0 of meer roducten Ingredient 0 of recies 0 of meer of meer FIGUUR.9 Multiliciteitendiagram van Reijnders Toetjesboek Merk o dat we gerechten met nul ingrediënten toestaan. Dit is een ontwerkeuze waar heel wat over te zeggen is. In de volgende aragraaf gaan we daar nader o in. Een multiliciteitendiagram geeft de structuur van een database overzichtelijk weer, zonder details van de kolommen. Merk o dat elke verwijzing een -kant (0-of-) en een veel-kant (0-of-meer, dan wel -ofmeer) heeft. De -kant staat aan de kant van de oudertabel; de veel-kant aan de kant van de kindtabel. Dit komt overeen met de ijlnotatie in een strokendiagram: de ijl loot van veel naar. Zie ook figuur.0. Eenheid naam Product naam eenheid energiepe Eenheid Product FIGUUR.0 Een verwijzing en multiliciteitsregels 99
12 Oen Universiteit.9 EEN KIP-EI -PROBLEEM Stel, we gaan in het databaseontwer uit van de regel dat een gerecht minstens één ingrediënt moet hebben. Zo gek is dat niet, immers wat heb je aan een gerecht zonder ingrediënten? In het multiliciteitendiagram krijgen we dan aan de meer -kant een één-of-meer regel. In het strokendiagram moeten we een extra regel moeten toevoegen. Omdat daar geen grafische notatie voor bestaat, doen we dat in tekst. Zie figuur.. Gerecht naam /energiepp bereidingstijd bereidingswijze Gerecht Ingredient gerecht roduct hoeveelheidpp Ingredient extra regel: elk gerecht heeft minstens één ingrediënt FIGUUR. Ki-ei -robleem De -of-meer-multiliciteitsregel ( kraaieootje met streeje ), in combinatie met een recies- regel (dubbel streeje) aan de andere kant, is roblematisch. Er is hier een soort ki-ei -robleem. Want voegen we als eerste een Gerecht-rij toe, dan overtreden we de -of-meer-regel. Maar beginnen we met een Ingredient-rij, dan is niet voldaan aan de recies-- regel. En stel dat het ons toch is gelukt: met verwijderen hebben we net zo n robleem. Want de ki (een Gerecht-rij) kunnen we niet verwijderen zolang deze nog een ei (Ingredient-rij) bezit, maar hoe beroven we de ki van haar laatste ei? Een beerking van de meest gangbare SQL-dialecten zet dit hele robleem nog in een ander licht: het blijkt daarin namelijk onmogelijk de - of-meer-regel te imlementeren. Anders gezegd: het blijkt niet zonder meer mogelijk af te dwingen dat een ouderrij minstens één kindrij heeft. Eén-veel-regel imlementeren in alicatie Al met al betekent dit dat we in de databaseraktijk altijd 0-of meermultiliciteiten hebben en daarmee het ki-ei-robleem omzeilen. Voor wie er se een één-of-meer-regel wil imlementeren, bestaan wel mogelijkheden. Een olossing is de regel niet door het rdbms maar door de alicatierogrammatuur te laten bewaken. Zo kunnen we ons voorstellen dat de gebruiker het gerechtenscherm as kan sluiten wanneer het gerecht een ingrediënt bevat en een assende foutmelding krijgt wanneer hij dat robeert bij een gerecht zonder ingrediënt. In aragraaf. zal overigens blijken dat we het rdbms odracht kunnen geven om bij het verwijderen van een Gerecht-rij in één kla (als het ware tegelijkertijd) ook alle bijbehorende Ingredient-rijen te verwijderen: een zogenaamde cascading delete. OPGAVE. Ga in figuur.7 nog eens na welke sleuteltjeskolommen naar welke slotjeskolommen verwijzen. 00
13 Leereenheid Relationele databases: regels a Welke tabellen hebben geen verwijzing ( sleuteltje ) naar een andere tabel? b Welke tabel heeft twee verwijzingen naar andere tabellen? c Naar welke tabel wordt vanuit geen enkele andere tabel verwezen? OPGAVE. Welk van de multiliciteitendiagrammen a, b of c in figuur. is, voor wat betreft de multiliciteiten, equivalent met het strokendiagram in figuur d? a b c Rubriek Rubriek Rubriek Boek Boek Boek d code Rubriek omschrijving Boek boeknr titel rubriek FIGUUR. Welk multiliciteitendiagram ast bij het strokendiagram? OPGAVE. Dezelfde vraag als in ogave., nu met een verlichte kolom Boek.rubriek. OPGAVE.4 Een grootwinkelbedrijf heeft een aantal filialen. Werknemers kunnen werkzaam zijn bij niet meer dan één filiaal. Elk filiaal heeft onder normale omstandigheden één regiomanager, maar deze functie kan ook vacant zijn. Een regiomanager kan bij één van zijn of haar filialen werkzaam zijn (maar ook o het hoofdkantoor). De bedrijfsdatabase bevat onder meer de tabellen Werknemer en Filiaal. Figuur. geeft hiervan de structuurdiagrammen, met een kleine voorbeeldoulatie. Alleen enkele belangrijke kolommen zijn weergegeven. Ter onderscheiding zijn in het multiliciteitendiagram de associaties van een naam voorzien: een werknemer is werkzaam bij geen enkel of bij één filiaal, en een filiaal heeft maximaal één werknemer als regiomanager. Vraag: hoe zit het in deze structuur met de kwalificaties ouder en kind? 0
14 Oen Universiteit a Filiaal nr laats regiomanager Amsterdam Rotterdam Haarlem Dolstra de Boer Mier Bakker Cuido Werknemer nr naam filiaal b is werkzaam bij Filiaal Werknemer heeft als regiomanager FIGUUR. Tabellen met verwijzingen over en weer.0 BIJZONDERE BEPERKINGSREGELS Standaard beerkingsregels Bijzondere beerkingsregels De beerkingsregels die in de vorige aragrafen zijn behandeld, worden standaard beerkingsregels genoemd. We komen deze in elke relationele database tegen, omdat ze nauw samenhangen met de relationele structuur als zodanig. In een strokendiagram zijn dit soort regels in één oogoslag af te lezen, uit de horizontale en verticale ijlen en door het ontbreken van een o bij verlichte kolommen. De toetjesdatabase moet nog wel aan meer voorwaarden voldoen, secifieke toetjesregels, waarvoor geen grafische notatie bestaat. Dit soort regels zullen we soms in natuurlijke taal aan de diagrammen toevoegen. Voorbeelden van zulke bijzondere beerkingsregels zijn: in Ingredient mag hoeveelheidpp alleen oningevuld zijn als de energiewaarde van het roduct ook niet is ingevuld (zoals bij eer) of 0 is in Ingredient moet hoeveelheidpp oningevuld zijn als van het ingrediënt (in Product) geen eenheid gegeven is. De achtergrond van de eerste regel is dat het Toetjesboek automatisch de energiewaarde (energiepp) van een gerecht moet berekenen. Daarvoor moet de hoeveelheid van elk ingrediënt bekend zijn, behalve van ingrediënten die niets bijdragen aan die energiewaarde. De tweede regel geldt omdat een hoeveelheid geen betekenis heeft als er geen maateenheid is. Nog enkele voorbeelden van bijzondere beerkingsregels: een hoeveelheid is altijd groter dan 0 een energiewaarde is altijd groter dan 0 of gelijk aan 0.. HET BEWAKEN VAN BEPERKINGSREGELS De standaard beerkingsregels (verlichte kolommen, uniciteitsregels, rimaire sleutels, referentiële integriteit bij verwijssleutels) worden afgedwongen door ze o te nemen in de structuurdefinitie van tabellen. Deze structuurdefinitie wordt in de vorm van odrachten, geformuleerd in de gegevenstaal SQL, aan het rdbms meegedeeld. Hoe dit gaat, zien we in leereenheid 4 Communiceren met een relationele database. Ook enkele eenvoudige bijzondere beerkingsregels kunnen o deze wijze aan het rdbms kenbaar worden gemaakt, bijvoorbeeld de regels 0
15 Leereenheid Relationele databases: regels die een minimum- of maximumwaarde voor een kolom aangeven. Ingewikkelder beerkingsregels, en ook allerlei actief gedrag van de database (denk aan het automatisch berekenen van de energie er ersoon van een gerecht), moeten worden gerealiseerd door aanvullend rogrammeerwerk. Zie aragraaf.4 van leereenheid, over triggers.. KUNSTMATIGE SLEUTELS Kunstmatige sleutel Alternatieve sleutel De twee verwijssleutels Ingredient.gerecht en Ingredient.roduct bevatten vrij lange tekstvelden. Het kost het rdbms relatief veel tijd om daar de corresonderende rimaire sleutels in Gerecht resectievelijk Product bij te zoeken. Ook nemen ze nogal wat geheugenruimte in beslag. In laats van zulke lange tekstvelden worden daarom vaak numerieke codes gekozen als rimaire sleutel en verwijssleutel. In dit geval: kunstmatige gerechtnummers en roductnummers. Voor de eindgebruiker hebben deze kunstmatige sleutels geen betekenis; in de alicatie moeten ze daarom onzichtbaar blijven. En het is het rdbms zelf dat nieuwe gerechten en roducten zo n kunstmatig nummertje geeft, volautomatisch. Tenminste, wanneer bij de bouw van de database daarvoor de juiste voorzieningen zijn getroffen. Hoe dat gaat, zullen we later zien, in leereenheid. Zie figuur.4 voor een strokendiagram van Reijnders Toetjesboek met kunstmatige sleutels. Beide kolommen met kunstmatige nummers heten id. De oorsronkelijke rimaire sleutels, Gerecht.naam en Product.naam, hebben nu de status van alternatieve sleutel gekregen, zie aragraaf.4. a Gerecht id naam /energiepp bereidingstijd bereidingswijze Eenheid naam a Product id naam eenheid energiepe gerecht roduct Ingredient hoeveelheidpp FIGUUR.4 Strokendiagram met kunstmatige sleutels Figuur.5 geeft een voorbeeldoulatie. De kunstmatige verwijsnummers hoeven niet vanaf te loen en in de raktijk zullen ze vaak ook niet allemaal oeenvolgend zijn. Dat komt bijvoorbeeld doordat er ook wel eens gerechten en roducten verwijderd worden; hun nummertje wordt dan niet onieuw gebruikt. Maar het maakt allemaal niets uit: het zijn kunstmatige nummers, die altijd o de achtergrond blijven, onzichtbaar voor de gebruikers van Reijnders Toetjesboek. 0
16 Oen Universiteit Eenheid naam liter stuks deciliter gram kilogram eetleel theeleel Gerecht id naam energiepp bereidingstijd bereidingswijze Coue Kiwano Glace Terrace Mango Plus Plus Schil... Neem... Snijd... Product id naam eenheid energiepe ijs kiwano slagroom suiker tequila aardbeien ernod eer mango zure room banaan liter stuks deciliter gram eetleel gram eetleel stuks deciliter stuks Ingredient gerecht roduct hoeveelheidpp FIGUUR.5 Toetjesboek-database met kunstmatige sleutels Deze versie van het Toetjesboek is in de Boekverkenner beschikbaar onder de naam ToetjesboekKS ( met kunstmatige sleutels). Omdat ook in Nederlandse teksten vaak de Engelse benamingen van sleutels gebruikt worden, geven we tot slot van deze aragraaf de Engelse benamingen van de verschillende soorten sleutels en bovendien een veelgebruikt Nederlands synoniem voor verwijssleutel : Primary key Foreign key Vreemde sleutel Alternate key rimaire sleutel = rimary key verwijssleutel = foreign key = vreemde sleutel alternatieve sleutel = alternate key Gedragsregels Actie in reactie o gebeurtenissen Gedrag Via SQL of door aanvullend rogrammeerwerk kan worden gezorgd dat het rdbms acties onderneemt, in antwoord o beaalde gebeurtenissen (Engels: events). Zo n gebeurtenis kan zijn: een verandering van de database-inhoud of een oging daartoe. Ook het aanbreken van een beaald tijdsti kan een gebeurtenis zijn die het startsein is voor een actie van het rdbms. Processen die leiden tot veranderingen in de database, worden gedrag genoemd. 04
17 Leereenheid Relationele databases: regels Gedragsregel In deze aragraaf gaat het om voorgerogrammeerd gedrag in relatie met dreigende overtredingen van beerkingsregels. We sreken van gedragsregels. De belangrijkste zijn de refererende actieregels, die verband houden met het handhaven van referentiële integriteit bij het invoegen, verwijderen of wijzigen van een rij.. REFERERENDE ACTIEREGELS De referentiële integriteitsregel, die eist dat bij elke verwijssleutelwaarde (kind) een ouderrij bestaat, roet in twee gevallen roblemen o: bij het verwijderen van een ouderrij bij het wijzigen van de rimaire-sleutelwaarde in een ouderrij. Deleteregel Udateregel Refererende actieregel Restricted delete Cascading delete Nullifying delete In het eerste geval kunnen er verweesde kinderen achterblijven: rijen in de kindtabel met een loze verwijzing. In het tweede geval heeft een rij in de oudertabel zijn logisch adres (rimaire-sleutelwaarde) veranderd, terwijl eventuele kindrijen nog het oude adres (verwijssleutelwaarde) hebben. Om deze roblemen bij voorbaat o te lossen, wordt voor elke verwijzing een deleteregel en een udateregel gesecificeerd. Ze drukken uit of er iets mag gebeuren, en zo ja, wat er moet gebeuren bij een oging tot deleten van een rij of een oging tot udaten van een rimaire sleutel, beide in de oudertabel. De deleteregels en de udateregels heten samen de refererende actieregels. Deleteregels Er zijn drie deleteregels. Ze zeggen wat er moet gebeuren bij een oging tot deleten van een ouderrij. Voor elke verwijzing moet één van deze regels worden gesecificeerd. Restricted delete: een oging tot deleten van een ouderrij mislukt wanneer er één of meer corresonderende kindrijen bestaan. Cascading delete: bij een oging tot deleten van een ouderrij zal een oging tot deleten van alle corresonderende kindrijen worden ondernomen. Is er een (andere) regel die dat tegenhoudt, dan gaat het deleten niet door. Nullifying delete: bij een oging tot deleten van een ouderrij wordt geoogd verwijzingen in eventuele kindrijen o null te zetten. Is er een (andere) regel die dat tegenhoudt, dan gaat het deleten niet door. De restricted-deleteregel houdt een verbod o oudermoord in. Wat wel mag, is van onderaf beginnen: eerst de kinderen verwijderen en dan hun ouder. Van de drie deleteregels komt deze regel het meeste voor. Bij de meeste verwijzingen kunnen we dus niet zomaar een ouderrij verwijderen wanneer er nog één of meer rijen bestaan in de corresonderende kindtabel, zie figuur.6. Zoals al eerder ogemerkt, geldt deze regel automatisch wanneer géén van de andere is gesecificeerd. Hij is dan een direct gevolg van de referentiële-integriteitsregel, die altijd geldt. 05
18 Oen Universiteit Product naam eenheid energiepe ijs kiwano slagroom suiker tequila aardbeien ernod eer mango zure room banaan liter stuks deciliter gram eetleel gram eetleel stuks deciliter stuks oging tot delete van ouderrij... rd Ingredient gerecht roduct hoeveelheidpp Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Glace Terrace Glace Terrace Glace Terrace Glace Terrace Mango Plus Plus Mango Plus Plus Mango Plus Plus ijs kiwano slagroom suiker tequila ijs aardbeien ernod eer mango aardbeien zure room mislukt wanneer er nog één of meer corresonderende kindrijen bestaan. FIGUUR.6 Effect van restricted delete (rd) Wilt u het effect van een restricted delete omzeilen, dan zult u eerst welbewust de kindrijen van een ouderrij moeten verwijderen. Het roduct aardbeien kunt u dus as verwijderen, wanneer u eerst alle Ingredient-rijen met aardbeien erin hebt verwijderd. De cascading-deleteregel wordt doorgaans gesecificeerd voor verwijzingen zoals van Ingredient naar Gerecht. Een gebruiker die een Gerecht-rij wil verwijderen, zal ook de corresonderende Ingredient-rijen willen verwijderen, want zonder bijbehorend gerecht hebben deze geen bestaansreden. Zie figuur.7. Gerecht naam energiepp bereidingstijd bereidingswijze Coue Kiwano Glace Terrace Mango Plus Plus Schil... Neem... Snijd... oging tot delete van ouderrij... cd Ingredient gerecht roduct hoeveelheidpp Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Glace Terrace Glace Terrace Glace Terrace Glace Terrace Mango Plus Plus Mango Plus Plus Mango Plus Plus ijs kiwano slagroom suiker tequila ijs aardbeien ernod eer mango aardbeien zure room heeft oging tot delete van corresonderende kindrijen tot gevolg. Deze oging slaagt, in dit geval. FIGUUR.7 Effect van cascading delete (cd) 06
19 Leereenheid Relationele databases: regels Wanneer een te verwijderen kindrij zelf ouder is van een kleinkindrij, kan de verwijzing vanuit het kleinkind naar het kind de verwijdering alsnog tegenhouden, bijvoorbeeld wanneer daarvoor een restricted delete geldt! De nullifying-deleteregel komt in de raktijk weinig voor en wordt door veel rdbms en niet ondersteund. Udateregels Er zijn drie udateregels. Ze zeggen wat er moet gebeuren bij een oging om een rimaire-sleutelwaarde in een ouderrij te wijzigen. Voor elke verwijzing moet één van deze regels worden gesecificeerd. Restricted udate Cascading udate Nullifying udate Restricted udate: een oging tot udaten van de rimaire-sleutelwaarde in een ouderrij mislukt wanneer er één of meer corresonderende kindrijen bestaan. Cascading udate: bij een oging tot udate van een rimaire-sleutelwaarde in een ouderrij, wordt een oging tot udaten ondernomen van de verwijssleutelwaarden in alle corresonderende kindrijen. Is er een (andere) regel die dat tegenhoudt, dan gaat het udaten niet door. Nullifying udate: bij een oging tot udaten van een rimairesleutelwaarde in een ouderrij, wordt geoogd verwijzingen daarnaar in corresonderende kindrijen o null te zetten. Is er een (andere) regel die dat tegenhoudt, dan gaat het udaten niet door. Van de udateregels ligt de cascading udate het meest voor de hand: een verandering van een rimaire sleutelwaarde (bijvoorbeeld om een selfout te herstellen) zullen we vrijwel altijd willen laten doorwerken in de verwijzingen, om zodoende de corresondentie in stand te houden. Zie figuur.8. Het is zoiets als het doorgeven van een adreswijziging aan al je relaties; die wijzigen dan dit adres in hun eigen adresboekjes. Coue Reijnders Gerecht naam energiepp bereidingstijd bereidingswijze Coue Kiwano Glace Terrace Mango Plus Plus Schil... Neem... Snijd... oging tot udate van rimaire sleutel... Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Coue Kiwano Coue Reijnders Glace Terrace Coue Reijnders Glace Terrace Coue Reijnders Glace Terrace Coue Reijnders Glace Terrace Mango Plus Plus Mango Plus Plus Mango Plus Plus cu Ingredient gerecht roduct hoeveelheidpp ijs kiwano slagroom suiker tequila ijs aardbeien ernod eer mango aardbeien zure room heeft oging tot udate van verwijzende sleutelwaarden tot gevolg. Deze oging slaagt, in dit geval. FIGUUR.8 Effect van cascading udate (cu) Cascading udate: zoek-en-vervang Een rimaire-sleutelwaarde is het single oint of definition van een rijidentificatie. Alle verwijssleutelwaarden die naar die rij verwijzen, dienen er exact aan gelijk te zijn en te blijven. Dit wordt bereikt met de cascading udate, die functioneert als een soort zoek-en-vervang voor verwijssleutelwaarden bij 07
20 Oen Universiteit verandering van een rimaire-sleutelwaarde. Het ligt voor de hand om, gegeven een rimaire sleutel, ofwel voor alle verwijzingen ernaar een cascading udate te secificeren, ofwel voor geen enkele. Immers een halve zoek-en-vervang leidt tot een niet-consistente database. Aan de nullifying udate is in de raktijk weinig behoefte en door veel rdbms en wordt hij niet ondersteund. In figuur.9 is voor elke verwijssleutel één deleteregel (rd of cd) en één udateregel (steeds cu) gesecificeerd. Merk o dat voor de verwijzing van Ingredient naar Gerecht een cascading delete geldt, maar voor de overige verwijzingen een restricted delete. Dit betekent dat bij het verwijderen van een gerecht door de gebruiker de bijbehorende Ingredient-rijen automatisch meeverwijderd worden. Maar wanneer de gebruiker robeert een roduct te verwijderen, wordt dit tegengehouden zolang er nog gerechten zijn waarin dit roduct als ingrediënt voorkomt. Ook een Eenheid-rij kan niet zomaar verwijderd worden; dat kan alleen wanneer geen enkel roduct meer in die eenheid wordt gemeten. naam Gerecht /energiepp bereidingstijd bereidingswijze Eenheid naam cd, cu rd, cu Product naam eenheid energiepe gerecht rd, cu Ingredient roduct hoeveelheidpp volgnr FIGUUR.9 Strokendiagram met deleteregels en udateregels De delete- en udateregels worden gesecificeerd voor elke verwijssleutel afzonderlijk. In strokendiagrammen houden we de restricted delete en de cascading udate als default aan, omdat die het meeste voorkomen. Voor figuur.9 betekent dit alle regels behalve de cascading udate (cd) mogen worden weggelaten. In SQL moeten we de cascading udate wel secificeren, omdat daar de beide restricted varianten default zijn.. BIJZONDERE GEDRAGSREGELS De refererende acties moeten bij elke verwijzing worden gesecificeerd, en zijn daarom een tye regel dat in elke database voorkomt: het zijn standaard gedragsregels. Maar er zijn meestal ook gedragsregels die secifiek zijn voor de database. Deze noemen we bijzondere gedragsregels. Een voorbeeld van een bijzondere gedragsregel voor Reijnders Toetjesboek is de volgende. 08
21 Leereenheid Relationele databases: regels De energie er ersoon van een gerecht is afleidbaar uit de energie er eenheid van de roducten en de hoeveelheden er ersoon van de ingrediënten in het gerecht. Berekeningsvoorschrift: alle bij het gerecht horende hoeveelheden er ersoon vermenigvuldigen met de bijbehorende energiewaarden er eenheid en deze roducten otellen. Deze regel moet automatisch in werking treden nadat een nieuw gerecht met alle ingrediëntinformatie is ingevoerd en de gebruiker heeft aangegeven dat de informatie correct is ingevoerd en definitief mag worden vastgelegd. Maar ook moet de regel automatisch in werking treden wanneer er later nog een ingrediënt wordt toegevoegd of wordt verwijderd. En ook wanneer een van de gegevens uit het berekeningsvoorschrift wordt gewijzigd.. TRANSACTIES Een ovraging verandert niets aan de inhoud van een database. De volgende elementaire acties doen dat wel: invoeren van een nieuwe rij verwijderen van een rij wijzigen van een celinhoud binnen een rij. Vaak staan deze niet o zichzelf en moeten meerdere acties worden gebundeld om een zinvol resultaat te krijgen. We hebben hier al enkele voorbeelden van gezien. VOORBEELD. VOORBEELD. VOORBEELD. Om een nieuwe Gerecht-rij in te voeren, moeten we ook één of meer Ingredient-rijen invoeren. Wanneer zo n Ingredient-rij een nieuw roduct bevat, moet ook een nieuwe Product-rij worden ingevoerd. Wanneer de energie er eenheid van een roduct wordt gewijzigd, moet ook (automatisch) de energie er ersoon van de gerechten waarin dat roduct voorkomt, worden gewijzigd. Wanneer we een Gerecht-rij verwijderen, zijn we verlicht om behalve de Gerecht-rij zelf ook de bijbehorende Ingredient-rijen te verwijderen. Anders blijven we immers zitten met Ingredient-rijen die naar niks verwijzen, in strijd met de regel voor verwijssleutels. Dit wordt gerealiseerd door de cascading-deleteregel uit aragraaf.. Transactie Commit Al deze voorbeelden geven een oeenvolging van databaseacties te zien die van nature bij elkaar horen: doen we het één, dan moet ook het ander gebeuren. Zo n oeenvolging heet een transactie. Midden in een transactie hoeft niet aan alle regels te zijn voldaan, maar na afloo wel. Tijdens een transactie bestaat veelal een ongewenste situatie. Na afloo is alles in orde en kunnen we aan het rdbms odracht geven de veranderingen definitief te maken (Engels: commit). Zie figuur.0. 09
22 Oen Universiteit voltooide transactie toestand na vorige commitmoment toestand na nieuw commitmoment FIGUUR.0 Transactie: de acties tussen twee commitmomenten Rollback Het committen wordt in de meeste gevallen vanuit de alicatie geregeld, door het versturen van een seciale SQL-odracht (commit) naar het rdbms. Dit is al dan niet het gevolg van een bewuste actie van de gebruiker, bijvoorbeeld het aanklikken van een seciaal knoje: de commit-kno of save-kno. Wordt o dat moment niet aan alle regels voldaan, dan wordt de commit niet uitgevoerd en wordt teruggekeerd naar de toestand aan het begin van de transactie. Alle wijzigingen worden dan teruggedraaid (Engels: rollback), zie figuur.. Ook de gebruiker zelf kan de loende transactie annuleren, bijvoorbeeld door een seciale rollback- of undo -button aan te klikken. In dit geval wordt het SQL-statement rollback naar het rdbms verstuurd. FIGUUR. Rollback na onvoltooide transactie of exliciete rollbackodracht Korte transacties Transacties moeten zo kort mogelijk worden gemaakt. Een van de redenen daarvoor is de mogelijkheid informatie kwijt te raken wanneer tussentijds het systeem uitvalt door bijvoorbeeld een stroomstoring. In zo n geval wordt de transactie geannuleerd (rollback) en moeten we onieuw beginnen. Een andere reden is dat gebruikers nu eenmaal fouten maken en transacties daardoor soms niet kunnen worden voltooid. Ook in die gevallen vindt een rollback laats. Tot slot komt het bij lange transacties nogal eens voor dat het systeem een foutmelding geeft, maar dat de gebruiker niet meer kan achterhalen o welke actie die foutmelding recies betrekking heeft. In latere leereenheden komen we uitgebreid o transacties terug, onder meer o de roblematiek van concurrente transacties: transacties van meerdere gebruikers die elkaar in de tijd overlaen. OPGAVE.5 Voorsel het effect van elke hierna genoemde actie, uitgaande van de oulatie van figuur. en de structuurdiagrammen van figuren.7 en.9. Als dat effect alleen een foutmelding is, vertel dan welke databaseregel de oorzaak is van die foutmelding. Beschouw elke actie o zichzelf. 0
23 Leereenheid Relationele databases: regels a Poging tot toevoegen van een nieuwe Ingredient-rij ( Coue Kiwano, vanille, null). b Poging tot toevoegen van een nieuwe Ingredient-rij ( Coue Kiwano, suiker, ). c Poging tot toevoegen van een nieuwe Product-rij ( tjindang, koffieleel, ). d Poging tot toevoegen van een nieuwe Eenheid-rij ( slagroom ). e Poging tot verwijderen van de Product-rij ( kiwano, stuks, 40). f Poging tot verwijderen van de Product-rij ( banaan, stuks, 40). g oging tot verwijderen van de Gerechtrij ( Mango Plus Plus,, 8, Snijd... ). h Poging tot wijzigen van kiwano in chiwano in de kolom Product.roductnaam. i Poging tot wijzigen van de eenheidnaam van aardbeien: gram wordt ond. j Poging tot wijzigen van de bereidingstijd van Coue Kiwano in null. Meer over uniciteitsregels Van alle regels waaraan een relationele database moet voldoen, zijn de uniciteitsregels het meest rominent. De structuur van een database (denk aan sleutels) is er direct mee verbonden. Het vaststellen van de juiste uniciteitsregels is daarom essentieel. Hoe bealen we de juistheid van een voorgestelde uniciteitsregel? In deze aragraaf onderzoeken we welke uniciteitsregels in rincie mogelijk zijn en hoe ze kunnen samengaan. De verschillende mogelijkheden zullen we illustreren aan de hand van tabel Inschrijving van de voorbeelddatabase uit leereenheid : de Oen School.. INSCHRIJVINGEN BIJ DE OPEN SCHOOL Zie aragraaf. van leereenheid We hebben gezien dat de Oen School allerlei cursussen aanbiedt, zoals Inleiding informatica (code II), (code ) en Informatiemodelleren (code IM). Studenten kunnen zich daarvoor inschrijven. In figuur. ziet u een strokendiagram met twee voorbeeldinschrijvingen. De eerste kolom bevat studentnummers, waardoor studenten uniek worden geïdentificeerd, de tweede kolom bevat de vakcodes waardoor vakken uniek worden geïdentificeerd, de derde kolom bevat de datum waaro de inschrijving heeft laatsgevonden. welke uniciteitsregel(s)? Inschrijving IM 8-mrt-0 6-jan-0 FIGUUR. Tabel Inschrijving: welke uniciteitsregel(s)?
24 Oen Universiteit Het diagram bevat bewust geen uniciteitsijl, omdat we alle mogelijke uniciteitsregels en combinaties daarvan zelfs de meest onwaarschijnlijke zullen onderzoeken. De informatie in de twee rijen laat zich aldus verwoorden: student heeft zich ingeschreven voor cursus o 8-mrt-0 student heeft zich ingeschreven voor cursus IM o 6-jan-0 Om erachter te komen welke uniciteitsregels gelden, moeten allerlei vragen worden beantwoord, zoals: zou student zich ook mogen inschrijven voor cursus IM o nog een tweede dag? Of: zou student zich o 8-mrt-0 voor nog een tweede vak mogen inschrijven? Of: mag nog een tweede student zich o 8-mrt-0 inschrijven voor de cursus? Vanuit de raktijk liggen beaalde antwoorden misschien weinig voor de hand. Hier echter is het ons te doen om een systematisch onderzoek van wat in rincie mogelijk is aan eisen en regels. Daarbij gaat het om mogelijke uniciteitsregels over één kolom (zie, en in figuur.), over twee kolommen (4, 5 en 6) en over drie kolommen (7).???? Is student uniek? Is cursus uniek? Is datum uniek? 4 Is het zo dat student en cursus elk aart niet uniek zijn, maar de combinatie (student, cursus) wel???? 5 Is het zo dat student en datum elk aart niet uniek zijn, maar de combinatie (student, datum) wel? 6 Is het zo dat cursus en datum elk aart niet uniek zijn, maar de combinatie (cursus, datum) wel? 7 Zijn de combinaties (student, cursus), (student, datum) en (cursus, datum) geen van drieën uniek? FIGUUR. Uniciteitsregels over drie kolommen: zeven vragen Conventie Deze zeven regels zijn niet onafhankelijk van elkaar, omdat we uitgaan van de volgende conventie: wanneer van twee regels de ene regel strenger is dan de andere regel, formuleren we alleen de strengste regel. Formuleren we bijvoorbeeld regel 4, dan geven we daarmee imliciet aan dat de regels en niet gelden. En formuleren we regel 7, dan geven we daarmee aan dat alle andere regels niet gelden. Immers: wanneer we een ijl versmallen, verbiedt hij méér en wordt de regel strenger. In het algemeen imliceert een brede ijl dat alle smallere over één of meer van de betrokken kolommen niet gelden, zie figuur.4.
25 Leereenheid Relationele databases: regels FIGUUR.4 Een brede uniciteitsregel imliceert niet-uniciteit van de afzonderlijke kolommen of van smallere combinaties Het antwoord o de zeven vragen hangt af van de bedrijfsregels die voor de Oen School gelden, en is niet zonder meer een vanzelfsrekend ja of nee. In figuur.5 geven we voor vier van de zeven regels aan wat een ja zou inhouden, met steeds een kleine illustratieve voorbeeldoulatie. 4 IM 8-mrt-0 8-mrt-0 8-mrt-0 6-jan-0 Als deze regel geldt, mag elke student maar één inschrijving doen (voor één cursus o één dag). Meerdere inschrijvingen voor dezelfde cursus of o dezelfde dag zijn toegestaan, zelfs voor dezelfde cursus én dag. IM II IM II 8-mrt-0 8-mrt-0 8-mrt-0 6-jan-0 4 Als deze regel geldt, mag een student zich voor een cursus maar één keer (o één beaalde datum) inschrijven en niet nog eens voor dezelfde cursus o een andere datum. Een student mag zich inschrijven voor verschillende cursussen. Voor één cursus mogen zich meerdere studenten inschrijven. IM IM IM II 8-mrt-0 6-jan-0 8-mrt-0 6-jan-0 5 Als deze regel geldt, mag een student zich o een beaalde datum maar voor één cursus inschrijven. Een student mag zich echter meer dan één keer inschrijven, d.w.z. met meerdere cursus/datum-combinaties. Ook mogen o één datum meerdere inschrijvingen laatsvinden, d.w.z. met meerdere student/cursus-combinaties. IM 8-mrt-0 6-jan-0 8-mrt-0 8-mrt-0 7 Als deze 'regel' geldt, geldt in feite geen enkele regel: Studenten mogen zich voor dezelfde cursus meermalen inschrijven, o verschillende data. Studenten mogen zich o dezelfde datum meermalen inschrijven, voor verschillende cursussen. Voor een cursus mogen zich o één datum gegeven meerdere studenten inschrijven. FIGUUR.5 Vier van de zeven uniciteitsregels over drie kolommen. COMBINATIES VAN UNICITEITSREGELS In de vorige aragraaf hebben we gezien dat er zeven verschillende uniciteitsregels over drie kolommen mogelijk zijn. Deze regels kunnen gecombineerd voorkomen, voor zover er geen uniciteitsijlen zijn die helemaal over een andere heen liggen, zie figuur.4.
26 Oen Universiteit Figuur.6 geeft voor enkele mogelijke combinaties een illustratieve voorbeeldoulatie. Er zijn enkele onwaarschijnlijke combinaties bij, zoals b, waarbij elke kolom uniek is (en waarbij de Oen School waarschijnlijk snel failliet zal gaan). De oulaties illustreren de vrijheid die er nog is binnen de gegeven regels. Zo illustreert de oulatie van c dat de combinatie (student, datum) niet uniek is en de kolom cursus evenmin. En de oulatie van d illustreert dat elke kolom aart niet uniek is. IM II 8-mrt-0 8-mrt-0 6-jan-0 IM II 8-mrt-0 -feb-0 6-jan-0 a Elke student mag maar één inschrijving doen (voor een beaalde cursus o een beaalde datum). Voor elke cursus mag maar één inschrijving laatsvinden (door een beaalde student o een beaalde datum). O één datum mogen echter meerdere inschrijvingen laatsvinden. b Hetzelfde als a, met één verschil: O elke datum mag maar één inschrijving laatsvinden. 5 IM IM 8-mrt-0 8-mrt-0 5-ar-0 -feb-0 c Een student mag zich voor een cursus maar één keer inschrijven (o een beaalde datum). Per cursus mag o één dag maar één inschrijving laatsvinden. Student, cursus en datum, elk aart, mogen in meerdere inschrijvingen voorkomen. Ook mag een student zich o dezelfde dag voor meerdere cursussen inschrijven. 4 IM IM 8-mrt-0 6-jan-0 8-mrt-0 6-jan-0 IM 8-mrt-0 6-jan-0 8-mrt-0 d Hetzelfde als c, met één verschil: Een student mag zich er dag maar voor één cursus inschrijven. e Elk student mag zich maar één keer ergens voor inschrijven (voor één cursus o één datum). En voor elke cursus maar er dag maar één inschrijving laatsvinden. Voor een cursus mag echter meerdere inschrijvingen laatsvinden. O mogen o één dag meerdere inschrijvingen laatsvinden. FIGUUR.6 Enkele combinaties van uniciteitsregels over drie kolommen Uniciteitsregels in de raktijk In de raktijk is er meestal maar een beerkt aantal kolommen dat onder een uniciteitsregel valt. Bovendien zijn verreweg de meeste uniciteitsregels één, twee of drie kolommen breed. De overige kolommen vertegenwoordigen niet-unieke, gewone eigenschaen. De in deze aragraaf behandelde uniciteitsregels en hun combinaties geven daarom een aardige indruk van wat we in de raktijk kunnen tegenkomen. 4
27 Leereenheid Relationele databases: regels OPGAVE.6 We willen van elke student van de Oen School registreren via welke communicatiemiddelen, met bijbehorend adres, de student bereikbaar is. Communicatiemiddelen zijn bijvoorbeeld: telefoon, of een internetadres. Figuur.7 geeft een tabel Communicatieregel met twee rijen, die elk een communicatiefeit bevatten. Deze feiten hebben de volgende verwoordingen: student heeft telefoon-adres student 9 heeft adres [email protected] Communicatieregel student communicatiemiddel adres 9 telefoon [email protected] FIGUUR.7 Tabel Communicatieregel Geef de juiste uniciteitsregel(s) voor de tabel Communicatieregel, met een zo klein mogelijke, maar illustratieve voorbeeldoulatie. 4 Meer over verwijzingsregels In aragraaf zijn verwijssleutels behandeld, als een seciaal soort regel: de referentiële-integriteitsregel. Zo n regel houdt een verbod in o loze verwijzingen. Ofwel: elke verwijzende waarde hoort naar recies één rimaire-sleutelwaarde te verwijzen. In deze aragraaf gaan we dieer o het fenomeen verwijzing in. Achtereenvolgens kijken we naar: verwijssleutels van meer dan één kolom breed verwijzingen van een tabel naar zichzelf meerdere verwijzingen tussen dezelfde tabellen 4 verwijzingen waarbij geen sleutels betrokken zijn. Ter illustratie van t/m gebruiken we een uitgebreidere versie van de Oen School-database, die we hiertoe sta voor sta uitbreiden. 4. EEN SAMENGESTELDE SLEUTEL Samengestelde rimaire sleutel Een rimaire sleutel kan samengesteld zijn, dat wil zeggen: meer dan één kolom omvatten. De kolomwaarden vormen unieke combinaties, die als logische adressen van de rijen dienst doen. Een verwijzing naar een samengestelde rimaire sleutel is zelf ook samengesteld en vormt dus een samengestelde verwijssleutel. VOORBEELD.4 Tentamens o de Oen School Een student die zich bij de Oen School heeft ingeschreven voor een cursus verwerft daarmee het recht om tentamens af te leggen. Elk tentamen hoort bij één inschrijving, dat wil zeggen bij één combinatie van een student en een cursus. Een student mag voor een cursus meerdere keren tentamen doen, dus bij één inschrijving kunnen 5
28 Oen Universiteit meerdere tentamens horen. Deze worden van elkaar onderscheiden door een volgnummer. Van elk tentamen wordt natuurlijk een tentamendatum vastgelegd. Later zullen we de mogelijkheid toevoegen om behaalde cijfers en vrijstellingen o te nemen. Figuur.8 geeft het relevante deel van de nieuwe structuur: een strokendigram (a) en een voorbeeldoulatie (figuur b). a Inschrijving Tentamen student cursus volgnr datum b Inschrijving 4 4 II IM II IM II II -jan-0 8-mrt-0 0-jun-0 -jan-0 6-jan-0 6-jan-0 0-jan-0 9-feb-0 Tentamen student cursus volgnr datum 4 II IM IM 7-ar-0 5-jun-0 06-ar-0 -jun-0 6-jun-0 FIGUUR.8 Verwijzing over een brede sleutel Toelichting In tabel Tentamen is de kolomcombinatie (student, cursus) niet uniek: een student mag immers meer dan één keer tentamen doen voor dezelfde cursus. Evenmin zijn de combinaties (student, volgnr) en (cursus, volgnr) uniek, zoals de voorbeeldoulatie illustreert. Conclusie: er gelden over deze drie kolommen geen uniciteitsregels die twee kolommen breed zijn. De meest strenge regel is dus de uniciteitsregel over drie kolommen, zoals die in het strokendiagram is aangegeven. Deze combinatie wordt de rimaire sleutel. De combinatie (student, cursus) in Tentamen wijst naar de bijbehorende rij in tabel Inschrijving. We zien hier een voorbeeld van een samengestelde verwijssleutel, ook wel brede verwijssleutel genoemd. 4. EEN RECURSIEVE VERWIJZING Recursieve verwijzing In voorbeelden tot nu toe waren bij elke verwijzing twee verschillende tabellen betrokken. Er kunnen echter ook verwijzingen zijn van een tabel naar zichzelf: recursieve verwijzingen. 6
29 Leereenheid Relationele databases: regels VOORBEELD.5 Docenten die docenten vervangen Een voorbeeld ontlenen we weer aan de Oen School, waar veel docenten een vaste vervanger hebben. Zie figuur.9. a b vervanger Docent acr naam vervanger Docent DAT COD BAC C.Date E.Codd C.Bachman COD DAT Regel: Een docent mag niet zichzelf vervangen FIGUUR.9 Recursieve structuur: strokendiagram met voorbeeldoulatie (a) en multiliciteitendiagram (b) Toelichting Tabel Docent is uitgebreid met een extra, otionele kolom waarin de vervanger (als die er is) wordt aangegeven, met diens acroniem. Deze kolom wijst naar de tabel Docent zelf, zoals altijd via de rimaire sleutel. Vandaar dat er een verwijzingsijl loot van Docent.vervanger naar Docent.acr: een recursieve verwijzing. Ook in het multiliciteitendiagram (figuur b) is Docent met zichzelf verbonden. Zo lezen we: een docent kan nul of één vervanger hebben. Omgekeerd geldt dat een docent voor willekeurig veel (nul, één of meer) collega-docenten als vervanger mag otreden. In de voorbeeldoulatie is dat aantal echter 0 of. Ouder- en kindrollen bij een recursieve verwijzing Ook bij een recursieve verwijzing hebben we een oudertabel (waar de verwijzing naartoe gaat) en een kindtabel (waar de verwijzing vandaan gaat). Dat is twee keer dezelfde tabel, echter in verschillende rollen. In voorbeeld.5 is de oudertabel de tabel Docent in de rol van vervanger. De kindtabel is de tabel Docent in de rol vervangen worden. Virtuele tabel Wanneer we twee exemlaren van de tabel Docent zouden maken, één in de rol van ouder (naam: Vervanger) en een in de rol van kind (neutrale naam: Docent), dan zou dit het laatje van figuur.0 oleveren. Hieraan ziet u dat een recursieve verwijzing niets bijzonders is. Er bestaat maar één fysieke databasetabel Docent, de beide exemlaren kunt u als virtuele (denkbeeldige) tabellen ovatten. Elk exemlaar is identiek aan Docent, ook al gebruiken we het vanuit één secifiek gezichtsunt (zoals uitgedrukt door de naam). 7
30 Oen Universiteit Vervanger acr naam vervanger DAT COD BAC C.Date E.Codd C.Bachman COD DAT Docent acr naam vervanger DAT COD BAC C.Date E.Codd C.Bachman COD DAT zelfde tabel FIGUUR.0 Recursieve verwijzing als gewone verwijzing tussen twee virtuele exemlaren van Docent Tabelalias Een secifieke naam voor een tabelexemlaar wordt een alias of tabelalias genoemd. Een tabelalias wordt zó gekozen dat deze de rol uitdrukt die een secifiek tabelexemlaar vervult in een beaald robleem. Aliassen zullen we veelvuldig gebruiken in SQL. 4. EEN VEEL-VEEL-ASSOCIATIE TUSSEN EEN TABEL EN ZICHZELF Een recursieve verwijzing zorgt voor een ouder-kindrelatie tussen een tabel en zichzelf. We kunnen ook zeggen: hij realiseert een één-o-veelassociatie tussen een tabel en zichzelf. Zo zagen we in voorbeeld.5 de vervanger-associatie tussen tabel Docent en zichzelf. Veel-veel-associatie We bekijken nu een nieuw soort associatie tussen een tabel en zichzelf: een veel-veel-associatie. Omdat verwijzingen altijd één-veel-associaties oleveren, is daar een extra tabel voor nodig. Zie voorbeeld.6. VOORBEELD.6 Cursussen die voorkennis zijn voor andere cursussen Een cursus kan andere cursussen als verlichte voorkennis eisen. Een voorbeeld is de cursus (), die de cursussen Inleiding informatica (II) en Discrete wiskunde (DW) als voorkennis eist. Omgekeerd kan een cursus zelf verlichte voorkennis zijn voor andere cursussen. Zo is zelf voorkennis voor de cursussen Informatiemodellering (IM) en Business intelligence (BI). Aldus krijgen we de volgende vier voorkenniseis-feiten : cursus eist als voorkennis cursus II cursus eist als voorkennis cursus DW cursus IM eist als voorkennis cursus cursus SW eist als voorkennis cursus Deze feiten kunnen we niet onderbrengen in de tabel Cursus, omdat een cursuscode in elke der beide cursuscodekolommen van het feitenrijtje kennelijk meervoudig kan voorkomen. Er is dan ook een aarte tabel nodig; zie de tabel Voorkenniseis in figuur., met strokendiagram (figuur a) en voorbeeldoulatie (figuur b). Merk o dat Cursus en 8
31 Leereenheid Relationele databases: regels Voorkenniseis o twee manieren een ouder-kindaar vormen, via elk der twee verwijzingen. a Cursus code naam examinator cd Voorkenniseis cursus voorkennis b Cursus code naam examinator I I DW IM SW Inleiding informatica Discrete wiskunde Informatiemodelleren Semantic web Voorkenniseis cursus voorkennis IM SW II DW BAC DAT COD DAT FIGUUR. Veel-veel-associatie tussen Cursus en zichzelf via extra tabel Omdat Voorkenniseis.cursus en Voorkenniseis.voorkennis geen van beide uniek zijn, zien we een brede rimaire sleutel. Deleteregels Het leek ons redelijk dat een cursus die voorkennis is voor één of meer andere cursussen niet zomaar verwijderd kan worden. Vandaar een restricted delete voor de verwijzende sleutel bij Voorkenniseis.cursus. Echter, bij een (voorgenomen) verwijdering van een cursus X ligt het voor de hand ook alle voorkennisfeiten te willen verwijderen van het tye cursus... is voorkennis voor cursus X. Vandaar een cascading delete voor de verwijzende sleutel bij Voorkenniseis.voorkennis. 4.4 EEN VEEL-VEEL-ASSOCIATIE TUSSEN EEN TABEL EN EEN ANDERE TABEL Ook tussen twee verschillende tabellen kan een veel-veel-associatie bestaan. Een mooi voorbeeld is de begeleidingsassociatie tussen Cursus en Docent: een cursus kan door meerdere docenten worden begeleid, terwijl omgekeerd een docent meerdere cursussen kan begeleiden. Van beide kanten gezien gaat het om een meervoudig kenmerk. Zo n meervoud (cursussen, docenten) kan noch als Docent-attribuut noch als Cursus-attribuut worden ogeslagen. De olossing is ook nu een extra tabel, zie tabel Begeleider in figuur.. Elke Begeleider-rij is een combinatie van een docent en een door die docent begeleide cursus. 9
32 Oen Universiteit acr Docent naam Cursus code naam examinator cd Begeleider docent cursus FIGUUR. Veel-veel-associatie tussen Docent en Cursus via extra tabel Deleteregels Wanneer een cursus wordt verwijderd, hoeft die ook niet meer begeleid te worden. Vandaar de cascading delete voor de verwijzing van Begeleider naar Cursus. Voor beide verwijzingen naar Docent geldt echter een restricted delete: een docent mag as verwijderd worden wanneer hij geen taken meer heeft. 4.5 NIET-SLEUTELVERWIJZINGEN Sleutels bieden volgens de relationele theorie dé manier om de rijen van een tabel logisch te adresseren. Het logische adres van een rij is de rimaire-sleutelwaarde, die men elders kan gebruiken in de vorm van een verwijssleutelwaarde. In de raktijk zijn er ook andere manieren om een rij logisch te adresseren, zoals voorbeeld.7 illustreert. VOORBEELD.7 Het strokendiagram van figuur. toont een structuur met een intervalverwijzing. naam Plaats beginostcode eindostcode Constraints: - beginostcode <= eindostcode - disjuncte intervallen Cursist nr... ostcode huisnr FIGUUR. Intervalverwijzing Aan Student zijn twee kolommen toegevoegd: ostcode en huisnr. Van de overige kolommen is alleen de rimaire sleutel getoond. Er is uitgegaan van de Nederlandse ostcodesystematiek. De studentlaatsnaam wordt gevonden via de ostcode (als deze is geregistreerd), in een Plaats-tabel met de gestandaardiseerde laatsnamen en het ostcode-interval van elke laats. We nemen hier aan dat elke laats 0
33 Leereenheid Relationele databases: regels recies één eigen ostcode-interval heeft en één unieke laatsnaam (te bereiken door aan de naam zo nodig een rovinciecode toe te voegen). Ter illustratie geven we in figuur.4 een kleine voorbeeldoulatie. naam Amsterdam Utrecht Plaats beginostcode eindostcode 000AA 00AA 99ZZ 800ZZ Cursist nr... ostcode KL 45PZ 045AF 079LN FIGUUR.4 Voorbeeldoulatie bij intervalverwijzing ostcodes De ostcode van student 4 ligt tussen die van student en die van student 5 in. Wanneer we weten dat student en student 5 beide in Amsterdam wonen, kunnen we concluderen dat student 4 ook in Amsterdam woont. Verwijzende woonlaatssleutels in de studententabel zouden dus tot redundantie leiden. De gegeven structuur, waarbij de ostcodesystematiek in de database zelf wordt ogenomen, is veel efficiënter en vrij van redundantie. Niet-sleutelverwijzing Een verwijzing die o een andere manier tot stand komt dan via gelijkheid van sleutelwaarden, noemen we een niet-sleutelverwijzing. Meestal gaat het om een intervalverwijzing. In diagrammen geven we een niet-sleutelverwijzing aan met een stiellijn. Merk o dat beginostcode en eindostcode in Plaats beide verlicht en uniek zijn, en dus eigenlijk elk een alternatieve sleutel vormen. Het heeft echter niet zoveel zin deze te vermelden, omdat er een veel sterkere regel geldt: de ostcode-intervallen zijn disjunct, dat wil zeggen dat twee intervallen niets gemeenschaelijk hebben. Het is deze sterkere regel die maakt dat er werkelijk van een verwijzing srake kan zijn. OPGAVE.7 Een cursusgroe van de Oen School heeft een alarmlijn, waarmee studenten elkaar dringende boodschaen doorgeven, zoals het uitvallen van een les. De werking is simel: één ersoon (de contactersoon van de groe) start de lijn en belt één of meer medestudenten. Die bellen o hun beurt ook één of meer anderen, enzovoort. Elke betrokkene, behalve degene die de lijn start, wordt door één ander gebeld. Het belschema staat vast en is aan iedereen bekend, zie voor een voorbeeld figuur.5.
34 Oen Universiteit. Inge Berk Max Tack Sofie van Esch Wim Bos Iris van Eik Pim Hazelaar Cees in 't Woud Anna Roos FIGUUR.5 Belschema alarmlijn Breng de naamgegevens en de wie belt wie? -gegevens van figuur.5 onder in een (volledig genormaliseerde) tabel Student, met kolommen voor voornaam, voorvoegsel en achternaam. Maak een strokendiagram. De telefoonnummers zelf mogen buiten beschouwing blijven, omdat deze al zijn ogenomen in de tabel Communicatieregel van ogave.6. 5 De OenSchool-database Tot slot van deze leereenheid voegen we een deel van de veranderingen aan de Oen School-database samen. Ook voegen we er nog een enkel detail aan toe, zie figuur.6. We geven de database nu een technische naam: OenSchool. Docent acr naam vervanger Student nr naam mentor code Cursus naam uren credits examinator cd Begeleider docent cursus cd cursus cd Voorkenniseis voorkennis Inschrijving /cijfer vrijstelling Tentamen student cursus volgnr datum cijfer FIGUUR.6 Strokendiagram OenSchool-database
35 Leereenheid Relationele databases: regels ECTS = Euroean Credit Transfer System Toelichting Het hart van het diagram wordt nog steeds gevormd door de vier tabellen Docent, Student, Cursus en Inschrijving. Tabel Docent heeft er een kolom vervanger bijgekregen, met bijbehorende recursieve verwijzing (zie aragraaf 4.). Aan Cursus is een kolom uren toegevoegd (voor de studiebelasting in uren) en een kolom credits (voor de zwaarte van een cursus, uitgedrukt in ECTS-credits). Ook is er als meervoudig kind de tabel Voorkenniseis bijgekomen, met twee verwijzende sleutels (zie aragraaf 4.). Aan Inschrijving is de kindtabel Tentamen toegevoegd, met een verwijzing over een tweekolomssleutel (zie aragraaf 4.). Tot slot hebben Docent en Cursus een gemeenschaelijke kindtabel Begeleider gekregen (zie aragraaf 4.4). Cijfers en vrijstellingen De tabellen Inschrijving en Tentamen bevatten informatie over cijfers en vrijstellingen. Deze kunnen we het beste toelichten aan de hand van een voorbeeldoulatie; zie figuur.7. FIGUUR.7 Voorbeeldoulatie OenSchool-database
36 Oen Universiteit Een Tentamen-rij wordt ingevoerd zodra een student zich voor dat tentamen heeft ingeschreven. Er is dan nog geen cijfer bekend, vandaar dat cijfer otioneel is. Elk tentamencijfer dat wordt ingevoerd, leidt tot berekening (of herberekening) van het bijbehorende cijfer in Inschrijving.cijfer, als het maximum van de corresonderende tentamencijfers. U kunt dit in de voorbeeldoulatie nagaan. Studenten kunnen voor een cursus vrijstelling aanvragen. Zodra daarover een beslissing is genomen, leidt dit tot een J ( ja ) of N ( nee ) in kolom Inschrijving.vrijstelling. Er geldt de volgende bedrijfsregel, die we later als databaseconstraint kunnen imlementeren: Een student mag zich as inschrijven voor een tentamen als hij voor de voorkennisvakken een voldoende heeft of vrijstelling. Uren en credits Omerking: officieel is er een corresondentie tussen de studiebelasting in uren en de waardering van een cursus in ECTS-credits: ECTS = 8 uur. In de tabel zijn de waarden onafhankelijk en gelden zij slechts bij benadering. S A M E N V A T T I N G Introductie Paragraaf Een relationele database kent behalve een structuurdefinitie ook regels. Er zijn twee soorten regels: beerkingsregels: deze geven, in de vorm van een gebod of een verbod, aan wat allemaal mag of moet worden ingevuld als oulatie gedragsregels: deze zeggen welke acties onder beaalde voorwaarden moeten worden ondernomen, ofwel ze houden een actie juist tegen. De belangrijkste tyen beerkingsregels zijn de standaard beerkingsregels, die in elke relationele database voorkomen. Standaard beerkingsregels verlichte-waarderegel voor kolom uniciteitsregel voor kolom uniciteitsregel voor kolomcombinatie kandidaatsleutel rimaire sleutel alternatieve sleutel Elke rij in die kolom moet een waarde bevatten. Een niet-ingevulde waarde heet een null. Deze regel zegt dus dat null s niet zijn toegestaan. Elke waarde in die kolom mag maar één keer voorkomen. Elke waardencombinatie in die kolomcombinatie mag maar één keer voorkomen, terwijl deze beerking niet geldt voor de afzonderlijke kolommen of smallere kolomcombinaties. Zo zuinig mogelijk gekozen suersleutel, in de zin dat na het verwijderen van een kolom niet meer aan de suersleuteleis wordt voldaan. Elke tabel heeft minstens één kandidaatsleutel. Kandidaatsleutel die is gekozen om verwijzingen o te baseren. Kandidaatsleutel die niet de rimaire sleutel is. 4
37 Leereenheid Relationele databases: regels referentiële-integriteitsregel multiliciteitsregel Als een kolom (of kolomcombinatie) een verwijssleutel vormt, moet elke waarde (resectievelijk waardencombinatie) voorkomen als rimaire-sleutelwaarde in de doeltabel. Volgens deze regel zijn loze verwijzingen niet toegestaan. Regel die, voor een ouder-kind-tabelcombinatie, een minimum en/of een maximum aangeeft voor: het aantal kindrijen bij één ouderrij het aantal ouderrijen bij één kindrij. Deze aantallen worden grafisch genoteerd in een multiliciteitendiagram. Buiten deze standaard beerkingsregels zijn er de bijzondere beerkingsregels, waarvoor geen standaardnotatie bestaat, en die daarom in tekst aan een structuurdiagram worden toegevoegd. Paragraaf Gedragsregels hebben meestal een secifiek karakter. Er is één standaardtye, dat voor elke verwijzing (exliciet of imliciet) moet worden gesecificeerd: de refererende-actieregels. Refererende-actieregels deleteregels udateregels Deze secificeren voor de kindtabel wat er met een rij moet gebeuren wanneer wordt geoogd de bijbehorende ouderrij te verwijderen. Er zijn drie mogelijkheden. restricted delete cascading delete nullifying delete verwijderen wordt tegengehouden zolang er nog een kindrij bestaat de oging heeft tot gevolg dat wordt geoogd ook alle kindrijen te verwijderen de oging heeft tot gevolg dat wordt geoogd de verwijzende kolomwaarden null te maken Deze secificeren wat er gebeurt bij een oging tot udaten van een rimaire-sleutelwaarde. Er zijn drie mogelijkheden. restricted udate cascading udate nullifying udate udate wordt tegengehouden zolang er nog een of meer kindrijen bestaan met een verwijzing naar die rimairesleutelwaarde de oging heeft tot gevolg dat wordt geoogd ook alle verwijzende kolomwaarden o dezelfde manier te udaten de oging heeft tot gevolg dat wordt geoogd de verwijzende kolomwaarden null te maken 5
38 Oen Universiteit Gedragsregels zijn nauw verbonden met transacties. Een transactie is een reeks databaseacties tussen twee commitmomenten (momenten waaro alle wijzigingen definitief worden gemaakt). Een transactie wordt ofwel in zijn geheel, ofwel niet uitgevoerd. Paragraaf Een uniciteitsregel over een kolom of kolomcombinatie houdt een verbod in o het meervoudig voorkomen van een kolomwaarde resectievelijk waardencombinatie. De conventie is om alleen de meest strenge regels te benoemen. Bij grafische weergave door een uniciteitsijl betekent dit dat de ijl zo smal mogelijk getekend wordt. Hierdoor is het onmogelijk dat een uniciteitsijl helemaal over een andere, smallere, uniciteitsijl heen ligt. Over drie kolommen zijn zeven uniciteitsregels mogelijk: drie over één kolom, drie over twee kolommen en één over alle drie de kolommen. Deze kunnen o allerlei manieren worden gecombineerd. Over vier kolommen is het aantal mogelijke regels veel groter. Paragraaf 4 Een verwijssleutel is meer dan alleen een kolom of kolomcombinatie; het is een verbodsregel. Het verbod in kwestie is een verbod o loze verwijzingen: de referentiële-integriteitsregel. Wanneer verwezen wordt naar een samengestelde rimaire sleutel, is de verwijssleutel eveneens samengesteld. Een bijzonder geval van een verwijssleutel is een recursieve verwijzing: een verwijzing naar rijen van de eigen tabel. Een verwijssleutel is gebaseerd o sleutelwaardengelijkheid: die van de verwijssleutelwaarde zelf en die van de rimaire sleutel waarnaar wordt verwezen. Een verwijzing kan echter ook o een andere manier tot stand komen. Een voorbeeld van zo n niet-sleutelverwijzing is een intervalverwijzing. Z E L F T O E T S Teken een strokendiagram van de Orderdatabase (zie zelftoets leereenheid ), met de regels die daarvoor volgens de gegeven beschrijving gelden: verlichte-waarderegels (aangegeven door een otionaliteitsmarkering van de niet-verlichte kolommen), rimaire sleutels en eventueel alternatieve sleutels. Geef ook aan welke refererende-actieregels (delete- en udateregels) naar uw mening zouden moeten gelden. In de volgende ogaven wordt de Orderdatabase sta voor sta gewijzigd en uitgebreid. Raadleeg hierbij zéker de uitwerkingen, want die geven de juiste uitgangssituatie voor volgende leereenheden. Elke orderregel van de Orderdatabase geven we een volgnummer, dat uniek is er order (zie figuur.8). 6
39 Leereenheid Relationele databases: regels order_ volgnr artikel aantal bedrag Orderregel FIGUUR.8 Tabel Orderregel Welke consequentie heeft dit voor het strokendiagram? Als onderdeel van een nieuwe marketingstrategie wordt voor klanten de mogelijkheid geoend andere klanten aan te brengen. Hieraan is een bonusregeling gekoeld (die hier verder buiten beschouwing blijft). Welke wijziging moet de databasestructuur ondergaan om het aanbrengen van klanten te kunnen administreren? Teken die wijziging in het strokendiagram. Teken voor het gewijzigde deel ook een multiliciteitendiagram. 4 De directie besluit tot introductie van een klachtregistratiesysteem. Klachten zullen worden geregistreerd o het niveau van orderregels: elke klacht zal dus betrekking hebben o één orderregel, maar er orderregel kunnen door de klant meerdere klachten worden ingediend. Elke klacht krijgt een uniek klachtnummer. Tevens wordt geregistreerd of de klacht is afgehandeld. Geef in het strokendiagram aan hoe de databasestructuur moet worden uitgebreid. 5 Voor afname van grotere hoeveelheden van één artikel geldt een systeem van kwantumkorting. Bij afname van 0 t/m 49 stuks bijvoorbeeld geldt een korting van 5%. Het kortingsercentage is onafhankelijk van het artikel. Teken de noodzakelijke uitbreiding van het strokendiagram. 6 Een artikel kan behoren tot een artikelgroe. Artikelgroeen worden uniek geïdentificeerd door een code en tevens door een omschrijving. Verder moeten vanaf nu in laats van de rijs een aarte verkoorijs en inkoorijs worden geregistreerd. Tot slot moet van elk artikel de voorraad moet worden bijgehouden. Teken het bij deze aanassingen horende fragment van het strokendiagram. 7 Teken een strokendiagram waarin alle ingreen van de voorgaande ogaven zijn verwerkt. Omerking: het resultaat is een logisch relationeel model. Het imlementatiemodel kan hiervan nog gaan afwijken. Een kleine afwijking is voor ons van belang: ORDER (in hoofdletters of kleine letters) is een zogenaamd gereserveerd SQL-woord (een woord dat tot de vaste SQLtaalschat behoort). In sommige dialecten, waaronder Firebird, is het om die reden niet bruikbaar als tabelnaam of kolomnaam. Voeg om die reden aan de tabelnaam Order of kolomnaam order een underscore toe: Order_ resectievelijk order_. 7
40 Oen Universiteit T E R U G K O P P E L I N G Uitwerking van de ogaven. a Gerecht en Eenheid b Ingredient c Ingredient. Omdat Boek.rubriek otioneel is, hoort bij een boek ofwel geen ofwel recies één rubriek. Dus: 0 of. Diagram c valt daardoor af. Omdat bij het strokendiagram geen extra regel gegeven is, is het toegestaan rubrieken o te nemen zonder dat in de database ook een boek van die rubriek is ogenomen. Dus: bij een rubriek horen 0 of meer (willekeurig veel) boeken. Ook diagram a valt daardoor af, zodat alleen diagram b in overeenstemming is met het multiliciteitendiagram.. Boek.rubriek is nu verlicht, zodat bij elk boek recies één rubriek hoort. Alleen diagram c klot met het strokendiagram..4 De kwalificaties ouder en kind gelden altijd relatief ten ozichte van een verwijzing. In figuur. zijn Filiaal en Werknemer ouder resectievelijk kind ten ozichte van de verwijzing is werkzaam bij. Ten ozichte van de verwijzing heeft als regiomanager is juist Filiaal het kind en Werknemer de ouder. Onze tekenconventie om de ouder altijd boven het kind te tekenen, kunnen we in dit soort situaties natuurlijk niet volhouden. Omerking: een realistische database voor het grootwinkelbedrijf zou ten minste ook een tabel Regio bevatten, waardoor deze structuur niet recies zo zou voorkomen..5 a Foutmelding vanwege (een dreigende overtreding van) de referentiële-integriteitsregel: vanille komt niet voor in Product.naam. b Foutmelding vanwege de rimaire sleutel van Ingredient: de combinatie ( Coue Kiwano, suiker ) bestaat al. c Foutmelding vanwege de referentiële-integriteitsregel: koffieleel bestaat niet in Eenheid.naam. d De rij wordt toegevoegd (het rdbms weet niet, zoals wij, dat slagroom geen eenheid is). e Foutmelding vanwege de referentiële-integriteitsregel en de restricted delete bij de verwijzing van Ingredient naar Product. f De rij wordt verwijderd. g De rij wordt verwijderd, samen met alle bijbehorende Ingredientrijen, omdat voor de verwijzing van Ingredient naar Gerecht een cascading delete geldt. h De verandering wordt doorgevoerd, niet alleen in Product, maar ook in alle voorkomens van kiwano in de kolom Ingredient.roduct, als gevolg van de cascading udate die geldt voor de verwijzing van Ingredient naar Product. i Foutmelding vanwege de referentiële-integriteitsregel: ond is geen bestaande eenheid. j Foutmelding omdat Gerecht.bereidingstijd verlicht is. 8
41 Leereenheid Relationele databases: regels.6 Er is één brede uniciteitsregel(zie figuur.9). Communicatieregel cursist communicatiemiddel adres FIGUUR.9 Deze houdt in dat smallere regels niet gelden. Er is namelijk geen reden voor beaalde beerkingen, zoals de volgende voorbeeldoulatie illustreert (zie figuur.40). Communicatieregel cursist communicatiemiddel adres telefoon telefoon fax telefoon FIGUUR.40 Toelichting De volgende beweringen geven aan waarom de drie mogelijke uniciteitsregels over twee kolommen niet gelden: een student kan twee verschillende telefoonnummers hebben een student kan een telefoonnummer delen met een andere student een student kan één nummer hebben voor zowel telefoon als fax..7 De wie-belt-wie-associatie is één-o-veel en kan worden gerealiseerd met een recursieve verwijzing van Student naar zichzelf. Zie het strokendiagram van figuur.4a en de voorbeeldoulatie van figuur.4b. a Student nr voornaam voorvoegsel achternaam student_door_wie_gebeld b Student nr voornaam voorvoegsel achternaam student_door_wie_gebeld Inge Max Wim Iris Sofie Pim Cees Anna van van in 't Berk Tack Bos Eik Esch Hazelaar Woud Roos FIGUUR.4 9
42 Oen Universiteit Uitwerking van de zelftoets Zie figuur.4. nr Klant naam Order nr klant datum /totaalbedrag cd a Artikel nr omschrijving verkoorijs order artikel aantal Orderregel i /bedrag FIGUUR.4 Voor de verwijzing van Orderregel naar Order hebben we een cascading delete gesecificeerd: omdat een order één is met zijn orderregels imliceert het (willen) verwijderen van een order het (willen) verwijderen van al zijn orderregels. Orderregel krijgt twee, overlaende uniciteitsregels (zie figuur.4). a order volgnr artikel aantal Orderregel i /bedrag FIGUUR.4 Nu kunnen we kiezen welke we als rimaire sleutel nemen, de ander wordt dan vanzelf alternatieve sleutel. De combinatie (order, volgnr) is onze favoriet voor de rimaire sleutel. De reden is dat het bestaansrecht van een volgnummer helemaal is gelegen in de unieke identificatie van een orderregel binnen een order. De uniciteitsregel over (order, volgnr) zal daarom ook nooit vervallen. Daarentegen is best denkbaar dat geen uniciteitsregel geldt over (order, artikelnr): we zouden immers kunnen toelaten dat een order meerdere orderregels bevat over hetzelfde artikel. Om het aanbrengen van klanten door klanten te kunnen administreren is een recursieve verwijzing nodig van Klant naar Klant. Figuur.44 geeft een strokendiagram (figuur a) en een multiliciteitendiagram (figuur b). a Klant nr naam aanbrenger b aanbrenger Klant FIGUUR.44 0
43 Leereenheid Relationele databases: regels Als constraint zou nog toegevoegd kunnen worden: een klant mag niet zichzelf aanbrengen. 4 Zie figuur.45. a Orderregel i order volgnr artikel aantal /bedrag Klacht nr order volgnr behandeld FIGUUR.45 5 Een ontwervraag is hier: als kortingsercentages veranderen, moeten dan de oude kortingsercentages (gebruikt voor bestaande orderregels) nog bekend blijven? Zo ja, dan is het gewenst Orderregel een extra kolom korting te geven, die on insert automatisch wordt gevuld en daarna onveranderbaar is. We zullen van deze mogelijkheid afzien, het strokendiagram wordt dan als volgt uitgebreid (zie figuur.46). Kortingsinterval beginaantal eindaantal korting a nr volgnr artikel aantal Regels: - beginaantal <= eindaantal - intervallen aaneensluitend vanaf 0 Orderregel i /bedrag FIGUUR.46 Omerkingen Merk o dat voor Kortingsinterval geen sleutels zijn gedefinieerd. In laats daarvan is een regel ogenomen die garandeert dat de intervalverwijzingen voor alle niet-negatieve aantallen (tot aan een zeker maximum) correct werken. Als die (zeer sterke) regel wordt afgedwongen hoe, dat zien we later wel heeft het geen zin om Kortingsinterval ook nog te controleren o een rimaire sleutel voor beginaantal of een alternatieve sleutel voor eindaantal. Primaire en alternatieve sleutels zijn hier als regel te zwak. Alleen de sterkste regels hoeven te worden bewaakt. Als gevolg van deze wijziging moet de regel voor de automatische berekening van de orderregelbedragen worden aangeast.
44 Oen Universiteit 6 Zie figuur.47. code Artikelgroe a omschrijving a Artikel nr omschrijving artikelgroe verkoorijs inkoorijs voorraad FIGUUR.47 Fragment strokendiagram met Artikel en Artikelgroe 7 Zie figuur.48. Klant nr naam aanbrenger Order_ nr klant datum /totaalbedrag code Artikelgroe a omschrijving a Artikel nr omschrijving artikelgroe verkoorijs inkoorijs voorraad cd Kortingsinterval beginaantal eindaantal korting a order_ volgnr artikel aantal Orderregel i /bedrag Regels Kortingsinterval en Orderregel: - beginaantal <= eindaantal - intervallen aaneensluitend vanaf 0 - elk orderregelaantal binnen interval Klacht nr order_ volgnr behandeld FIGUUR.48 Volledig strokendiagram Orderdatabase Zie de bijlage achterin dit deel voor een voorbeeldoulatie.
Inhoud leereenheid 3. Normalisatie. Introductie 67. Leerkern 68. Samenvatting 85. Zelftoets 87. Terugkoppeling 89
Inhoud leereenheid 3 Normalisatie Introductie 67 Leerkern 68 1 De eerste normaalvorm 68 2 Functionele afhankelijkheid 70 2.1 Functionele afhankelijkheid en sleutels 70 2.2 Functionele afhankelijkheid in
Relationele databases: structuur
Leereenheid Relationele databases: structuur Leereenheid Relationele databases: structuur I N T R O D U C T I E Een relationele database is één component van een groter systeem, een informatiesysteem.
Integriteitsbewaking bij een relationele database
Integriteitsbewaking bij een relationele database Bij het ontwikkelen van een informatiesysteem voor een organisatie moet er koste wat koste voor gezorgd worden, dat er geen tegenstrijdige gegevens in
Handleiding Japanse puzzels
Handleiding Japanse puzzels versie : 1.0 wijziging : 26-4-2010 Inhoud 1.Japanse puzzel...4 1.1.Speler...4 1.2.Kleur...4 1.3.Groep...4 1.4.Favoriet...4 1.5.Puzzel...4 1.6.Prima...5 1.7.Spel...5 1.8.Stap
1 Relationele databases: structuur
1 Relationele databases: structuur Een relationele database is één component van een groter systeem, een informatiesysteem. De database bevat, gestructureerd in de vorm van tabellen, de gegevens die voor
Bijlage Inlezen nieuwe tarieven per verzekeraar
! Bijlage inlezen nieuwe tarieven (vanaf 3.2) Bijlage Inlezen nieuwe tarieven per verzekeraar Scipio 3.303 biedt ondersteuning om gebruikers alle tarieven van de verschillende verzekeraars in één keer
hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1
relationele databases 9.1 hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit Als voorbeeld nemen we een eenvoudige database, bestaande uit twee tabellen. De
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.
Relationele databases en SQL: samenvattingen
Relationele databases en SQL: samenvattingen Hoofdstuk 1 Paragraaf 1.1 Het relationele model is de theorie over gegevensverzamelingen bestaande uit tabellen, de wijze waarop tabellen onderling samenhangen
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
Werken met eenheden. Introductie 275. Leerkern 275
Open Inhoud Universiteit Appendix B Wiskunde voor milieuwetenschappen Werken met eenheden Introductie 275 Leerkern 275 1 Grootheden en eenheden 275 2 SI-eenhedenstelsel 275 3 Tekenen en grafieken 276 4
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
EMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen
Inleiding In het boek Databases & SQL wordt beschreven hoe opdrachten in de programmeertaal SQL gebruikt worden om de inhoud van een relationele database te raadplegen en te bewerken. SQL wordt daarbij
Relationele databases en SQL: samenvattingen
Relationele databases en SQL: samenvattingen Hoofdstuk 1 Paragraaf 1.1 Het relationele model is de theorie over gegevensverzamelingen bestaande uit tabellen, de wijze waarop tabellen onderling samenhangen
Uitwerkingen van opgaven
, 3 e druk Uitwerkingen van opgaven Uitwerkingen hoofdstuk 1 1.1 0.15 1600 + 0.5 40 + 0.3 336 + 10 4 + 1 30 geeft (na afronding): 431. 1.2 De volgende rijen komen erbij: in Gerecht: ( Reijnders Roem, 86,
Correctievoorschrift VWO. Wiskunde A1,2 (nieuwe stijl)
Wiskunde A, (nieuwe stijl) Correctievoorschrift VWO Voorbereidend Wetenschaelijk Onderwijs 0 0 Tijdvak Inzenden scores Uiterlijk o 6 juni de scores van de alfabetisch eerste tien kandidaten er school o
Handleiding BudgetBoek
Handleiding BudgetBoek versie : 1.0 wijziging : 4-1-2010 Inhoud 1. BudgetBoek...4 1.1. Persoon...4 1.2. Registrant...4 1.3. Budgethouder...4 1.4. Budgetpost...4 1.5. Budgetgroep...5 1.6. Rekening...5 1.7.
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
Inhoud. Introductie tot de cursus
Inhoud Introductie tot de cursus 1 Inleiding 7 2 Voorkennis 7 3 Het cursusmateriaal 7 4 Structuur, symbolen en taalgebruik 8 5 De cursus bestuderen 9 6 Studiebegeleiding 10 7 Huiswerkopgaven 10 8 Het tentamen
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
DATABASEBEHEER IN EXCEL
DATABASEBEHEER IN EXCEL 1. LIJSTEN Een lijst is een reeks van rijen met gelijksoortige gegevens waarvan de eerste rij de labels (veldnamen) bevat. Een voorbeeld: Je kunt een lijst beschouwen als een eenvoudige
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
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
Basiskennistoets wiskunde
Lkr.: R. De Wever Geen rekendoos toegelaten Basiskennistoets wiskunde Klas: 6 WEWI 1 september 015 0 Vraag 1: Een lokaal extremum (minimum of maximum) wordt bereikt door een functie wanneer de eerste afgeleide
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:...
1.3 Rekenen met pijlen
14 Getallen 1.3 Rekenen met pijlen 1.3.1 Het optellen van pijlen Jeweetnuwatdegetallenlijnisendat0nochpositiefnochnegatiefis. Wezullen nu een soort rekenen met pijlen gaan invoeren. We spreken af dat bij
www.digitalecomputercursus.nl 6. Reeksen
6. Reeksen Excel kan datums automatisch uitbreiden tot een reeks. Dit betekent dat u na het typen van een maand Excel de opdracht kan geven om de volgende maanden aan te vullen. Deze voorziening bespaart
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
Excel reader. Beginner Gemiddeld. [email protected]
Excel reader Beginner Gemiddeld Auteur Bas Meijerink E-mail [email protected] Versie 01D00 Datum 01-03-2014 Inhoudsopgave Introductie... - 3 - Hoofdstuk 1 - Databewerking - 4-1. Inleiding... - 5-2.
Inform BVBA. Scarabee Handleiding Agenda
Inform BVBA Scarabee Handleiding Agenda Steven De Ryck Juni 2009 Inhoudsopgave Inleiding...3 1 Overzicht agenda s...4 2 Detailfiche agenda...5 2.1 Velden...5 2.2 Subforms...5 2.2.1 Alleen lezen...5 2.2.2
case: use-case-diagram
Hoofdstuk 9 case: use-case-diagram Dit hoofdstuk beschrijft de totstandkoming van de use-cases voor EasyShop, het maaltijdsysteem van Hans en Jacqueline. Het zijn de functionele systeemeisen die hier worden
Eindtoets. Opgaven. 1 Gegeven is het domeinmodel van figuur 1. Domeinmodel voor betalingen. Eindtoets I N T R O D U C T I E.
Eindtoets I N T R O D U C T I E Deze eindtoets is bedoeld als voorbereiding op het tentamen. Het is belangrijk dat u de eindtoets pas probeert te maken op het moment dat u denkt klaar te zijn met de tentamenvoorbereiding.
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
Databases SQL - meerdere tabellen
Databases SQL - meerdere tabellen Nut van een database Dilbert 1 Reservering Lezer Uitgave Filiaal Basis zaken Uitlening Exemplaar NB: er kan verschil in smaak zitten tussen M1a en S1a notatie Join : het
Relationele databases en SQL Leo Wiegerink, Jeanot Bijpost, Marco de Groot
Relationele databases en SQL Leo Wiegerink, Jeanot Bijpost, Marco de Groot Derde, geheel herziene druk Relationele databases en SQL Derde, geheel herziene druk Leo Wiegerink, Jeanot Bijpost, Marco de Groot
case: toestandsdiagrammen
Hoofdstuk 13 case: toestandsdiagrammen In dit hoofdstuk wordt het maken van de eerste versie van de toestandsdiagrammen voor het boodschappensysteem van Hans en Jacqueline uitgewerkt. 13.1 Vind klassen
Een SQL-boek met interactieve Boekverkenner
Een SQL-boek met interactieve Boekverkenner Leo Wiegerink Jeanot Bijpost Marco de Groot Samenvatting Een elektronische leeromgeving die eenzijdig voortkomt uit de push van de technologie zal vaak teleurstellen.
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
Access voor beginners - hoofdstuk 25
Access voor beginners - hoofdstuk 25 Handleiding van Auteur: OctaFish Oktober 2014 Werken met Klassemodules Tot nu toe heb ik in de cursus Access veel gewerkt met formulieren, en met procedures en functies.
Practicum algemeen. 1 Diagrammen maken 2 Lineair verband en evenredig verband 3 Het schrijven van een verslag
Practicum algemeen 1 Diagrammen maken 2 Lineair verband en evenredig verband 3 Het schrijven van een verslag 1 Diagrammen maken Onafhankelijke grootheid en afhankelijke grootheid In veel experimenten wordt
Bij alle programma s van Microsoft Office worden sjablonen
Sjablonen 2 Bij alle programma s van Microsoft Office worden sjablonen geleverd. Door een sjabloon te gebruiken, kunt u direct beginnen met het invoeren van de gegevens. Alle tabellen, formulieren en rapporten
Basisvaardigheden Microsoft Excel
Basisvaardigheden Microsoft Excel Met behulp van deze handleiding kun je de basisvaardigheden leren die nodig zijn om meetresultaten van een practicum te verwerken. Je kunt dan het verband tussen twee
Basisvaardigheden Microsoft Excel
Basisvaardigheden Microsoft Excel Met behulp van deze handleiding kun je de basisvaardigheden leren die nodig zijn om meetresultaten van een practicum te verwerken. Je kunt dan het verband tussen twee
Hoofdstuk 16: Grafieken en diagrammen: hoe
Hoofdstuk 16: Grafieken en diagrammen: hoe 16.0 Inleiding Wanneer je de betekenis van een serie nummers in een presentatie wilt weergeven, zal je ondervinden dat een diagram de meest effectieve manier
Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen.
Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen. Opmerking vooraf. Een netwerk is een structuur die is opgebouwd met pijlen en knooppunten. Bij het opstellen van
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
TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica
TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica Extra Tentamen Databases 1, 2M400, 8 oktober 2003. Alle uitwerkingen van de opgaven moeten worden ingevuld in de daarvoor bestemde vrije
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
Handleiding Nederlandse Besteksystematiek
Handleiding Nederlandse Besteksystematiek Inhoudsopgave 1 Inleiding... 3 1.1 NBS... 3 1.2 De NBS Catalogus... 3 2 Bestek, algemeen... 4 2.1 Het bestek... 4 2.2 De beschrijving van het werk... 4 2.3 De
3 Wat is een stelsel lineaire vergelijkingen?
In deze les bekijken we de situatie waarin er mogelijk meerdere vergelijkingen zijn ( stelsels ) en meerdere variabelen, maar waarin elke vergelijking er relatief eenvoudig uitziet, namelijk lineair is.
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
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.
2. Een adressenbestand maken in Excel
23 2. Een adressenbestand maken in Excel Als u een grote hoeveelheid brieven of kaarten gaat versturen, kan het handig zijn om daarvoor adresetiketten af te drukken. Adresetiketten kunt u gebruiken voor
Excel voor de beginner (4) Handleiding van Helpmij.nl
Excel voor de beginner (4) Handleiding van Auteur: CorVerm Juni 2008 Excel voor beginners deel 4. Zoals we in deel drie hebben beloofd gaan we het in deze ronde hebben over het geven van namen aan (een)
Coachview.net Eenmalige Imports
Coachview.net Eenmalige Imports Versie: Juli 2011, Revisie 2 Coachview.net: 2.1 Auteur(s): Remy Remery Dé nieuwe manier van samenwerken Inhoudsopgave 1. INLEIDING...3 BELANGRIJKSTE TERMEN... 3 2. IMPORT
CIJFEREN: DE TRAPVERMENIGVULDIGING
CIJFEREN: DE TRAPVERMENIGVULDIGING Luc Cielen Ik noem dit een trapvermenigvuldiging omdat deze bewerking een trap vormt als de vermenigvuldiger een getal is met 2 of meer cijfers. In een opbouw die 10
Inhoud introductie. Introductie tot de cursus
Inhoud introductie Introductie tot de cursus 1 Functie en plaats van de cursus 7 1.1 Voorkennis 7 1.2 Leerdoelen 7 2 Opbouw van de cursus 8 2.1 Cursusbestanddelen 8 2.2 Nummering en studielast van de leereenheden
Opfrisdocument elektronische aangifte
Opfrisdocument elektronische aangifte Inleiding: Omdat wij regelmatig vragen krijgen over de elektronische aangifte, hebben wij e.e.a. maar eens voor u op een rijtje gezet. Uitgangspunt van dit document
Grafiek en dynamisch bereik
Excellerend Heemraadweg 21 2741 NC Waddinxveen 06 5115 97 46 [email protected] BTW: NL0021459225 ABN/AMRO: NL72ABNA0536825491 KVK: 24389967 Grafiek en dynamisch bereik Iedereen die vaak met tabellen
11.4 Aanpassen van sjabloon of andere standaard teksten
11.4 Aanpassen van sjabloon of andere standaard teksten Let op: De met Facts! meegeleverde politie-aangifte-tekst is een voorbeeld zoals deze door het Verbond van Verzekeraars wordt voorgesteld. Aanpassing
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
Hoofdstuk 1: Toegang tot Pay@Finpost: abonnementen & digipass
In deze rubriek verzamelden we de meest voorkomende vragen en onze antwoorden over Pay@Finpost. Indien u desondanks in deze lijst geen antwoord op uw vragen vindt, aarzel dan niet ons te contacteren op
SQL / Systeemanalyse
SQL / Systeemanalyse Wie ben ik Hans de Wit 44 jaar HBO BI in deeltijd gedaan Sinds 2008 werkzaam met BI / DWH med.hro.nl/wihan SQL De gegevens in een database vormen de grondstof voor informatie De informatie
Klankie B.V - Klankie 2010 Netwerkversie - versie 1.0 - sts2220000000212. 13 september 2010
Klankie B.V - Klankie 2010 Netwerkversie - versie 1.0 - sts2220000000212 13 september 2010 Inhoudsopgave 1. Inleiding...3 2. Belangrijke informatie bij Klankie 2010...4 3. C3LO-werkstation inrichten als
Salaris in People Inc.
Salaris in People Inc. I Salaris in People Inc. Inhoudsopgave Hoofdstuk 1 Salaris 2... 2 1.1 Salarisscherm... 3 1.2 Schalen en treden... 5 1.3 Salaris toekennen... 7 1.4 Berekeningen... 7 Betalingsperiode
Wiskunde A. Voorbereidend Wetenschappelijk Onderwijs Tijdvak 1 Woensdag 17 mei 13.30 16.30 uur
Wiskunde A Examen VWO Voorbereidend Wetenschappelijk Onderwijs Tijdvak 1 Woensdag 17 mei 13.30 16.30 uur 20 00 Als bij een vraag een verklaring, uitleg of berekening vereist is, worden aan het antwoord
Examen HAVO. Wiskunde A1,2
Wiskunde A1,2 Examen HAVO Hoger Algemeen Voortgezet Onderwijs Tijdvak 1 Donderdag 25 mei 13.30 16.30 uur 20 00 Dit examen bestaat uit 19 vragen. Voor elk vraagnummer is aangegeven hoeveel punten met een
Een quiz plaatsen op je website
Een quiz plaatsen op je website Om de deelnemers een beetje na te laten denken kan je een quiz toevoegen op je site. Dat doe je op de volgende manier: a. Een quiz aanmaken Ga naar je eigen pagina en klik
We hebben de vragen ingedeeld als volgt:
In deze rubriek verzamelden we de meest voorkomende vragen en onze antwoorden over Pay@Finpost. Indien u desondanks in deze lijst geen antwoord op uw vragen vindt, aarzel dan niet ons te contacteren op
Uitzendkracht rol. 30 maart 2011 Akyla bv. copyright Akyla bv
Uitzendkracht rol 30 maart 2011 Akyla bv copyright Akyla bv Inhoudsopgave 1. INLEIDING... 3 2. ALGEMEEN... 4 2.1 ICOONTJES... 5 2.2 OVERZICHTEN... 5 2.3 ROLLEN... 6 2.4 PROCESTYPES... 7 3. DE UITZENDKRACHT
Hoofdstuk 13: Sorteren & Filteren* 2010
Hoofdstuk 13: Sorteren & Filteren* 2010 13.0 Inleiding Spreadsheets bieden meer grip op gegevens. De twee beste manieren om meer grip te krijgen, is door de gegevens te sorteren of door bepaalde waarden
Basiskennis lineaire algebra
Basiskennis lineaire algebra Lineaire algebra is belangrijk als achtergrond voor lineaire programmering, omdat we het probleem kunnen tekenen in de n-dimensionale ruimte, waarbij n gelijk is aan het aantal
Handleiding internetaangifte voor bedrijven, organisaties en winkeliers
Handleiding internetaangifte voor bedrijven, organisaties en winkeliers Algemeen Als u aangifte doet namens een bedrijf, organisatie of winkelier kunt u natuurlijk elke keer opnieuw uw gegevens invoeren.
Correctievoorschrift VWO. wiskunde B1 (nieuwe stijl)
wiskunde B (nieuwe stijl) Correctievoorschrift VWO Voorbereidend Wetenschaelijk Onderwijs 0 04 Tijdvak inzenden scores Verwerk de scores van de alfabetisch eerste vijf kandidaten er school in het rogramma
Bij de volgende opgaven vragen we je een kleine opteltabel in te vullen. De eerste hebben we zelf ingevuld om je te laten zien hoe zoiets gaat. 1.
I Natuurlijke getallen Dit deel gaat over getallen waarmee je aantallen kunt weergeven: vijf vingers aan je hand, twaalf appels op een schaal, zestig minuten in een uur, zestien miljoen Nederlanders, nul
Informatica toets vwo 6 Databases
Informatica toets vwo 6 Databases Deze toets bestaat uit drie gedeelten met elk een andere casus: 1. een opdracht waarin je een ER-diagram via het relationeel model omzet in een database specificatie in
Universiteit Utrecht Departement Informatica
Universiteit Utrecht Departement Informatica Uitwerking Tussentoets Optimalisering 20 december 206 Opgave. Beschouw het volgende lineair programmeringsprobleem: (P) Minimaliseer z = x 2x 2 + x 3 2x 4 o.v.
Introductie tot de cursus
Introductie Introductie tot de cursus Voordat u begint met het bestuderen van de cursus Databases, willen wij u in deze introductie informeren over de bedoeling van de cursus, de opzet van het cursusmateriaal
Met de functies Verticaal zoeken of Horizontaal zoeken kun je gegevens in het rekenblad laten opzoeken en weergeven.
Formules functies verticaal en horizontaal zoeken Excel Met de functies Verticaal zoeken of Horizontaal zoeken kun je gegevens in het rekenblad laten opzoeken en weergeven. Opbouw van de functie Verticaal
Introductie Coach 6 videometen. 1 Eerste oefening
Introductie Coach 6 videometen 1 Eerste oefening Open het programma coach6. Het pictogram vind je op het bureaublad van je pc. Je krijgt dan het onderstaande scherm te zien. Verander docent in student.
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.
Sum of Us 2014: Topologische oppervlakken
Sum of Us 2014: Topologische oppervlakken Inleiding: topologische oppervlakken en origami Een topologisch oppervlak is, ruwweg gesproken, een tweedimensionaal meetkundig object. We zullen in deze tekst
TURN IT IN. Plagiaatcontrole versie voor studenten 9 maart 2015. Hogeschool VIVES Dienst Onderwijs Onderwijsmedia
TURN IT IN Plagiaatcontrole versie voor studenten 9 maart 2015 Hogeschool VIVES Dienst Onderwijs Onderwijsmedia Inhoud 1. Inleiding...3 1.1 Wat is Turn it in?...3 1.2 Mag ik dan helemaal niets kopiëren?...3
FLIPIT 5. (a i,j + a j,i )d i d j = d j + 0 = e d. i<j
FLIPIT JAAP TOP Een netwerk bestaat uit een eindig aantal punten, waarbij voor elk tweetal ervan gegeven is of er wel of niet een verbinding is tussen deze twee. De punten waarmee een gegeven punt van
BTW Code Conversie Legal Eagle Integratie Zonder Export versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers
BTW Code Conversie Legal Eagle Integratie Zonder Export versie 2.18.x naar 2.19.0 2012 Sdu uitgevers BTW Code Conversie Legal Eagle Integratie Zonder Export Inhoudsopgave BTW Conversie Legal Eagle Integratie
Stap 5. Koppel vervolgens de Stages aan de AIOS op het blad AIOS Stageplaats (figuur 5). Nu kunnen de Stage specifieke afspraken aangemaakt worden.
Met de Excelapplicatie Opleidingskalender kunt u afspraken in het kader van de opleiding met AIOS per Ziekenhuis/Opleiding per specialisme plannen en beheren. Introductie Deze Excelapplicatie is gemaakt
Correctievoorschrift VWO. Wiskunde A Experimenteel (oude stijl) Voorbereidend Wetenschappelijk Onderwijs. Tijdvak 1. Begin WVA011ES.
Wiskunde A Exerimenteel (oude stijl) Correctievoorschrift VWO Voorbereidend Wetenschaelijk Onderwijs 0 0 Tijdvak WVA0ES.CRV Begin Regels voor de beoordeling Het werk van de kandidaten wordt beoordeeld
Web-ordering bij Bonnes Bestel Service B.V. (algemene versie)
Web-ordering bij Bonnes Bestel Service B.V. (algemene versie) Bonnes Bestel Service wil haar relaties de mogelijkheid geven om via de digitale snelweg ritten door te geven, hiervoor hebben wij, voor degene
Klikt u op dan komt er een scherm of u dit bestand wilt of
Enkele nuttige tips om met VARB te werken. U start uw internetbrowser en gaat naar https://www.varb.nl er komt een schermpje Certificaat bevestigen, klik op OK. Het volgende scherm is Voer Pin in, u vult
Handleiding Internetaangifte - Aangifte voor bedrijven
Handleiding Internetaangifte - Aangifte voor bedrijven Algemeen Wanneer u aangifte moet doen namens een bedrijf kan dat natuurlijk altijd op de reguliere wijze, maar u kunt ook een account aanmaken voor
ACCEPETEREN RESERVERING
E-mail Templates In i-reserve is het mogelijk gestandaardiseerde e-mails te verzenden. Het verzenden van dergelijke mails kan volledig worden geautomatiseerd: u maakt dan gebruik van zogenaamde automatische
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
VISI. Verzoekschriften verwerken in Peoplesoft Campus Solutions. Volg. Opdrachtgever: Verzoek superusers CS Bestandsnaam: Verzoekschriften verwerken
FF Verzoekschriften verwerken in Campus Solutions ICS (Informatie, Communicatie en Studenten) Universiteit Leiden Postbus 9512 2300 RA Leiden 071 527 6969 VISI Verzoekschriften verwerken in Peoplesoft
S u b n e t t e n. t h e t r u e s t o r y 1100 0000. 1010 1000. 0000 0001. 0000 0001 1111 1111. 1111 1111. 1111 1111. 0000 0000.
S u b n e t t e n t h e t r u e s t o r y 1100 0000. 1010 1000. 0000 0001. 0000 0001 1111 1111. 1111 1111. 1111 1111. 0000 0000 Part 1 Inhoud Wat is een subnet?... 2 Waarom?... 3 Het begin.... 3 Een voorbeeld...
15. Tabellen. 1. wat rijen, kolommen en cellen zijn; 2. rijen en kolommen invoegen; 3. een tabel invoegen en weer verwijderen;
15. Tabellen Misschien heeft u al eens geprobeerd om gegevens in een aantal kolommen te plaatsen door gebruik te maken van spaties, kolommen of tabs. Dat verloopt goed totdat u gegevens wilt wijzigen of
Hoofdstuk 21: Gegevens samenvatten
Hoofdstuk 21: Gegevens samenvatten 21.0 Inleiding In Excel kunnen grote (en zelfs ook niet zo grote) tabellen met getallen en tekst er nogal intimiderend uitzien. Echter, Excel komt helemaal tot haar recht
