Bunte Bits

7. Anwendungssoftware


7.4 Datenbank

Das Thema Datenbanksoftware werde ich nur sehr oberflächlich behandeln, weil man zu diesem Werkzeug normalerweise erst im fortgeschrittenen Stadium des Computerhobbys greift. Andererseits ist Datenbank ein häufig und auch häufig falsch verwendeter Begriff und es kann nicht schaden, wenn man eine Vorstellung davon hat, was er bedeutet. Es geht in diesem Kapitel also mehr um Grundsätzliches als um die Bedienung eines bestimmten Softwareprodukts.

Was hat es also auf sich mit der Datenbank? Müssen Daten sich etwa ab und zu hinsetzen, um sich auszuruhen? Natürlich nicht! Lass es mich an einem Beispiel erklären:

Du könntest auf die Idee kommen, auf deinem Computer eine Liste zu führen, wem deiner Freunde du welches deiner Bücher geliehen hast.

Dazu könntest du zum Beispiel eine solche Tabelle anfertigen:

Buchtitel ausgeliehen
am (Datum)
ausgeliehen an Rückgabe
erbeten bis
zurückerhalten
am
VornameNameTelefonnr.
Harry Potter und der Stein der Weisen 21.02.2004 Lisa Lotterlich 04321/123456 20.04.2004  

Tabelle 18: Bücherausleihe

So etwas könntest du in Excel machen und es handelt sich dabei schon um eine einfache Datenbank:

Jeder Ausleihvorgang wäre in dieser Tabelle eine Zeile. Das ist das Grundprinzip einer Datenbank:

Sie beschreibt in Tabellen gleichartige Objekte, in diesem Fall Ausleihvorgänge. Die Eigenschaften jedes Objekts werden in Spalten und die Objekte selbst in Zeilen dargestellt. Das bedeutet nichts anderes als dass in diesem Beispiel bei allen Ausleihvorgängen der Buchtitel in der ersten Spalte steht, das Ausleihdatum in der zweiten usw. und dass nicht der eine Ausleihvorgang so und der nächste anders beschrieben wird.

Bei Datenbanken nennt man die Spalten auch Felder. Eine komplett ausgefüllte Zeile heißt Datensatz oder auf englisch Record.

Wenn du diese Tabelle ausfüllst, wirst du sehen, dass du die Buchtitel der beliebtesten Bücher immer wieder neu schreiben musst, weil es ja sein kann, dass du ein Buch nacheinander an mehrere Freunde ausleihst. Außerdem kann es sein, dass die selbe Person heute das eine Buch und in zwei Monaten ein anderes ausleiht. Du musst, um einen vollständigen Datensatz jedes Ausleihvorgangs zu erzeugen, den Namen jedes Mal wieder eintragen.

Das ist nicht nur lästig, sondern auch fehleranfällig! Nehmen wir an, du möchtest eine Aufstellung machen, welche Bücher ein bestimmter Freund schon alle bei dir ausgeliehen hat. Wenn du den Namen mehrmals eingetippt hast, kann es sein, dass du dich vertippt hast oder du mal den richtigen und mal den Spitznamen eingetragen hast. Bei der Auswertung würden die Datensätze mit anders geschriebenem Namen nicht mit auftauchen - oder du müsstest sie mit viel Mühe manuell heraussuchen.

Ein weiterer Nachteil der einfachen Tabelle aus dem Beispiel: Wenn du wissen willst, ob du ein bestimmtes Buch verliehen hast - weil du es vielleicht in deinem Regal nicht finden kannst - musst du die ganze Tabelle nach Einträgen für dieses Buch durchsuchen und nachsehen, ob ein Datensatz ohne Rückgabedatum existiert.

Wenn man sich hochtrabend ausdrücken will, kann man auch sagen, diese Datenbank enthält redundante Information. Redundanz heißt, dass etwas mehrfach vorhanden ist; im Beispiel der Datenbank wird eine Person (oder ein Buch) in mehreren Datensätzen mit der selben Information beschrieben.

Redundanz ist nicht grundsätzlich etwas Schlimmes: An deinem Fahrrad zum Beispiel gibt es zwei Bremsen, obwohl du auch mit einer zum Stillstand kommen könntest. Trotzdem will man diese Redundanz, für den Fall, dass mal eine Bremse ausfällt.

Bei Datenbanken möchte man keine Redundanz! Aus den oben beschriebenen Gründen möchte man, dass jede Information nur ein einziges Mal in der Datenbank enthalten ist.

Eine Datenbank, die diese Bedingung erfüllt, nennt man eine relationale Datenbank. Relation ist das lateinische Wort für Beziehung. Der Name kommt daher, wie man die Sache mit der Redundanz löst:

