Informaticasite van het Sondervick College te Veldhoven                 © L.J.M van Haperen (bron : R.J. van der Beek)
 
  Antwoorden opgaven hoofdstuk 10      


1a.  De tabel RESERVERINGEN heeft twee referentiesleutels :
- BOEKNR verwijst naar het BOEKNR in de tabel BOEKEN
- LLNR verwijst naar het LLNR in de tabel LEERLINGEN.
b.  Auteurnr is de sleutel van de tabel AUTEURS
c.  De sleutel van de tabel UITLENINGEN bestaat uit vier kolommen: BOEKNR, EXNR, LLNR, DATUM_UIT
d.  Het AUTEURNR moet beslist worden ingevuld. Als je op AUTEURNR klikt zie je dat achter vereist ja staat.
Trouwens een sleutelveld moet altijd worden ingevuld. Verder zijn er geen velden waarbij achter vereist ja staat
e.  BOEKNR en EXNR moeten overeenkomen. Elke combinatie van BOEKNR en EXNR moet in zijn geheel voorkomen in de tabel EXEMPLAREN.
Als er bijvoorbeeld een uitlening is van exemplaar 2 van boek 31 , moet er in de tabel EXEMPLAREN een rij zijn met EXNR 2 en BOEKNR 31. Het is niet genoeg als boeknummer 31 ergens voorkomt (bijvoorbeeld EXNR 1. BOEKNR 31) en dat ergens anders exemplaarnummer 2 voorkomt (bijvoorbeeld EXNR 2, BOEKNR 35), het gaat om de combinatie.


2a. De primaire sleutel van een tabel is de kolom (of combinatie van kolommen) waarmee je de rijen uit de tabel uit elkaar kunt houden, die dus uniek is.
b.
  • In elke rij moet in de sleutelkolom(men) iets zijn ingevuld
  • De waarden die zijn ingevuld in de sleutelkolom(men) zijn allemaal verschillend
c.
  • Getallen zorgen voor een unieke identificatie (zie primaire sleutel)
  • Er is gemakkelijk te verwijzen naar een kolom met alleen een nummer (zie referentie sleutel)
d. Een referentiesleutel is een kolom waarnaar verwezen wordt vanuit een andere tabel (bijv. de kolom boeknr in de tabel UITLENINGEN verwijst naar de kolom boeknr in de tabel BOEKEN)
e. Het bewaken van de integriteit van de database


3a.  Access geeft een foutmelding. Een dubbel leerlingnummer is niet toegestaan. LLNR is de sleutel en alle waarden moeten verschillend zijn.
b.  Het veld GESLACHT kan geen Null-waarde bevatten omdat de eigenschap Required voor dit veld is ingesteld op True: er moet beslist iets worden ingevuld.
c.  Ook nu geeft Access een foutmelding. Bij GESLACHT mag alleen M of V ingevuld worden.
Bij de ontwerpgegevens van de tabel is dit bij de validatieregel aangegeven.
c.  Boeknummer 300 wordt niet geaccepteerd. Een dubbel boeknummer is niet toegestaan. BOEKNR is de sleutel en alle waarden moeten verschillend zijn.
d.  Auteurnummer 200 wordt niet geaccepteerd. Access controleert of er een auteur met het nummer 200 is en geeft weer een foutmelding:
Kan geen record toevoegen of wijzigen omdat een gerelateerde record is vereist in de tabel AUTEURS


4a.  insert into BOEKEN (BOEKNR, AUTEURNR, TITEL, PUB_JAAR, AANTALPAGS, GENRE, RUBRIEK) values (328, 124, "Kathy's dochter" , 2004, 207, "roman", "nederlands");
b.  insert into AUTEURS (AUTEURNR, VOORNAAM, VOORLETTERS, ACHTERNAAM, GEB_JAAR) values (191, "Vincent", "V.", "Bijlo" , 1965);
en
insert into BOEKEN (BOEKNR, AUTEURNR, TITEL, PUB_JAAR, AANTALPAGS, GENRE, RUBRIEK) values (329, 191, "Het instituut" , 2005, 112, "novelle", "nederlands");
c.  Eerst de auteur en dan het boek. Als je het boek invoert, dan moet je het auteurnr invoeren. En dan controleert Access of er een auteur met dat nummer is. Je moet er dus voor zorgen dat die auteur eerst is ingevoerd, anders krijg je een foutmelding.
d.  update LEERLINGEN set STRAAT = "Veldwachterserf", HUISNUMMER = "14", PLAATS = "Houten", POSTCODE = "3991 KW" where VOORNAAM = "Rafael" and ACHTERNAAM = "Menendez";
e.  delete from EXEMPLAREN where BOEKNR = 185 and EXNR = 2;


