summaryrefslogtreecommitdiffstats
path: root/koffice-i18n-de/docs/koffice/kexi/database.docbook
blob: 44506b1b52023bac659f553d855228673adacb39 (plain)
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
>Einführung in Datenbanken</title>

<sect1 id="what-is-a-database">
<title
>Was ist eine Datenbank?</title>
<para
>Eine Datenbank ist eine Sammlung von Daten zu einem Thema. Die Datenbank ist so eingerichtet, dass es einfach ist, Informationen anzuzeigen, zu ändern und neue Einträge hinzuzufügen. </para>
<para
>Schauen Sie sich dieses Diagramm an: ein einfaches Telefonbuch. </para>
<screenshot>
  <screeninfo
>Diagramm einer Datenbank mit Telefonnummern</screeninfo>
    <mediaobject>
        <imageobject>
            <imagedata fileref="contact-example.png" format="PNG"/>
        </imageobject>
        <textobject>
            <phrase
>Diagramm einer Datenbank mit Telefonnummern</phrase>
        </textobject>
    </mediaobject>
</screenshot>
<para
>Die Abbildung zeigt einen Satz von zwei Kontaktdaten auf einzelnen Karten. Die Informationen auf jeder Karte können als einzelne Zeile einer Tabelle dargestellt werden: </para>

<para
><emphasis
>Tabelle <guilabel
>Kontakte</guilabel
></emphasis
></para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><guilabel
>Name</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
>Begriffe und Definitionen</emphasis
>: Ein einzelnes Datum als Teil einer Datensammlung kann als <firstterm
>Zeile</firstterm
> oder auch als <firstterm
>Datensatz</firstterm
> bezeichnet werden. Die Datensammlung wird normalerweise als <firstterm
>Tabelle</firstterm
> bezeichnet. Ein sinnvoller Name für die Tabelle beschreibt die darin enthaltenen Daten, in diesem Fall <guilabel
>Kontakte</guilabel
>. Jede Zeile in der Tabelle enthält <guilabel
>Spalten</guilabel
>, auch <firstterm
>Felder</firstterm
> genannt. Die Tabelle <firstterm
>Kontakte</firstterm
> besteht aus zwei Spalten (Feldern): <guilabel
>Name</guilabel
> und <guilabel
>Tel-Nr</guilabel
>. </para>
<para
>In einfachen Fällen kann eine <firstterm
>Datenbank</firstterm
> aus einer einzelnen Tabelle bestehen, daher werden diese beiden Begriffe häufig in gleicher Bedeutung benutzt. "Richtige" Datenbanken bestehen aber normalerweise aus mehr als einer Tabelle. </para>
<para
>Zusammenfassung: Mit einer Tabelle <guilabel
>Kontakte</guilabel
> haben Sie bereits eine Datenbank erstellt. </para>
</sect1>


<sect1 id="database-and-spreadsheet">
<title
>Datenbank und Tabellenkalkulation</title>
<para
>Wahrscheinlich haben Sie bereits mit Tabellenkalkulationen wie KSpread, OpenOffice.org Calc oder Microsoft Excel gearbeitet. Sowohl Tabellenkalkulationen als auch Datenbanken bestehen aus Tabellen; warum also eine Datenbank benutzen? </para>
<para
>Beim Vergleich von Tabellenkalkulation und Datenbank werden Sie auf folgende Probleme treffen, die später im Einzelnen behandelt werden: </para>
<itemizedlist>
<listitem
><para
><link linkend="referential-data-integrity"
>Referentielle Datenintegrität</link
></para
></listitem>
<listitem
><para
><link linkend="data-redundyncy"
>Datenredundanz</link>
</para
></listitem>
<listitem
><para
><link linkend="data-integrity-and-validity"
>Integrität und Gültigkeit der Daten</link
></para
></listitem>
<listitem
><para
><link linkend="data-limiting"
>Einschränkung der Datenansicht</link
></para
></listitem>
<listitem
><para
><link linkend="performance-and-capacity"
>Leistung und Fassungsvermögen</link
></para
></listitem>
<listitem
><para
><link linkend="convenient-data-entry"
>Praktische Dateneingabe</link
></para
></listitem>
<listitem
><para
><link linkend="reports"
>Berichte</link
></para
></listitem>
<listitem
><para
><link linkend="programming"
>Programmierung</link
></para
></listitem>
<listitem
><para
><link linkend="multiuse"
>Mehrere Benutzer</link
></para
></listitem>
<listitem
><para
><link linkend="security"
>Sicherheit</link
></para
></listitem>
</itemizedlist>