Man schreibt alles nur ein Mal in die Datenbank: Jedes Buch, jede Person und jeden Ausleihvorgang. Dazu hast du eine Tabelle mit allen Personen, die jemals etwas bei dir ausgeliehen haben; in dieser Tabelle steht jede Person aber nur ein Mal. Außerdem hast du eine Tabelle mit allen deinen Büchern. Für die Ausleihvorgänge legst du eine dritte Tabelle an, in der stehen die Termine für Ausleihe und Rückgabe. Außerdem steht darin ein Verweis auf die Büchertabelle, aus der hervorgeht, welches Buch in der Büchertabelle ausgeliehen wurde. Genauso gibt es einen Verweis auf die Personentabelle, der sagt welche Person aus der Personentabelle das Buch ausgeliehen hat. Auf diese Weise hast du also Beziehungen zwischen den Tabellen hergestellt, man kann auch sagen zwischen den drei verschiedenen Objekten Buch, Person und Ausleihe.

Tabelle 19 zeigt dir die neue relationale Datenbankstruktur:

Bücher
Nr.Titel
23Harry Potter und der Stein der Weisen

Personen
Nr.VornameNameTelefonnr.
7LisaLotterlich04321/123456

Ausleihvorgänge
Nr.Buch
Nr.
ausgeliehen
am (Datum)
an Person
Nr.
Rückgabe
erbeten bis
zurückerhalten
am
152321.02.20047 20.04.2004 

Tabelle 19: Tabellen einer relationalen Datenbank

Vielleicht ist dir aufgefallen, dass es in den Tabellen jetzt Felder gibt, die du vorher nicht brauchtest: Nr.

Die habe ich eingeführt, damit wir die Beziehungen zwischen den Tabellen herstellen können. Natürlich könnte man das auch über eins der existierenden Felder, zum Beispiel den Namen der Person. Aber es könnte ja sein, dass es zwei Personen mit dem selben Namen gibt (Geschwister!), die man nur durch den Vornamen unterscheiden kann. Dann wäre der Verweis von der Ausleihetabelle auf die Personentabelle nicht mehr eindeutig und das darf nicht sein - dann würden nämlich Fehler auftreten. Bei relationalen Datenbanken führt man deshalb der Einfachheit halber immer ein Feld ein, in dem man die Datensätze einfach durchnummeriert; das ist immer eindeutig!

Stell dir vor, einer deiner Freunde, der Bücher ausgeliehen hat, zieht um, und seine Telefonnummer ändert sich. Im ersten Beispiel (Tabelle 18) müsstest du die ganze Tabelle nach Einträgen durchsuchen, in denen diese Person vorkommt und die Telefonnummer korrigieren. In der relationalen Datenbank (Tabelle 19) änderst du nur den einen Eintrag in der Personenliste und siehst bei allen Ausleihvorgängen die richtige Telefonnummer.

Tabellen haben wir doch schon gehabt! Excel ist doch eine Tabellenkalkulation! Ist das also das selbe wie ein Datenbankprogramm? Nein!

Man kann mit Excel die relationale Datenbankstruktur wie in Tabelle 19 erstellen und sie auch benutzen. Aber schon das Eintragen der Daten wird sehr umständlich. Ein Datenbankprogramm macht das viel einfacher und kann auch noch viel mehr!

Du kannst damit zum Beispiel Eingabeformulare erzeugen, so dass du dir beim Eingeben der Ausleihvorgänge gar keine Gedanken mehr darüber zu machen brauchst, welche Information du in welche Tabelle schreiben musst. Außerdem passt ein Datenbankprogramm auf, dass ein Feld, über das Beziehungen hergestellt werden, wirklich eindeutig ist und bleibt. Es sorgt dafür, dass in ein Datumsfeld nur gültige Datumsangaben (und nicht etwa der 32.13.12345), in ein Nummernfeld nur Zahlen usw. eingegeben werden können (das kann Excel allerdings auch!) und vieles mehr!

Das Datenbankprogramm, das zusammen mit Word und Excel im sogenannten Officepaket verkauft wird, heißt Access (sprich: äckseß, englisch für Zugang).

Das Beispiel mit der Bücherausleihe war schon ein wenig an den Haaren herbeigezogen, und normalerweise braucht man zuhause kein Datenbankprogramm. Trotzdem ist es ganz hilfreich zu verstehen, wie so etwas funktioniert und wofür man es einsetzen kann. Dir begegnet so etwas öfter als du vielleicht denkst: Eine Stadtbücherei macht genau das selbe wie wir in unserem Beispiel! Hinter dem Internet-Auktionshaus ebay verbirgt sich nichts anderes als eine riesige Datenbank mit allen Auktionen. Jedes Geschäft hat eine Datenbank über Vorräte, Verkäufe, Einnahmen und Ausgaben.



7.3.3 Diagramme Inhaltsverzeichnis
Index
7.5 Präsentation