5a. update bedrijven set tel="0511-544444" where bedrijfsnr=800;
b. insert into koeien (koenr, vader, moeder, gebdat,bedrijfsnr) values (12578, 5022, 8756, 20-08-2004, 800);
c. delete from bedrijven where bedrijfsnr = 800;


6a. INSERT INTO leden (lidnr, naam, woonplaats, geboren, leeftijd, lidsoort) values (15,'Theo','Augustinusga','1945-01-13',61,'senior');
b. UPDATE leden SET lidsoort = 'senior', score = 350 WHERE lidnr = 4 ;
c. DELETE FROM leden WHERE lidnr = 11;
d. UPDATE leden SET leeftijd = leeftijd + 1;


7a.  Gewoon doen
b.  Voer de velden in zoals hieronder



Sluit dan het tabelontwerp-venster, dan wordt gevraagd of het moet worden opgeslagen. Als je met ja antwoordt wordt om de tabelnaam gevraagd, voer als naam BEDRIJVEN in en klik op OK.
Dan wordt ook nog gevraagd of er een primaire sleutel gemaakt moet worden. Beantwoord die vraag met nee
c.  create table KOEIEN
( koenr integer NOT NULL,
vader integer NOT NULL,
moeder integer NOT NULL,
gebdat date NOT NULL,
bedrijfsnr integer NOT NULL,
primary key (koenr)
)
d.  create table JAARPROD
( koenr integer NOT NULL,
jaar integer NOT NULL,
kgmelk integer NOT NULL,
vetgeh integer,
eiwitgeh integer
);


8a.  create table competitiesoort
( soort VARCHAR(2) NOT NULL,
speeldag VARCHAR(10),
aanvoerder integer ,
primary key (soort)
);
b.  DROP TABLE competitielid;


9a.  Gewoon doen. Er verschijnt een sleuteltje voor het veld bedrijfsnr
b.  Als je de kolommen bedrijfsnr en jaar selecteert door er voor te klikken terwijl je de control-toets ingedrukt houdt, en als je dan klikt op het sleuteltje in de werkbalk, dan krijg je dit in beeld:



c.  Gewoon doen zoals beschreven staat. Er verschijnt een lijntje van BEDRIJFSNR bij KOENR (daar staat oneindig ¥ bij) naar BEDRIJFSNR bij BEDRIJVEN (daar staat een 1 bij)
d.  Klik op Extra en dan op Relaties. Sleep het veld koenr van de tabel JAARPROD naar het veld koenr van de tabel KOEIEN. Zet een vinkje voor Referentiële integriteit afdwingen, en klik dan op Maken.
Als je dan een foutmelding krijgt is dat meestal omdat de velden niet van hetzelfde type zijn. Als de ene bijvoorbeeld een integer is en de andere bijvoorbeeld een long integer, dan werkt het niet. Selecteer dan eerst de tabel, klik op ontwerpen, en verander het type.



10a.  Achter validatieregel staat: = "m" Or = "v"
Achter validatietekst staat: Geslacht: tik m of v in!
b.  Voor bij validatieregel in: = "4a" Or = "4b" Or = "5a" Or = "5b" Or = "6a" Or = "6b"
Voer bij validatietekst in: Alleen 4a, 4b, 5a, 5b, 6a of 6b, sufferd!
Als je dan ergens 4c intikt verschijnt er: Alleen 4a, 4b, 5a, 5b, 6a of 6b, sufferd!


