1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
|
<!--
<!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd">
-->
<appendix id="database">
<title
>Inleiding in databases</title>
<sect1 id="what-is-a-database">
<title
>Wat is een database?</title>
<para
>Een database kan gedefinieerd worden als een verzameling gegevens over één onderwerp. Deze is zo georganiseerd dat men gemakkelijk naar informatie kan zoeken, wijzigingen kan maken en nieuwe items toe kan voegen. </para>
<para
>Bekijk het onderstaande diagram voor één van de bovenstaande voorbeelden: een telefoonboek. </para>
<screenshot>
<screeninfo
>Een diagram van een database met telefoonnummers</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="contact-example.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Een diagram van een database met telefoonnummers</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>In de bovenstaande afbeelding ziet u de gegevens van twee contactpersonen, elk op een aparte kaart. Een kaart kan ook een enkele rij in een tabel voorstellen. </para>
<para
><emphasis
>De tabel <guilabel
>Contacten</guilabel
></emphasis
></para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><guilabel
>Naam</guilabel
></entry>
<entry
><guilabel
>Tel. nr.</guilabel
></entry>
</row>
<row>
<entry
>Joan</entry>
<entry
>699 23 43 12</entry>
</row>
<row>
<entry
>Adam</entry>
<entry
>711 19 77 21</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
><emphasis
>Termen en definities</emphasis
>: Een enkel gegeven dat deel uitmaakt van een grotere verzameling kan een <firstterm
>rij</firstterm
> of een <firstterm
>record</firstterm
> genoemd worden. De verzameling wordt gewoonlijk een <firstterm
>tabel</firstterm
> genoemd. Een logische naam voor de tabel beschrijft de gegevens die erin opgeslagen zijn, in dit geval is dat <guilabel
>Contacten</guilabel
>. Verder bestaat elke rij in de tabel uit <firstterm
>kolommen</firstterm
>, ook wel <firstterm
>velden</firstterm
> genoemd. In de tabel <guilabel
>Contacten</guilabel
> zijn er twee kolommen (velden): <guilabel
>Naam</guilabel
> en <guilabel
>Tel. nr.</guilabel
>. </para>
<para
>Voor eenvoudig gebruik kan een <firstterm
>database</firstterm
> uit een enkele tabel bestaan. Vaak worden deze twee ook als gelijkwaardig gezien. zoals u zult zien, gebruiken we voor echte databases gewoonlijk meer dan één tabel. </para>
<para
>Kortom, u hebt al een eenvoudige database met één tabel <guilabel
>Contacten</guilabel
>. </para>
</sect1>
<sect1 id="database-and-spreadsheet">
<title
>Database en spreadsheet</title>
<para
>Hoogstwaarschijnlijk hebt u al spreadsheet-toepassingen gebruikt, zoals KSpread, OpenOffice.org Calc of Microsoft Excel. In dat geval vraagt u zich misschien af: spreadsheets en databases hebben allebei tabellen, waarom zou ik de laatste gebruiken? </para>
<para
>Bij het vergelijken van spreadsheets en databases kunt u de volgende punten tegenkomen die later gedetailleerder ter sprake komen: </para>
<itemizedlist>
<listitem
><para
><link linkend="referential-data-integrity"
>Integriteit van referentiegegevens</link
></para
></listitem>
<listitem
><para
><link linkend="data-redundyncy"
>Overtollige gegevens</link>
</para
></listitem>
<listitem
><para
><link linkend="data-integrity-and-validity"
>Integriteit en geldigheid van gegevens</link
></para
></listitem>
<listitem
><para
><link linkend="data-limiting"
>Beperking van gegevensweergave</link
></para
></listitem>
<listitem
><para
><link linkend="performance-and-capacity"
>Prestatie en capaciteit</link
></para
></listitem>
<listitem
><para
><link linkend="convenient-data-entry"
>Gemakkelijke gegevensinvoer</link
></para
></listitem>
<listitem
><para
><link linkend="reports"
>Rapporten</link
></para
></listitem>
<listitem
><para
><link linkend="programming"
>Programmeren</link
></para
></listitem>
<listitem
><para
><link linkend="multiuse"
>Gebruik door meer personen tegelijk</link
></para
></listitem>
<listitem
><para
><link linkend="security"
>Veiligheid</link
></para
></listitem>
</itemizedlist>
<sect2 id="difference-database-and-spreadsheet">
<title
>Waarin verschilt een database van een spreadsheet?</title>
<para
>Om de capaciteit groter dan die van een mobiele telefoon te maken, voegt u een kolom (veld) <guilabel
>Adres</guilabel
> aan de tabel <guilabel
>Contacten</guilabel
> toe. Voeg voor iedere persoon meer telefoonnummers (werk, thuis) toe en voeg achternamen aan namen toe. Om het eenvoudiger te maken nemen we het volgende aan: </para>
<itemizedlist>
<listitem
><para
>de tabel is beperkt tot twee personen (in een echte database kunnen dat er honderden of duizenden zijn)</para
></listitem>
<listitem
><para
>er zijn geen twee personen met dezelfde naam en achternaam</para>
</listitem>
</itemizedlist>
<para
><emphasis
>De tabel "Contacten"</emphasis
></para>
<informaltable>
<tgroup cols="3">
<tbody>
<row>
<entry
><emphasis
>Naam en achternaam</emphasis
></entry>
<entry
><emphasis
>Tel</emphasis
></entry>
<entry
><emphasis
>Adres</emphasis
></entry>
</row>
<row>
<entry
>Joan Smith</entry>
<entry
>699 23 43 12</entry>
<entry
>Western Gate 1, Warsaw</entry>
</row>
<row>
<entry
>Adam Willson</entry>
<entry
>711 19 77 21</entry>
<entry
>London, Frogs Drive 5</entry>
</row>
<row>
<entry
>Joan Smith</entry>
<entry
>110 98 98 00</entry>
<entry
>Western Gate 1</entry>
</row>
<row>
<entry
>Smith Joan</entry>
<entry
>312 43 42 22</entry>
<entry
>Warsaw, Western Gate 1</entry>
</row>
<row>
<entry
>ADAM Willson</entry>
<entry
>231 83 02 04</entry>
<entry
>Frogs Drive 5, London</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Zo'n tabel kan zowel in een spreadsheet als in een database gemaakt worden. In een spreadsheet is dat natuurlijk gemakkelijk te doen. Welk probleem komen we op dit punt tegen? </para>
<sect3 id="referential-data-integrity">
<title
>Integriteit van referentiegegevens</title>
<para
>Veronderstel dat u een spreadsheet gebruikt en dat u het adres van ten minste één persoon moet veranderen. Er is een klein probleem: u moet het adres vaak in veel rijen veranderen. Joan staat bijvoorbeeld op drie rijen. Er ontstaat een echt probleem als u vergeet om het adres in één van de rijen te veranderen - het adres dat bij deze persoon hoort, is <emphasis
>dubbelzinnig</emphasis
>, hierdoor <emphasis
>verliezen uw gegevens hun integriteit</emphasis
>. </para>
<para
>Bovendien is er geen eenvoudige manier om een persoon uit de tabel te verwijderen, omdat u eraan moet denken dat alle rijen met betrekking tot die persoon verwijderd moeten worden. </para>
</sect3>
<sect3 id="data-redundyncy">
<title
>Overtollige gegevens</title>
<para
>Dit houdt direct verband met het vorige probleem. In de velden <guilabel
>Naam en achternaam</guilabel
> en <guilabel
>Adres</guilabel
> zijn dezelfde gegevens meerdere keren ingevoerd. Dit is typerend voor de manier waarop spreadsheets gegevens opslaan, de database wordt onnodig groot en vereist daardoor meer van de computer (meer te verwerken gegevens vereisen meer tijd). </para>
<para
>Hoe kunt u deze problemen met behulp van een database oplossen? U kunt de informatie in kleinere stukken opsplitsen door een aanvullende tabel <emphasis
>Personen</emphasis
> te creëren, deze tabel heeft slechts twee kolommen: <guilabel
>Naam en achternaam</guilabel
> en <guilabel
>Adres</guilabel
>: </para>
<para
><emphasis
>De tabel <guilabel
>Personen</guilabel
></emphasis
></para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><emphasis
>Naam en achternaam</emphasis
></entry>
<entry
><emphasis
>Adres</emphasis
></entry>
</row>
<row>
<entry
>Joan Smith</entry>
<entry
>Western Gate 1, Warsaw</entry>
</row>
<row>
<entry
>Adam Willson</entry>
<entry
>Frogs Drive 5, London</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Elke rij in de tabel <guilabel
>Personen</guilabel
> komt overeen met een <emphasis
>enkele persoon</emphasis
>. De tabel <guilabel
>Contacten</guilabel
> is vanaf nu een relatie naar de tabel <guilabel
>Personen</guilabel
>. </para>
</sect3>
<sect3 id="data-integrity-and-validity">
<title
>Integriteit en geldigheid van gegevens</title>
<para
>Let op de manier waarop gegevens in de velden <guilabel
>Naam en achternaam</guilabel
> en <guilabel
>Adres</guilabel
> zijn ingevuld. Mensen die gegevens intypen kunnen fouten maken en soms slordig zijn. In ons voorbeeld hebben we namen in verschillende volgordes en vormen (Joan Smith en Smith Joan; Adam en ADAM) en ook verschillende manieren om hetzelfde adres in te typen. Er zijn vast nog meer verschillende manieren te bedenken. </para>
<para
>Het bovenstaande laat zien dat, wanneer u ⪚ het telefoonnummer van een persoon met het adres "Western Gate 1, Warsaw" zoekt, u niet alle resultaten ziet. U krijgt slechts één rij te zien in plaats van drie. Ook vindt u niet alle telefoonnummers voor "Joan Smith" in het veld <guilabel
>Naam en achternaam</guilabel
>, omdat "Smith Joan" niet hetzelfde is als "Joan Smith". </para>
<para
>Hoe kunt u deze problemen oplossen door een database te gebruiken? U kunt dit doen door het ontwerp van de tabel <guilabel
>Personen</guilabel
> te veranderen: </para>
<orderedlist>
<listitem
><para
><emphasis
>Splits de gegevens</emphasis
> in het veld <guilabel
>Naam en achternaam</guilabel
> in twee aparte velden: <guilabel
>Naam</guilabel
> en <guilabel
>Achternaam</guilabel
>. </para
></listitem>
<listitem
><para
><emphasis
>Splits de gegevens</emphasis
> in het veld <guilabel
>Adres</guilabel
> in drie aparte velden: <guilabel
>Straat</guilabel
>, <guilabel
>Huisnummer</guilabel
> en <guilabel
>Plaats</guilabel
>. </para
></listitem>
<listitem
><para
><emphasis
>Geldigheid van gegevens garanderen:</emphasis
> door er zeker van te zijn dat er geen lege velden zijn, u moet ⪚ altijd een huisnummer invullen. </para
></listitem>
</orderedlist>
<para
>Een gewijzigde tabel ziet er ongeveer zo uit: </para>
<para
><emphasis
>De tabel "Personen"</emphasis
></para>
<informaltable>
<tgroup cols="5">
<colspec colnum="1" colname="c1"
></colspec>
<colspec colnum="2" colname="c2"
></colspec>
<colspec colnum="3" colname="c3"
></colspec>
<colspec colnum="4" colname="c4"
></colspec>
<colspec colnum="5" colname="c5"
></colspec>
<tbody>
<row>
<entry
><emphasis
>Naam</emphasis
></entry>
<entry
><emphasis
>Achternaam</emphasis
></entry>
<entry
><emphasis
>Straat</emphasis
></entry>
<entry
><emphasis
>Huisnummer</emphasis
></entry>
<entry
><emphasis
>Plaats</emphasis
></entry>
</row>
<row>
<entry
>Joan</entry>
<entry
>Smith</entry>
<entry
>Western Gate</entry>
<entry
>1</entry>
<entry
>Warsaw</entry>
</row>
<row>
<entry
>Adam</entry>
<entry
>Willson</entry>
<entry
>Frogs Drive</entry>
<entry
>5</entry>
<entry
>London</entry>
</row>
<row>
<entry namest="c1" nameend="c5"
><emphasis
>Voorwaarden</emphasis
></entry>
</row>
<row>
<entry
>vereist veld</entry>
<entry
>vereist veld</entry>
<entry
>vereist veld</entry>
<entry
>vereist veld</entry>
<entry
>vereist veld</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Dankzij het introduceren van de voorwaarde <guilabel
>vereist veld</guilabel
> kunnen we er zeker van zijn dat ingevulde gegevens compleet zijn. Bij andere tabellen kunt u natuurlijk toestaan dat bepaalde velden leeg blijven. </para>
</sect3>
<sect3 id="data-limiting">
<title
>Beperking van gegevensweergave</title>
<para
>Een spreadsheet geeft alle rijen en kolommen van de tabel weer, wat lastig kan zijn als er veel gegevens zijn. U kunt in spreadsheets natuurlijk rijen filteren en sorteren, maar dat vereist extra voorzichtigheid. Wanneer u een spreadsheet gebruikt, loopt u het risico dat u vergeet dat de gegevens gefilterd zijn, wat tot vergissingen kan leiden. Bij het berekenen van totalen kunt u denken dat u 100 rijen met gegevens hebt, terwijl er nog 20 extra rijen verborgen zijn. </para>
<para
>Als u met een klein gedeelte van de gegevens wilt werken, ⪚ om deze gegevens door een ander te laten bewerken, kunt u deze naar een ander spreadsheet kopiëren en, nadat ze bewerkt zijn weer terugkopiëren. Deze "handmatige " bewerking kan echter de oorzaak zijn van gegevensverlies of van onjuiste berekeningen. </para>
<para
>Om de <emphasis
>zichtbare gegevens</emphasis
> te beperken, kunnen database-toepassingen <emphasis
>query's</emphasis
>, <emphasis
>formulieren</emphasis
> en <emphasis
>rapporten</emphasis
> maken. </para>
<para
>Een praktische manier om de gegevens te beperken is de volgende uitgebreide versie van de eerder beschreven tabel <guilabel
>Personen</guilabel
>: </para>
<para
><emphasis
>De tabel "Personen"</emphasis
></para>
<informaltable>
<tgroup cols="6">
<tbody>
<row>
<entry
><emphasis
>Naam</emphasis
></entry>
<entry
><emphasis
>Achternaam</emphasis
></entry>
<entry
><emphasis
>Straat</emphasis
></entry>
<entry
><emphasis
>Huisnummer</emphasis
></entry>
<entry
><emphasis
>Plaats</emphasis
></entry>
<entry
><emphasis
>Inkomen</emphasis
></entry>
</row>
<row>
<entry
>Joan</entry>
<entry
>Smith</entry>
<entry
>Western Gate</entry>
<entry
>1</entry>
<entry
>Warsaw</entry>
<entry
>2300</entry>
</row>
<row>
<entry
>Adam</entry>
<entry
>Willson</entry>
<entry
>Frogs Drive</entry>
<entry
>5</entry>
<entry
>London</entry>
<entry
>1900</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>We nemen aan dat de nieuwe kolom <guilabel
>Inkomen</guilabel
> vertrouwelijke gegevens bevat. Hoe kunt u informatie over de personen door uw medewerkers laten inzien, zonder <emphasis
>de inkomens bekend te maken</emphasis
>? Dit is mogelijk als u ze <emphasis
>alleen een query en niet de gehele tabel</emphasis
> geeft. De query kan alle kolommen behalve <guilabel
>Inkomen</guilabel
> selecteren. In de wereld van de database staat zo'n query ook bekend als <guilabel
>weergave</guilabel
>. </para>
</sect3>
<sect3 id="performance-and-capacity">
<title
>Prestatie en capaciteit</title>
<para
>U werkt waarschijnlijk met een vrij snelle computer, maar u zult ook inzien dat dat bij grote, logge spreadsheets niet echt helpt. Het gebrek aan efficiëntie wordt ten eerst veroorzaakt door het ontbreken van indexen die het zoekproces versnellen (databases hebben die wel). Ook het gebruik van een klembord om gegevens te kopiëren kan na verloop van tijd lastig worden. </para>
<para
>Het duurt lang om spreadsheets die veel gegevens bevatten te openen. Een spreadsheet laadt heel veel gegevens in het computergeheugen. De meeste van deze gegevens hebt u waarschijnlijk niet direct nodig. Databases laden, in tegenstelling tot spreadsheets, de gegevens alleen wanneer ze nodig zijn. </para>
<para
>In de meeste gevallen hoeft u er niet om te denken hoe de database de gegevens opslaat. Dit betekent dat het volgende voor databases, in tegenstelling tot spreadsheets, niet uitmaakt: </para>
<itemizedlist>
<listitem
><para
>De volgorde van de rijen, u kunt deze immers veranderen als dat nodig is. Bovendien kunt u dezelfde gegevens in andere volgorden in meer weergaven tegelijk zien. </para
></listitem>
<listitem
><para
>Hetzelfde geldt voor de kolommen (velden) in de tabel. </para
></listitem>
</itemizedlist>
<para
>Samen met <link linkend="data-limiting"
>Beperking van gegevensweergave</link
> in het vorige gedeelte, bepalen deze eigenschappen het voordeel van databases. </para>
</sect3>
<sect3 id="convenient-data-entry">
<title
>Gegevensinvoer</title>
<para
>De nieuwere versies van toepassingen om spreadsheets te creëren bieden de mogelijkheid om formulieren voor gegevensinvoer te ontwerpen. Zulke formulieren zijn nuttig als de gegevens niet gemakkelijk in een tabel getoond kunnen worden, ⪚ omdat de tekst te lang is of omdat niet alle kolommen op het scherm passen. </para>
<para
>In dit geval is de manier waarop de spreadsheet werkt problematisch. Velden voor gegevensinvoer worden her en der in de spreadsheet geplaatst en zijn vaak niet beschermd tegen (bedoelde of onbedoelde) bewerking door andere gebruikers. </para>
</sect3>
<sect3 id="reports">
<title
>Rapporten</title>
<para
>In databases kunnen gegevens gegroepeerd, beperkt en verzameld worden in de vorm van een <emphasis
>rapport</emphasis
>. Spreadsheets worden gewoonlijk in de vorm van kleine tabellen afgedrukt zonder volledige automatische controle over de verdeling van de pagina's en de indeling van de velden. </para>
</sect3>
<sect3 id="programming">
<title
>Programmeren</title>
<para
>Toepassingen voor het creëren van databases beschikken vaak over volwaardige programmeertalen. Nieuwere spreadsheets hebben deze mogelijk ook, maar berekeningen worden nog steeds gedaan door het wijzigen van de velden en het kopiëren van gegevens, zonder rekening te houden met de eerder genoemde regels voor relevantie en integriteit. </para>
<para
>In een spreadsheet worden de gegevens gewoonlijk in een grafische gebruikersinterface verwerkt, waardoor de snelheid achteruit kan gaan. Databases kunnen in de achtergrond werken, buiten de grafische interface om. </para>
</sect3>
<sect3 id="multiuse">
<title
>Gebruik door meer personen tegelijk</title>
<para
>Het is moeilijk om met meer personen tegelijk aan een spreadsheet te werken. Zelfs als het technisch mogelijk is, zoals bij de nieuwste toepassingen, dan vereist het nog een hoge mate van discipline, aandacht en kennis van de gebruikers; en deze eigenschappen kunnen niet gegarandeerd worden. </para>
<para
>Een klassieke manier om gegevens in een spreadsheet met anderen te delen is: het gehele bestand versturen (gewoonlijk per email) of het bestand op een netwerk opslaan. Deze manier van werken is niet effectief voor grote groepen - gegevens die op een bepaalde tijd nodig zijn, kunnen geblokkeerd zijn doordat iemand anders eraan werkt. </para>
<para
>Databases zijn juist ontworpen om de gegevens voor meer personen tegelijk toegankelijk te maken. Zelfs in de eenvoudigste versies kunnen rijen in een bepaalde tabel geblokkeerd worden, waardoor de tabelgegevens gemakkelijk gedeeld kunnen worden. </para>
</sect3>
<sect3 id="security">
<title
>Veiligheid</title>
<para
>Het beveiligen van een spreadsheet of bepaalde delen ervan met een wachtwoord is vaak niet meer dan symbolisch. Nadat een spreadsheet op een computernetwerk opgeslagen is, kan iedereen die het bestand kan kopiëren ook proberen het wachtwoord te achterhalen. Dit is vaak niet eens moeilijk als het wachtwoord in hetzelfde bestand als de spreadsheet opgeslagen is. </para>
<para
>Functies om het bewerken of het kopiëren van een spreadsheet (of een deel ervan) te blokkeren, zijn eveneens gemakkelijk te kraken. </para>
<para
>Databases (behalve die in een bestand opgeslagen zijn in plaats van op een server) hoeven niet als een enkel bestand beschikbaar te zijn. U krijgt toegang tot een database via een computernetwerk, gewoonlijk moet u een gebruikersnaam een een wachtwoord opgeven. U krijgt alleen toegang tot de delen (tabellen, formulieren of zelfs alleen bepaalde rijen en kolommen) die aan u toegewezen zijn door het instellen van toegangsrechten. </para>
<para
>Toegangsrechten bepalen of gegevens bewerkt of alleen gelezen kunnen worden. Als bepaalde gegevens niet voor u beschikbaar zijn, worden die ook niet naar uw computer gestuurd, er is dan ook geen mogelijkheid om de gegevens zo gemakkelijk te kopiëren, zoals dat wel bij spreadsheets kan. </para>
</sect3>
</sect2>
</sect1>
<sect1 id="database-design">
<title
>Database-ontwerp</title>
<para
>Over het ontwerpen van een database moet zorgvuldig nagedacht worden. U kunt waarschijnlijk wel inzien dat het wijzigen van de tabel <guilabel
>Contacten</guilabel
>, zoals voorgesteld werd in hoofdstuk 1.2, problemen kan opleveren als de tabel veel gegevens bevat. Bijvoorbeeld: een veld hernoemen is gemakkelijk, maar het splitsen van het veld <guilabel
>Adres</guilabel
> in aparte velden is lastig werk en vereist veel aandacht. </para>
<para
>Om zulke situaties te vermijden moet u <emphasis
>nadenken over uw databaseproject</emphasis
> voordat u het daadwerkelijk op de computer creëert en voordat anderen het gaan gebruiken. Door in het begin wat meer tijd te investeren, kunt u later vrijwel zeker veel tijd bij uw dagelijks werk besparen. </para>
</sect1>
<sect1 id="who-needs-a-database">
<title
>Wie heeft een database nodig?</title>
<itemizedlist>
<title
>Gebruik een spreadsheet als:</title>
<listitem
><para
>u de uitgebreide mogelijkheden niet nodig hebt en als de hoeveelheid gegevens niet steeds groter wordt (maar kunt u dat met zekerheid voorspellen?) </para
></listitem>
<listitem
><para
>u niet in staat bent om de methodes om een database te maken te leren. U zou er dan over kunnen denken om deze taak uit te besteden of om eenvoudigere hulpmiddelen te gebruiken. </para
></listitem>
<listitem
><para
>u ingewikkelde spreadsheets gebruikt en het ontbreekt u aan tijd of geld om over te schakelen naar databases. Bedenk of dit geen doodlopende weg is. Reken niet op magische hulpmiddelen die uw spreadsheet (hoe goed ontworpen ook) in een database veranderen. </para
></listitem>
</itemizedlist>
<itemizedlist>
<title
>Overweeg om databases te gebruiken als:</title>
<listitem
><para
>uw verzameling gegevens met de week groeit.</para
></listitem>
<listitem
><para
>u vaak nieuwe spreadsheets maakt, tussen spreadsheets heen en weer kopieert, en het gevoel krijgt dat het werk steeds lastiger wordt. In dit geval wordt de moeite van het overschakelen snel terugverdiend. </para
></listitem>
<listitem
><para
>u rapporten en overzichten maakt waarvoor de tabelweergave van een spreadsheet niet geschikt is. U kunt overwegen om over te schakelen naar een database met formulierweergaven. </para
></listitem>
</itemizedlist>
</sect1>
<sect1 id="database-software">
<title
>Software voor het maken van databases</title>
<para
>Tot nu toe hebt u iets geleerd over de algemene eigenschappen van databases zonder details over specifieke toepassingen om ze te ontwerpen. </para>
<para
>De eerste databases zijn tegelijk met grote mainframes in de jaren 60 gebouwd, ⪚ IBM System/360. Dat was voordat de pc's hun intrede deden. Deze databases werden onderhouden door gespecialiseerd personeel. Hoewel de hardware van die computers onberekenbaar was, ze erg langzaam waren en weinig opslagruimte hadden, blijft één van de eigenschappen van de databases ook nu nog een aantrekkelijk voordeel: veel gebruikers kunnen tegelijkertijd toegang tot de gegevens hebben via een netwerk. </para>
<para
>In de jaren 70 ontwikkelden wetenschappers de theorie van relationele databases (termen zoals: <firstterm
>tabel</firstterm
>, <firstterm
>record</firstterm
>, <firstterm
>veld</firstterm
>, <firstterm
>relationeel</firstterm
> en vele anderen). Op basis van deze theorie zijn de IBM DB2 en Oracle-databases gecreëerd, die verder ontwikkeld werden en nog steeds gebruikt worden. Aan het einde van de jaren 70 kwamen de eerste pc's op de markt. Hun gebruikers konden langzaamaan steeds meer verschillende toepassingen gebruiken, ook die voor het creëren van databases. </para>
<para
>Voor grote databases van bedrijven is de situatie niet veranderd: ze hebben nog steeds krachtige computers of aan elkaar geschakelde computers, <firstterm
>clusters</firstterm
> genoemd, nodig. Dit valt echter buiten het bereik van dit handboek. </para>
<para
>Op het gebied van "toegankelijke" databases met een grafische gebruikersinterface voor pc's kunt u kiezen uit de volgende mogelijkheden: </para>
<itemizedlist>
<listitem
><para
><ulink url="http://www.dbase.com/"
>DBase</ulink
> - een hulpmiddel om databases te beheren voor DOS, populair in de jaren 80. Bestanden in DBase-formaat worden nog steeds in speciale gevallen gebruikt omdat hun structuur zo eenvoudig is. </para
></listitem>
<listitem
><para
><ulink url="http://msdn.microsoft.com/vfoxpro/productinfo/overview/"
> FoxPro</ulink
> - een toepassing die op DBase lijkt (begin jaren 90). Na de overname door Microsoft werd er een grafische gebruikersinterface aan toegevoegd, sinds die tijd werd het gebruikt om databases op pc's te creëren. Het product is nog steeds op de markt, hoewel het een beetje verouderd lijkt. </para
></listitem>
<listitem
><para
><ulink url="http://office.microsoft.com/access/"
>Microsoft Access</ulink
> - een toepassing voor databases (gegevens en ontwerpen van grafische interfaces) met veel vereenvoudigingen en daarom geschikt voor beginners, ontworpen eind jaren 80, gebaseerd op 16-bits architectuur. Dit is ook nu nog op de markt en wordt nog veel gebruikt, vooral door kleine bedrijven waar efficiëntie en de toegang van meer gebruikers tegelijk niet zo belangrijk zijn. </para
></listitem>
<listitem
><para
><ulink url="http://www.filemaker.com/"
>FileMaker</ulink
> - een populaire toepassing die wel wat op MS Access lijkt wat betreft eenvoud, draait op Windows en Macintosh platforms, op de markt sinds 1985. </para
></listitem>
<listitem
><para
><ulink url="http://www.kexi.pl/"
>&kexi;</ulink
> - een toepassing voor verscheidene platforms (Unix/Linux, Windows, Mac OS X), ontworpen in 2003, ontwikkeld volgend de "OpenSource" principes, maakt deel uit van het <ulink url="http://www.kde.org/"
>K Desktop Environment</ulink
>-project, dit is een grafische omgeving voor Unix/Linux-systemen. Een belangrijke bijdrage aan de ontwikkeling van &kexi; wordt geleverd door de "OpenOffice Poland company". </para
></listitem>
</itemizedlist>
</sect1>
</appendix>
|