Beim Erstellen einer Datenbank genügt es nicht, nur die Tabellen und Felder festzulegen. Die Daten müssen in einer geordneten, sicheren und langfristig verwaltbaren Struktur gespeichert werden. Die in der Entwurfsphase getroffenen Entscheidungen bilden mit dem Wachstum des Systems entweder ein solides Fundament oder werden zu Problemen, die sich rückwirkend nur schwer beheben lassen. Die Datenbank ist gewissermaßen der Boden der darauf aufgebauten Software; ist der Boden nicht solide, wird selbst die beste Software mit der Zeit langsam, erzeugt Fehler und wird schwer wartbar. Deshalb ist das Datenbankdesign ein Thema, das ganz zu Beginn der Softwareentwicklung sorgfältig behandelt werden muss.
Die Wiederholung von Daten verhindern: Normalisierung
Der Grundlage eines guten Designs liegt zugrunde, dass dieselbe Information nicht an mehreren Stellen unnötig wiederholt wird. Das Kopieren derselben Daten in verschiedene Tabellen verschwendet sowohl Speicherplatz als auch schafft es bei einer Aktualisierung das Risiko von Inkonsistenzen: Eine Kopie kann sich ändern, während die andere alt bleibt. In diesem Fall wird unklar, welcher Datensatz der richtige ist, und das Vertrauen in die Daten leidet.
Normalisierung ist der Ansatz, die Daten in logische Teile zu zerlegen und jede Information an einem einzigen Ort vorzuhalten. Zum Beispiel werden Kundendaten in einer separaten Tabelle vorgehalten, und die Bestelltabelle wird mit diesem Kunden nur über eine Referenz verknüpft. So genügt es bei einer Änderung der Kundenadresse, einen einzigen Datensatz zu aktualisieren, und diese Änderung wirkt sich von selbst auf alle zugehörigen Bestellungen aus. Normalisierung hält die Daten geordnet; sie ist jedoch keine Regel, die unter allen Umständen bis zum Äußersten getrieben werden muss. In manchen Fällen kann für sehr häufig gemeinsam gelesene Daten eine maßvolle Zusammenführung die Leseleistung verbessern. Wichtig ist, dass diese Entscheidung begründet und bewusst getroffen wird.
Die Beziehungen zwischen Tabellen
Die richtige Verknüpfung der Tabellen untereinander ist die Struktur, die die Integrität der Datenbank bewahrt. Beziehungen verwandeln scheinbar verstreute Tabellen in ein sinnvolles Ganzes und sorgen dafür, dass die Daten konsistent bleiben. Diese Verbindungen werden mit zwei grundlegenden Schlüsselkonzepten hergestellt.
Primary key (Primärschlüssel): Das Feld, das jeden Datensatz in einer Tabelle eindeutig identifiziert. Es verhindert, dass derselbe Datensatz zweimal entsteht und dass Zeilen sich vermischen. Von jeder Tabelle wird erwartet, dass sie einen primary key besitzt, der die Datensätze zuverlässig unterscheidet.
Foreign key (Fremdschlüssel): Ermöglicht die Verknüpfung eines Datensatzes in einer Tabelle mit einem Datensatz in einer anderen Tabelle. Zum Beispiel verweist ein Bestelldatensatz über einen foreign key auf den zugehörigen Kundendatensatz. Diese Beziehung verhindert inkonsistente Situationen wie das Anlegen einer Bestellung für einen nicht existierenden Kunden oder das versehentliche Löschen eines Kunden, der noch eine Bestellung hat. So kann die Datenbank fehlerhafte Vorgänge aufgrund ihrer eigenen Struktur ablehnen.
Die Auswahl geeigneter Datentypen
Für jedes Feld den richtigen Datentyp zu wählen, ist sowohl hinsichtlich der Speichereffizienz als auch der Datenrichtigkeit wichtig. Eine Datumsangabe sollte im Datumstyp statt als Text, ein numerischer Wert im Zahlentyp statt als Text gespeichert werden. Eine falsche Typwahl führt später bei Sortier-, Rechen- und Vergleichsvorgängen zu unerwarteten Ergebnissen; wenn zum Beispiel Zahlen als Text gespeichert werden, kann der Wert „1004″ vor dem Wert „404″ sortiert werden, weil ein Textvergleich nicht die zahlenmäßige Größe, sondern die Zeichenreihenfolge berücksichtigt.
Auch das Festlegen der Feldlängen und -grenzen nach Bedarf verhindert unnötigen Ressourcenverbrauch und erschwert die Eingabe fehlerhafter Daten von vornherein. Beim Entwurf zu klären, ob ein Feld leer gelassen werden darf, welchen Wertebereich und welches Format es annehmen kann, hält die Datenqualität langfristig hoch. Von Anfang an richtig gewählte Typen sparen zudem später schwierige und riskante Umwandlungen.
Index und Abfrageleistung
Mit steigender Datenmenge wird das schnelle Auffinden des gesuchten Datensatzes kritisch. Ein Index ist eine Struktur, die für häufig abgefragte Felder erstellt wird und den Suchvorgang beschleunigt; er funktioniert ähnlich wie das Register am Ende eines Buches. Ohne Index kann es nötig sein, zum Auffinden des gesuchten Datensatzes die gesamte Tabelle zu durchsuchen; dies wird mit wachsender Tabelle immer langsamer. Ein richtiges Indexdesign kann die Antwortzeit einer über große Tabellen laufenden query (Abfrage) deutlich verkürzen.
Allerdings muss man einen Index ausgewogen einsetzen. Jeder Index beschleunigt die Lesevorgänge, bringt aber für die Schreibvorgänge (Einfügen, Aktualisieren, Löschen) zusätzliche Kosten mit sich; denn wenn sich ein Datensatz ändert, müssen auch die zugehörigen Indizes aktualisiert werden. Zudem verbraucht jeder Index zusätzlichen Speicherplatz. Deshalb sollten Indizes nicht willkürlich, sondern nach den wirklich häufig genutzten Abfragen geplant werden. Ziel ist es, die am meisten benötigten Abfragen zu beschleunigen, ohne das System mit einer unnötigen Indexlast zu belasten.
Sicherheit, Berechtigung und Skalierung
Datenbankdesign ist nicht nur eine Frage der Struktur, sondern zugleich eine Frage des Zugriffs und der Kontinuität. Wenn die folgenden Themen von Anfang an geplant werden, wird das System sicherer und nachhaltiger:
- Nutzerberechtigungen: Dass jeder Nutzer nur auf die von ihm benötigten Daten zugreifen kann, ist sowohl aus Gründen der Sicherheit als auch der Datenintegrität erforderlich. Die Regelung der Berechtigungen über Rollen erleichtert die Verwaltung.
- Regelmäßige Sicherung (backup): Damit die Daten in unerwarteten Situationen sicher wiederhergestellt werden können, muss ein Sicherungsplan von Anfang an als Bestandteil des Entwurfs bedacht werden.
- Skalierungsvorausschau: Es muss bedacht werden, dass eine heute klein erscheinende Tabelle mit der Zeit eine große Zahl von Datensätzen erreichen kann; die Struktur muss so aufgebaut sein, dass sie auch bei wachsenden Daten verwaltbar und leistungsfähig bleibt.
Eine falsch entworfene Datenbank verursacht mit steigender Datenmenge Leistungs- und Verwaltungsprobleme, und diese Probleme nachträglich zu beheben ist meist mühsam und kostspielig; denn wenn sich die Struktur ändert, muss auch die daran gebundene Software aktualisiert werden. Eine richtig entworfene Datenbank hingegen bietet einen Boden, auf dem die Daten geordnet, die Beziehungen konsistent, die Abfragen schnell und der Zugriff sicher sind. Kurz gesagt bildet ein solides Datenbankdesign die Grundlage dafür, dass die darauf aufgebaute Software schneller, sicherer und nachhaltiger läuft.
Verwandte Leistungen: Datenbank & Datenverwaltung, Software & PC-Anwendungen, Webdesign & Software
Leave a Reply