<sect2 id="difference-database-and-spreadsheet">
<title
>Unterschied zwischen Datenbank und Tabellenkalkulation</title>

<para
>Erweitern Sie Ihre Tabelle <guilabel
>Kontakte</guilabel
> um die Spalte (das Feld) <guilabel
>Adresse</guilabel
>. Fügen Sie mehrere Telefonnummern (beruflich, privat) und Vornamen für jede Person hinzu. Zur Vereinfachung werden folgende Annahmen getroffen: </para>
<itemizedlist>
<listitem
><para
>die Tabelle enthält nur zwei Personen (natürlich kann eine Datenbank Tausende von  Personen enthalten</para
></listitem>
<listitem
><para
>es gibt keine Personen mit gleichem Vor- und Nachnamen</para>
</listitem>
</itemizedlist>
<para
><emphasis
>Tabelle Kontakte</emphasis
></para>
<informaltable>
<tgroup cols="3">
<tbody>
<row>
<entry
><emphasis
>Vorname und Nachname</emphasis
></entry>
<entry
><emphasis
>Tel</emphasis
></entry>
<entry
><emphasis
>Adresse</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
>Diese Tabelle können Sie sowohl in einer Tabellenkalkulation als auch in einer Datenbank erstellen. Die Verwendung einer Tabellenkalkulation ist natürlich sehr einfach. Welche Probleme können hier auftreten? </para>

<sect3 id="referential-data-integrity">
<title
>Referentielle Datenintegrität</title>
<para
>Angenommen Sie arbeiten mit einer Tabellenkalkulation und müssen die Adresse mindestens einer Person ändern. Dann gibt es ein kleines Problem: Häufig müssen Sie die Adresse in mehreren Zeilen ändern. Für Joan zum Beispiel gibt es Einträge in drei verschiedenen Zeilen. Das Problem entsteht dann, wenn Sie vergessen, eine dieser Zeilen zu ändern - die Adresse dieser Person ist nicht mehr <emphasis
>eindeutig</emphasis
>, ab jetzt ist die <emphasis
>Integrität der Daten nicht mehr vorhanden</emphasis
>. </para>
<para
>Außerdem gibt es keine einfache Möglichkeit, eine bestimmte Person aus der Tabelle zu löschen. Sie müssen immer daran denken, alle Zeilen mit Daten zu dieser Person zu löschen. </para>
</sect3>


<sect3 id="data-redundyncy">
<title
>Datenredundanz</title>
<para
>Dies hat einen direkten Bezug zum vorherigen Problem. In den Feldern <guilabel
>Vorname und Nachname</guilabel
> und <guilabel
>Adresse</guilabel
> sind die gleichen Daten mehrfach eingetragen. Das ist ein Kennzeichen der nicht effektiven Datenspeicherung in Tabellenkalkulationen, weil die Menge der Daten unnötigerweise vergrößert wird. Dies erfordert mehr Rechnerressourcen (größere Datenmenge und langsamerer Zugriff). </para>
<para
>Wie können Sie diese Probleme mit einer Datenbank umgehen? Teilen Sie die Informationen in kleinere Einheiten, indem Sie eine zusätzliche Tabelle <emphasis
>Personen</emphasis
> mit nur zwei Spalten erstellen: <guilabel
>Vorname und Nachname</guilabel
> und <guilabel
>Adresse</guilabel
>: </para>

<para
><emphasis
>Tabelle <guilabel
>Personen</guilabel
></emphasis
></para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><emphasis
>Vorname und Nachname</emphasis
></entry>
<entry
><emphasis
>Adresse</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
>Jede Zeile in der Tabelle <guilabel
>Personen</guilabel
> enthält eine <emphasis
>einzelne Person</emphasis
>. Die Tabelle <guilabel
>Kontakte</guilabel
> hat jetzt einen Bezug zur Tabelle <guilabel
>Personen</guilabel
>. </para>

</sect3>

<sect3 id="data-integrity-and-validity">
<title
>Integrität und Gültigkeit der Daten</title>
<para
>Beachten Sie, wie Daten in die Felder <guilabel
>Vorname und Nachname</guilabel
> und <guilabel
>Adresse</guilabel
> eingeben werden. Die Dateneingabe kann fehlerhaft oder nachlässig sein. In diesem Beispiel gibt es eine unterschiedliche Reihenfolge und Schreibweise von Vor- und Nachnamen (Joan Smith und Smith Joan, Adam und ADAM) und noch andere Möglichkeiten, die gleiche Adresse einzutragen. </para>
<para
>Bei diesen verschiedenen Möglichkeiten der Dateneingabe erhalten Sie z. B. bei der Suche nach der Telefonnummer einer Person mit der Adresse "Western Gate 1, Warsaw" kein vollständiges Ergebnis. Sie erhalten nur die Daten aus einer Zeile anstatt aus drei Zeilen. Darüber hinaus finden Sie auch nicht alle Telefonnummern, wenn Sie nach "Joan Smith" im Feld <guilabel
>Vor- und Nachname</guilabel
> suchen, weil "Smith Joan" sich von "Joan Smith" unterscheidet. </para>
<para
>Wie lösen Sie dieses Problem mit einer Datenbank? Ändern Sie den Entwurf der Tabelle <guilabel
>Personen</guilabel
> durch: </para>
<orderedlist>
<listitem
><para
><emphasis
>Aufteilung der Daten</emphasis
> im Feld <guilabel
>Vorname und Nachname</guilabel
> in zwei einzelne Felder: <guilabel
>Vorname</guilabel
> und <guilabel
>Nachname</guilabel
>. </para
></listitem>
<listitem
><para
><emphasis
>Aufteilung der Daten</emphasis
> im Feld <guilabel
>Adresse</guilabel
> in drei einzelne Felder: <guilabel
>Straße</guilabel
>, <guilabel
>Hausnummer</guilabel
> und <guilabel
>Stadt</guilabel
>. </para
></listitem>
<listitem
><para
><emphasis
>Vollständigkeit der Daten</emphasis
>: Sicherstellen, dass keine Felder leer bleiben, z. B. es muss immer eine Hausnummer eingegeben werden. </para
></listitem>
</orderedlist>

<para
>Eine überarbeitete Tabelle sieht folgendermaßen aus: </para>

<para
><emphasis
>Tabelle 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
>Name</emphasis
></entry>
<entry
><emphasis
>Nachname</emphasis
></entry>
<entry
><emphasis
>Straße</emphasis
></entry>
<entry
><emphasis
>Hausnummer</emphasis
></entry>
<entry
><emphasis
>Stadt</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
>Bedingungen</emphasis
></entry>
</row>
<row>
<entry
>Wert erforderlich</entry>
<entry
>Wert erforderlich</entry>
<entry
>Wert erforderlich</entry>
<entry
>Wert erforderlich</entry>
<entry
>Wert erforderlich</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Dank der Bedingung <guilabel
>Wert erforderlich</guilabel
> ist sichergestellt, dass die Daten immer vollständig sind. Bei anderen Tabellen können Sie natürlich einzelne Felder während der Dateneingabe auslassen. </para>

</sect3>

<sect3 id="data-limiting">
<title
>Einschränkung der Datenansicht</title>
<para
>Eine Tabellenkalkulation zeigt alle Zeilen und Spalten der Tabelle an, was bei großen Datenblättern lästig ist. Sie können natürlich Filter anwenden und Zeilen in Tabellenkalkulationen sortieren, müssen dabei aber sorgfältig vorgehen. Benutzer einer Tabellenkalkulation können leicht übersehen, dass die Datenansicht gefiltert ist, das kann zu Fehlern führen. Wenn Sie zum Beispiel Summen berechnen, können Sie leicht übersehen, dass zwar 100 Zeilen angezeigt werden, aber noch weitere 20 Zeilen ausgeblendet sind. </para>
<para
>Wenn Sie mit einem kleinen Teil der Daten arbeiten wollen, um sie z. B. zur Bearbeitung an andere zu senden, können Sie diese Daten kopieren, sie in eine andere Tabelle und nach der Bearbeitung die geänderten Daten wieder zurück in die Haupttabelle einfügen. Solch eine "manuelle" Bearbeitung kann zum Datenverlust oder falschen Berechnungen führen. </para>
<para
>Um den Umfang der <emphasis
>Datenansicht</emphasis
> einzuschränken, verwenden Datenbankprogramme <emphasis
>Abfragen</emphasis
>, <emphasis
>Formulare</emphasis
> und <emphasis
>Berichte</emphasis
>. </para>
<para
>Ein brauchbarer Weg zur Beschränkung zeigt die folgende erweiterte Version der vorher beschriebenen Tabelle <guilabel
>Personen</guilabel
>: </para>

<para
><emphasis
>Tabelle Personen</emphasis
></para>
<informaltable>
<tgroup cols="6">
<tbody>
<row>
<entry
><emphasis
>Name</emphasis
></entry>
<entry
><emphasis
>Nachname</emphasis
></entry>
<entry
><emphasis
>Straße</emphasis
></entry>
<entry
><emphasis
>Hausnummer</emphasis
></entry>
<entry
><emphasis
>Stadt</emphasis
></entry>
<entry
><emphasis
>Einkommen</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
>Angenommen die neu eingefügte Spalte <guilabel
>Einkommen</guilabel
> enthält vertrauliche Daten. Wie können Ihre Mitarbeiter z. B. die Daten der Personen bearbeiten, ohne <emphasis
>das Einkommen offen zu legen</emphasis
>? Das ist möglich, wenn Sie zur Bearbeitung <emphasis
>nur eine Abfrage und nicht die ganze Tabelle freigeben</emphasis
>. Diese Abfrage kann alle Spalten außer der Spalte <guilabel
>Einkommen</guilabel
> enthalten. Bei Datenbanken wird so eine Abfrage häufig auch <guilabel
>Ansicht</guilabel
> genannt. </para>

</sect3>

<sect3 id="performance-and-capacity">
<title
>Leistung und Kapazität</title>
<para
>Sie arbeiten vielleicht mit einem schnellen Rechner, aber das hilft nicht bei langsamen, großen Tabellenkalkulationen. Die geringe Leistungsfähigkeit wird vor allem durch das Fehlen von Indexen zu Beschleunigung von Suchprozessen verursacht; in Datenbanken sind Indexe vorhanden. Außerdem kann auch die Benutzung der Zwischenablage beim Kopieren von Daten sehr lange dauern. </para>
<para
>Tabellenkalkulationen mit vielen Daten brauchen viel Zeit zum Öffnen der Datei. Eine Tabellenkalkulation lädt dabei viele Daten in den Arbeitsspeicher des Rechners. Die meisten Daten werden wahrscheinlich für Ihre Arbeit zur Zeit gar nicht benötigt. Im Gegensatz dazu laden Datenbanken nur dann Daten vom Speichermedium, wenn sie auch benötigt werden. </para>
<para
>In den meisten Fällen müssen Sie sich keine Gedanken darüber machen, wie die Daten in der Datenbank gespeichert werden. Im Gegensatz zur Tabellenkalkulation müssen Sie bei Datenbanken folgendes nicht berücksichtigen: </para>
<itemizedlist>
<listitem
><para
>Die Reihenfolge der Zeilen, da Sie die Sortierung der Zeilen anpassen können. Außerdem können Sie die gleichen Daten in verschiedenen Ansichten in unterschiedlicher Reihenfolge anzeigen. </para
></listitem>
<listitem
><para
>Das gleiche gilt für die Spalten (Felder) in der Tabelle. </para
></listitem>
</itemizedlist>

<para
>Zusammen mit der <link linkend="data-limiting"
>Einschränkung der Datenansicht</link
>, die im vorherigen Abschnitt erläutert wurde, zeigen diese Eigenschaften die Vorteile von Datenbanken. </para>

</sect3>

<sect3 id="convenient-data-entry">
<title
>Dateneingabe</title>
<para
>Mit den neuesten Versionen von Tabellenkalkulationsprogrammen können Sie Formulare zur Dateneingabe erstellen. Diese Formulare sind dann sinnvoll, wenn die Daten nicht in geeigneter Weise in der Tabellenansicht angezeigt werden können, z. B. wenn nicht mehr alle Spalten und Zeilen gleichzeitig auf den Bildschirm passen. </para>
<para
>In diesem Fall ist die Arbeitsweise von Tabellenkalkulationen problematisch. Felder zur Eingabe von Daten können in der Tabellenkalkulation verschoben werden, es gibt häufig keine Absicherung gegen beabsichtigte oder unbeabsichtigte Veränderungen durch die Benutzer.  </para>
</sect3>

<sect3 id="reports">
<title
>Berichte</title>
<para
>Datenbanken erlauben die Gruppierung, Begrenzung und Zusammenfassung von Daten in der Form eines <emphasis
>Berichts</emphasis
>. Tabellenkalkulationen werden normalerweise als kleine Tabellen ohne automatische Kontrolle der Seitenumbrüche und der Anordnung von Feldern ausgedruckt. </para>
</sect3>

<sect3 id="programming">
<title
>Programmierung</title>
<para
>Datenbankanwendungen enthalten häufig vollwertige Programmiersprachen. Neue Tabellenkalkulationen haben auch diese Fähigkeiten, aber die Berechnungen beschränken sich auf die Änderung der Felder und das Kopieren von Daten in der Tabelle, ohne die in den vorigen Abschnitten erwähnten Regeln zur Relevanz und Integrität zu berücksichtigen. </para>
<para
>Die Bearbeitung der Daten in einer Tabellenkalkulation erfolgt normalerweise in einer graphischen Benutzeroberfläche, die die Verarbeitungsgeschwindigkeit herabsetzen kann. Datenbanken können die Daten im Hintergrund außerhalb einer graphischen Benutzeroberfläche bearbeiten. </para>
</sect3>

<sect3 id="multiuse">
<title
>Mehrfachbenutzung</title>
<para
>Die gleichzeitige Bearbeitung in einer Tabellenkalkulation ist schwer vorstellbar. Auch wenn es bei den neuesten Programmen technisch möglich ist, erfordert es doch Disziplin, Aufmerksamkeit und Erfahrung vom Benutzer. Das ist nicht immer gegeben. </para>
<para
>Der klassische Weg, um in einer Tabellenkalkulation gespeicherte Daten gleichzeitig mit anderen Personen zu bearbeiten, besteht darin, die gesamte Datei normalerweise als E-Mail zu versenden oder die Tabellenkalkulationsdatei im Netzwerk bereitzustellen. Diese Arbeitsweise ist für einer größere Gruppe von Personen nicht effektiv - Daten, die zu einem bestimmten Zeitpunkt benötigt werden, können gerade durch die Bearbeitung eines anderen gesperrt sein.  </para>
<para
>Im Gegensatz dazu wurden Datenbanken für die Bearbeitung durch mehrere Benutzer entwickelt. Sogar in einfachen Versionen ist es möglich, Zeilen einer bestimmten Tabelle zu sperren. Das erleichtert die gleichzeitige Bearbeitung der Tabellendaten. </para>
</sect3>

<sect3 id="security">
<title
>Sicherheit</title>
<para
>Eine gesamte Tabellenkalkulation oder einzelne Teile mit einem Passwort zu schützen, bietet keine große Sicherheit. Wenn der Zugriff auf eine Tabellenkalkulationsdatei im Netzwerk möglich ist, kann jede Person mit Zugriffsberechtigung die Datei kopieren und versuchen, das Passwort zu brechen. Das ist manchmal nicht so schwer, da das Passwort zusammen mit den Daten in der Datei gespeichert ist. </para>
<para
>Eigenschaften wie das Sperren der Bearbeitung oder des Kopierens einer Tabellenkalkulation (oder einzelner Teile) sind genauso leicht zu umgehen. </para>
<para
>Datenbanken dagegen, die auf einem Server und nicht in einer Datei gespeichert sind, müssen nicht nur aus in einer einzelnen Datei bestehen. Im Netzwerk erhalten Sie mit dem Benutzernamen und einem Passwort Zugriff auf die Daten. Dieser Zugriff kann aber durch das Setzen von passenden Benutzerrechten auf einzelne Bereiche (Tabellen, Formulare oder sogar ausgewählte Zeilen und Spalten) eingeschränkt werden. </para>
<para
>Zugriffsrechte können auf das Bearbeiten oder nur das Lesen von Daten beschränkt sein. Wenn Sie keine Berechtigung für den Zugriff auf bestimmte Daten haben, werden diese Daten auch nicht auf Ihren Rechner übertragen. Daher haben Sie keine Möglichkeit, diese Daten so einfach wie bei einer Tabellenkalkulation zu kopieren. </para>

</sect3>
</sect2>
</sect1>

<sect1 id="database-design">
<title
>Entwurf von Datenbanken</title>
<para
>Der Entwurf von Datenbanken erfordert sorgfältige Planung. Beachten Sie, dass die im Abschnitt "Datenredundanz" vorgeschlagene Änderung der Tabelle <guilabel
>Kontakte</guilabel
> zu Problemen führen kann, wenn Daten in die Tabelle eingegeben werden. Die Änderung des Namens für ein Feld ist zum Beispiel eine einfache Aufgabe, aber die Aufteilung des Feldes <guilabel
>Adresse</guilabel
> in einzelne Felder muss sorgfältig ausgeführt werden und ist eine langwierige Arbeit. </para>
<para
>Um solche Situationen zu vermeiden, <emphasis
>planen sie Ihr Datenbankprojekt</emphasis
>, ehe Sie es im Rechner erstellen und bevor es benutzt wird. So sparen Sie durch den Aufwand am Anfang vielleicht viel Zeit bei der täglichen Arbeit  </para>
</sect1>

<sect1 id="who-needs-a-database">
<title
>Wer braucht Datenbanken?</title>
<itemizedlist>
<title
>Arbeiten Sie mit einer Tabellenkalkulation, wenn:</title>
<listitem
><para
>Sie geringe Ansprüche haben und Ihre Daten nie umfangreich werden (können Sie das heute beurteilen?) </para
></listitem>
<listitem
><para
>Sie die Methodik des Entwurfs von Datenbanken nicht verstehen. Sie können diese Aufgabe jedoch durch jemanden ausführen lassen oder einfachere Programme benutzen. </para
></listitem>
<listitem
><para
>Sie komplizierte Tabellenkalkulationen benutzen und keine Zeit oder das Geld haben, um zu Datenbanken zu wechseln. Überprüfen Sie, ob das nicht in eine Sackgasse führt. Verlassen Sie sich nicht auf Konvertierungsprogramme, die Ihre Tabellenkalkulation in eine Datenbank umwandeln. </para
></listitem>
</itemizedlist>

<itemizedlist>
<title
>Überlegen Sie Datenbanken zu benutzen, wenn:</title>
<listitem
><para
>Ihre Datensammlung wöchentlich größer wird.</para
></listitem>
<listitem
><para
>Sie häufig neue Tabellenkalkulationen erstellen, viel hin und her kopieren und den Eindruck haben, dass die Arbeit immer langwieriger wird. In diesem Fall lohnt sich der Umstieg auf Datenbanken. </para
></listitem>
<listitem
><para
>Sie Berichte und Auswertungen erstellen, die für die Tabellenansicht einer Tabellenkalkulation ungeeignet ist. Verwenden Sie statt dessen Datenbanken mit Formularansichten. </para
></listitem>
</itemizedlist>
</sect1>

<sect1 id="database-software">
<title
>Programme zur Erstellung von Datenbanken</title>
<para
>Bis jetzt haben Sie die allgemeinen Merkmale von Datenbanken kennengelernt, ohne dabei auf Anwendungen zum Entwurf der Datenbanken einzugehen. </para>
<para
>Die ersten Datenbanken wurden in den 60ern auf Großrechnern entwickelt, z. B. IBM System/360. Dies war vor dem Zeitalter der PCs und diese Datenbanken wurden durch hochqualifiziertes Fachpersonal bedient. Obwohl diese Rechner-Hardware unzuverlässig und unglaublich langsam war und eine geringe Speicherkapazität hatte, ist eine Eigenschaft dieser Datenbanken immer noch sehr wichtig: der Zugriff auf Daten durch viele Benutzer über ein Netzwerk. </para>
<para
>In den 70er Jahren entwickelten Forscher die Theorie relationaler Datenbanken (mit Begriffen wie <firstterm
>Tabelle</firstterm
>, <firstterm
>Datensatz</firstterm
>, <firstterm
>Spalte (Feld)</firstterm
>, <firstterm
>Relation</firstterm
> und vielen anderen). Auf der Basis dieser Theorie erstellten IBM (DB2) und Oracle Datenbanken, die bis heute weiter entwickelt und benutzt werden. In der späten 70er Jahren wurden die ersten PCs konstruiert. Die Benutzer dieser Rechner konnten schrittweise viele Arten von Programmen anwenden, unter anderem auch Datenbanken. </para>
<para
>Für große Datenbanken in Firmen hat sich diese Situation nicht geändert: es sind immer noch leistungsfähige Rechner oder miteinander verbundene Rechner (<firstterm
>Cluster</firstterm
>) erforderlich. Dieses Thema wird in diesem Handbuch aber nicht behandelt. </para>
<para
>Im Bereich der Datenbanken mit graphischer Benutzeroberfläche für PCs stehen folgende Programme zur Auswahl: </para>

<itemizedlist>
<listitem
><para
><ulink url="http://www.dbase.com/"
>DBase</ulink
> - eine bekannte Datenbank für DOS aus den 80er Jahren. Dateien im DBase-Format werden immer noch wegen ihrer einfachen Struktur verwendet. </para
></listitem>
<listitem
><para
><ulink url="http://msdn.microsoft.com/vfoxpro/productinfo/overview/"
>FoxPro</ulink
> - eine Anwendung ähnlich wie DBase aus den frühen 90er Jahren. Nach der Übernahme durch Microsoft wurde es um eine graphische Benutzeroberfläche erweitert und wird daher für Datenbanken auf PCs verwendet. Das Programm wird immer noch angeboten, scheint aber veraltet zu sein. </para
></listitem>
<listitem
><para
><ulink url="http://office.microsoft.com/access/"
>Microsoft Access</ulink
> - eine Datenbankanwendung (Entwurf von Datenbanken und graphischen Oberflächen) mit vielen Vereinfachungen, daher für Anfänger geeignet, entworfen in den späten 80er Jahren auf der Grundlage einer 16-Bit Rechnerarchitektur. Diese Anwendung ist bis heute weit verbreitet, besonders in kleinen Firmen, die nur geringe Anforderungen an Effizienz und Mehrbenutzerbetrieb haben. </para
></listitem>
<listitem
><para
><ulink url="http://www.filemaker.com/"
>FileMaker</ulink
> - ein bekanntes Programm ähnlich wie MS Access, aber einfacher; seit 1995 für Windows- und Macintosh-Betriebssysteme. </para
></listitem>
<listitem
><para
><ulink url="http://www.kexi.pl/"
>&kexi;</ulink
> - eine Anwendung für mehrere Betriebssysteme (Unix/Linux, Windows, Mac OS X), entwickelt seit 2003 als "OpenSource". &kexi; ist Teil des Projekts <ulink url="http://www.kde.org/"
>K Desktop Environment</ulink
>, d. h. einer graphischen Arbeitsoberfläche für Unix bzw. Linux-Systeme. Die Entwicklung von &kexi; wird wesentlich durch die Firma OpenOffice Poland unterstützt. </para
></listitem>
</itemizedlist>

</sect1>

</appendix>