Einführung in Datenbanken Was ist eine Datenbank? 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. Schauen Sie sich dieses Diagramm an: ein einfaches Telefonbuch. Diagramm einer Datenbank mit Telefonnummern Diagramm einer Datenbank mit Telefonnummern 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: Tabelle Kontakte Name Tel-Nr. Joan 699 23 43 12 Adam 711 19 77 21 Begriffe und Definitionen: Ein einzelnes Datum als Teil einer Datensammlung kann als Zeile oder auch als Datensatz bezeichnet werden. Die Datensammlung wird normalerweise als Tabelle bezeichnet. Ein sinnvoller Name für die Tabelle beschreibt die darin enthaltenen Daten, in diesem Fall Kontakte. Jede Zeile in der Tabelle enthält Spalten, auch Felder genannt. Die Tabelle Kontakte besteht aus zwei Spalten (Feldern): Name und Tel-Nr. In einfachen Fällen kann eine Datenbank 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. Zusammenfassung: Mit einer Tabelle Kontakte haben Sie bereits eine Datenbank erstellt. Datenbank und Tabellenkalkulation 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? Beim Vergleich von Tabellenkalkulation und Datenbank werden Sie auf folgende Probleme treffen, die später im Einzelnen behandelt werden: Referentielle Datenintegrität Datenredundanz Integrität und Gültigkeit der Daten Einschränkung der Datenansicht Leistung und Fassungsvermögen Praktische Dateneingabe Berichte Programmierung Mehrere Benutzer Sicherheit Unterschied zwischen Datenbank und Tabellenkalkulation Erweitern Sie Ihre Tabelle Kontakte um die Spalte (das Feld) Adresse. Fügen Sie mehrere Telefonnummern (beruflich, privat) und Vornamen für jede Person hinzu. Zur Vereinfachung werden folgende Annahmen getroffen: die Tabelle enthält nur zwei Personen (natürlich kann eine Datenbank Tausende von Personen enthalten es gibt keine Personen mit gleichem Vor- und Nachnamen Tabelle Kontakte Vorname und Nachname Tel Adresse Joan Smith 699 23 43 12 Western Gate 1, Warsaw Adam Willson 711 19 77 21 London, Frogs Drive 5 Joan Smith 110 98 98 00 Western Gate 1 Smith Joan 312 43 42 22 Warsaw, Western Gate 1 ADAM Willson 231 83 02 04 Frogs Drive 5, London 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? Referentielle Datenintegrität 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 eindeutig, ab jetzt ist die Integrität der Daten nicht mehr vorhanden. 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. Datenredundanz Dies hat einen direkten Bezug zum vorherigen Problem. In den Feldern Vorname und Nachname und Adresse 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). Wie können Sie diese Probleme mit einer Datenbank umgehen? Teilen Sie die Informationen in kleinere Einheiten, indem Sie eine zusätzliche Tabelle Personen mit nur zwei Spalten erstellen: Vorname und Nachname und Adresse: Tabelle Personen Vorname und Nachname Adresse Joan Smith Western Gate 1, Warsaw Adam Willson Frogs Drive 5, London Jede Zeile in der Tabelle Personen enthält eine einzelne Person. Die Tabelle Kontakte hat jetzt einen Bezug zur Tabelle Personen. Integrität und Gültigkeit der Daten Beachten Sie, wie Daten in die Felder Vorname und Nachname und Adresse 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. 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 Vor- und Nachname suchen, weil "Smith Joan" sich von "Joan Smith" unterscheidet. Wie lösen Sie dieses Problem mit einer Datenbank? Ändern Sie den Entwurf der Tabelle Personen durch: Aufteilung der Daten im Feld Vorname und Nachname in zwei einzelne Felder: Vorname und Nachname. Aufteilung der Daten im Feld Adresse in drei einzelne Felder: Straße, Hausnummer und Stadt. Vollständigkeit der Daten: Sicherstellen, dass keine Felder leer bleiben, z. B. es muss immer eine Hausnummer eingegeben werden. Eine überarbeitete Tabelle sieht folgendermaßen aus: Tabelle Personen Name Nachname Straße Hausnummer Stadt Joan Smith Western Gate 1 Warsaw Adam Willson Frogs Drive 5 London Bedingungen Wert erforderlich Wert erforderlich Wert erforderlich Wert erforderlich Wert erforderlich Dank der Bedingung Wert erforderlich ist sichergestellt, dass die Daten immer vollständig sind. Bei anderen Tabellen können Sie natürlich einzelne Felder während der Dateneingabe auslassen. Einschränkung der Datenansicht 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. 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. Um den Umfang der Datenansicht einzuschränken, verwenden Datenbankprogramme Abfragen, Formulare und Berichte. Ein brauchbarer Weg zur Beschränkung zeigt die folgende erweiterte Version der vorher beschriebenen Tabelle Personen: Tabelle Personen Name Nachname Straße Hausnummer Stadt Einkommen Joan Smith Western Gate 1 Warsaw 2300 Adam Willson Frogs Drive 5 London 1900 Angenommen die neu eingefügte Spalte Einkommen enthält vertrauliche Daten. Wie können Ihre Mitarbeiter z. B. die Daten der Personen bearbeiten, ohne das Einkommen offen zu legen? Das ist möglich, wenn Sie zur Bearbeitung nur eine Abfrage und nicht die ganze Tabelle freigeben. Diese Abfrage kann alle Spalten außer der Spalte Einkommen enthalten. Bei Datenbanken wird so eine Abfrage häufig auch Ansicht genannt. Leistung und Kapazität 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. 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. 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: 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. Das gleiche gilt für die Spalten (Felder) in der Tabelle. Zusammen mit der Einschränkung der Datenansicht, die im vorherigen Abschnitt erläutert wurde, zeigen diese Eigenschaften die Vorteile von Datenbanken. Dateneingabe 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. 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. Berichte Datenbanken erlauben die Gruppierung, Begrenzung und Zusammenfassung von Daten in der Form eines Berichts. Tabellenkalkulationen werden normalerweise als kleine Tabellen ohne automatische Kontrolle der Seitenumbrüche und der Anordnung von Feldern ausgedruckt. Programmierung 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. 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. Mehrfachbenutzung 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. 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. 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. Sicherheit 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. Eigenschaften wie das Sperren der Bearbeitung oder des Kopierens einer Tabellenkalkulation (oder einzelner Teile) sind genauso leicht zu umgehen. 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. 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. Entwurf von Datenbanken Der Entwurf von Datenbanken erfordert sorgfältige Planung. Beachten Sie, dass die im Abschnitt "Datenredundanz" vorgeschlagene Änderung der Tabelle Kontakte 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 Adresse in einzelne Felder muss sorgfältig ausgeführt werden und ist eine langwierige Arbeit. Um solche Situationen zu vermeiden, planen sie Ihr Datenbankprojekt, 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 Wer braucht Datenbanken? Arbeiten Sie mit einer Tabellenkalkulation, wenn: Sie geringe Ansprüche haben und Ihre Daten nie umfangreich werden (können Sie das heute beurteilen?) Sie die Methodik des Entwurfs von Datenbanken nicht verstehen. Sie können diese Aufgabe jedoch durch jemanden ausführen lassen oder einfachere Programme benutzen. 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. Überlegen Sie Datenbanken zu benutzen, wenn: Ihre Datensammlung wöchentlich größer wird. 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. Sie Berichte und Auswertungen erstellen, die für die Tabellenansicht einer Tabellenkalkulation ungeeignet ist. Verwenden Sie statt dessen Datenbanken mit Formularansichten. Programme zur Erstellung von Datenbanken Bis jetzt haben Sie die allgemeinen Merkmale von Datenbanken kennengelernt, ohne dabei auf Anwendungen zum Entwurf der Datenbanken einzugehen. 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. In den 70er Jahren entwickelten Forscher die Theorie relationaler Datenbanken (mit Begriffen wie Tabelle, Datensatz, Spalte (Feld), Relation 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. 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 (Cluster) erforderlich. Dieses Thema wird in diesem Handbuch aber nicht behandelt. Im Bereich der Datenbanken mit graphischer Benutzeroberfläche für PCs stehen folgende Programme zur Auswahl: DBase - eine bekannte Datenbank für DOS aus den 80er Jahren. Dateien im DBase-Format werden immer noch wegen ihrer einfachen Struktur verwendet. FoxPro - 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. Microsoft Access - 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. FileMaker - ein bekanntes Programm ähnlich wie MS Access, aber einfacher; seit 1995 für Windows- und Macintosh-Betriebssysteme. &kexi; - eine Anwendung für mehrere Betriebssysteme (Unix/Linux, Windows, Mac OS X), entwickelt seit 2003 als "OpenSource". &kexi; ist Teil des Projekts K Desktop Environment, 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.