You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
783 lines
25 KiB
783 lines
25 KiB
12 years ago
|
<!--
|
||
|
<!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>
|