11a.  tekst, memo, numeriek, datum/tijd, valuta, ja/nee
b.  byte, integer, lange integer, enkele precisie, dubbele precisie
c.  Omdat de nul aan het begin wordt weggelaten als de computer als een getal beschouwt. Verder wordt er soms een streepje tussen het kengetal en het netnummer gezet. En er hoeft toch niet te worden gerekend met telefoonnummers.
d.  Omdat bij sommige huisnummers een letter wordt toegevoegd, bijv. nummer 6a
e.  Als het Tekst is komt eerst 12 en dan 3, netzo als ab voor c komt
Als het Numeriek is komt 3 voor 12, maar een huisnummer kun je beter als Tekst vastleggen
f.  Als je het als Datum vastlegt dan weet Access dat 23 maart voor 1 april komt. Als je het als Tekst vastlegt dan vindt Access dat 23 maart na 1 april komt!


12a.  De Wet Bescherming Persoonsgegevens (WBP) is op 1 september 2001 in werking getreden.
b.  De school is verplicht je daar inzicht in te geven als je een schriftelijk verzoek indient

In de wet staat m.b.t. degene die de gegevens beheert (de school dus):
Een persoon van wie u de persoonsgegevens gebruikt (de betrokkene), heeft recht op inzage in zijn persoonsgegevens. De betrokkene hoeft niet aan te geven waarom hij inzage wil. U bent verplicht hierop binnen vier weken schriftelijk of per e-mail te reageren. Als de betrokkene om inzage verzoekt, moet u hem op een duidelijke en begrijpelijke manier informeren of en zo ja, welke gegevens gebruikt worden, wat het doel is van het gebruik van deze gegevens en aan wie de gegevens eventueel zijn verstrekt. Ook moet u de betrokkene informeren over de herkomst van zijn gegevens, als deze bekend is. In de praktijk moet een inzageverzoek bij een overheidsinstantie schriftelijk of per e-mail ingediend worden.
c.  De school is verplicht dat binnen vier weken te doen als je een schriftelijk verzoek daartoe indient

In de wet staat m.b.t. degene die de gegevens beheert (de school dus):
Het recht om correctie te vragen omvat verbetering, aanvulling, verwijdering of afscherming van persoonsgegevens.
Een betrokkene kan correctie verzoeken in drie gevallen:
  • zijn persoonsgegevens zijn feitelijk onjuist;
  • zijn persoonsgegevens zijn voor het doel waarvoor u ze hebt verzameld, onvolledig of niet ter zake dienend;
  • u gebruikt de persoonsgegevens op een andere manier in strijd met een wet.
De betrokkene moet bij het indienen van een correctieverzoek aangeven welke wijzigingen hij wenst.
Een correctieverzoek moet schriftelijk of per e-mail bij een overheidsinstantie ingediend worden.
U moet binnen vier weken reageren op het verzoek van de betrokkene.
d.  Nee
In het algemeen geldt dat het verstrekken van persoonsgegevens verenigbaar moet zijn met het doel van het verzamelen daarvan.
In artikel 8 WBP staan zes gronden waarop een gegevensverstrekking gebaseerd kan zijn.
Dat zijn de toestemming, de overeenkomst, de wettelijke verplichting, een vitaal belang van de betrokkene, de uitvoering van een publiekrechtelijke taak en het gerechtvaardigd belang.
Een verstrekking moet terug te voeren te zijn op één van de zes gronden.

Als de betrokkene zelf toestemming geeft kunnen persoonsgegevens verstrekt worden aan een bedrijf of instelling.
U mag personeelsgegevens verstrekken aan derden met name als het noodzakelijk is voor de uitvoering van een overeenkomst die u met de werknemer hebt of gaat afsluiten, bijvoorbeeld indien de werknemer een lease-auto krijgt, dan worden zijn gegevens verstrekt aan de leasemaatschappij.
U mag personeelsgegevens ook verstrekken als u gegevens moet verstrekken op grond van een wettelijk voorschrift verplicht, u bent bijvoorbeeld verplicht om de fiscus te voorzien van alle gegevens die van belang kunnen zijn voor de belastingheffing.
Ook bent u op grond van een bevel van de rechter-commissaris in strafzaken verplicht bepaalde persoonsgegevens van een verdachte werknemer te verstrekken.
Dat is hier allemaal niet aan de orde, dus het antwoord is: Nee
e.  Ja
Als de politie u vraagt bepaalde persoonsgegevens te verstrekken omdat de gegevens noodzakelijk zijn ter voorkoming, opsporing of vervolging van strafbare feiten, dan dient u mee te werken, mits de politie u daar uitdrukkelijk en gericht om vraagt en wanneer zij u kan uitleggen op grond van welke wettelijke regeling u gegevens moet verstrekken.
Kortom, de WBP verplicht u niet tot het verstrekken van persoonsgegevens, maar geeft regels voor het zorgvuldig gebruik van persoonsgegevens. De gevallen waarin u verplicht bent gegevens te verstrekken aan de politie vloeien voort uit andere wetten.
Als de politie niet aangeeft op grond van welke wettelijke regeling u verplicht bent gegevens te verstrekken, hoeft u niet mee te werken. In veel gevallen mag u zelfs niet meewerken, omdat u gegevens over uw klanten, werknemers, leerlingen, patiënten of cliënten niet bewaart om de politie van dienst te zijn.


13a.  Maximaal 100 keer
b.  Bij deze strategie halveer je steeds het aantal overgebleven mogelijkheden: De vraag 'minder dan 50' zorgt ervoor dat je van 100 naar 50 mogelijkheden gaat. Als je vanaf 100 halveert krijg je: 50, 25, 13, 7, 4, 2, 1. Zeven getallen, zeven vragen.
Je zou ook andersom kunnen rekenen. Beginnen aan het uiteinde (één mogelijkheid over) en steeds verdubbelen: 1, 2, 4, 8, 16, 32, 64, 128. Je krijgt dan machten van 2, en bij 2 tot de zevende ben je boven de honderd, zeven vragen is dus genoeg.
In wiskundige termen: De 2-logaritme van het aantal
c.  Maximaal 1.000.000 records
d.  Maximaal 20 keer, omdat 220=1048576 (groter dan 1000000) en 219=524288 (kleiner dan 1000000)
(of: De 2-logaritme van het 1000000)
e.  Ja, er kan tegelijk een index voor de achternaam en een index voor de postcode zijn.
Een index is gewoon een lijstje met het nummer van het record, en het volgordenummer dat daarbij hoort.
Wordt er bijv. iemand gezocht met postcode 1234 XY, dan wordt eerst gekeken wat de postcode is van volgordenummer 500000. Komt die postcode alfabetisch gezien na 1234 XY dan wordt gekeken wat de postcode is van volgordenummer 250000, Komt die postcode alfabetisch gezien voor 1234 XY dan wordt gekeken wat de postcode is van volgordenummer 750000. En zo gaat het steeds verder, tot de juiste gevonden is.
f.  Voordeel: een record wordt veel sneller gevonden Nadeel: elke keer als een record wordt veranderd of wordt toegevoegd of wordt verwijderd moet de index worden bijgewerkt, en dat kost tijd.


14a.  Concurrente processen (of parallelle processen) zijn processen die tegelijk bezig zijn.
b.  Wanneer een proces een verandering in een rij of tabel wil doorvoeren wordt er eerst een lock op die rij of die tabel gezet. Andere processen kunnen dan geen toegang tot die gegevens krijgen, ze moeten wachten tot het lock wordt opgeheven.
c.  Als processen meer dan één lock aanvragen kan het gebeuren dat twee processen op elkaar gaan staan wachten, dan heb je een deadlock.
d.  De opdracht COMMIT zorgt ervoor dat een transactie daadwerkelijk wordt uitgevoerd.
e.  Met ROLLBACK wordt aangegeven dat transacties, die nog niet door COMMIT definitief doorgevoerd waren, worden teruggedraaid.
f.  In dat prgramma worden steeds overboekingen gedaan, en daarbij zijn steeds tien processen tegelijk bezig.
Maar omdat er maar één processor is, lopen de processen niet echt parallel, maar vindt timeslicing plaats:
om de beurt mogen de verschillende processen een tijdje lopen (maar enkele milliseconden).
Er wordt dus steeds een proces stilgelegd, en een ander proces gestart. Wanneer een proces na een tijdje weer verder mag werken gaat het precies daar verder waar het de vorige keer gestopt was.
Als het proces op een verkeerd moment wordt stilgelegd kan het door toeval gebeuren dat er iets mis gaat.