# Datenbankdesign

Datenbankdesign ist das Planen und Erstellen einer Datenbank. Da es eine große Menge unterschiedlicher Datenbankentypen gibt, fällt eine solche Planung auch typischerweise unterschiedlich aus.

## Design von relationalen Datenbanken

Die Struktur einer relationalen Datenbank wird meistens durch ein ER-Diagramm modelliert. Wenn performancekritische Zugriffe vorauszusehen sind, dann kann noch ein Schritt der Denormalisierung folgen. Viele Datenmodellierungs-Tools bieten eine Unterstützung an, dass aus dem Datenmodell die SQL-DDL-Statements zum Aufbau der Datenbank generiert werden können. Durch das Ausführen der SQL-DDL-Statements werden die Datenbank-Objekte erstellt:
* Schema
* Tablespace
* Tabelle
* Integritätsbedingung
* Index
* View
Nachdem die Datenbank-Objekte erstellt sind, können die Datensätze in die Datenbank eingefügt werden.

## Speicherplatz planen

Bei Datenbanken mit einem großen Datenvolumen ist es wichtig, den benötigten Speicherplatz genau zu planen.

### Umfang

Der Speicherplatzbedarf der gesamten Datenbank wird wesentlich durch das Datenvolumen der einzelnen Tabellen bestimmt. Wenn man die durchschnittliche Satzlänge einer Tabelle abschätzt und die voraussichtliche Anzahl der Datensätze, dann müssen diese beiden Werte miteinander multipliziert werden, um den Speicherplatzbedarf der gesamten Tabelle abzuschätzen. Der Speicherplatzbedarf der einzelnen Tabellen wird addiert und man erhält den Platzbedarf für alle in der Datenbank zu speichernden Daten. Oft werden solche Zahlen für den Zeitpunkt der Inbetriebnahme mit einer Planung der jährlichen Zuwachsrate kalkuliert.
Zu dem Platz der Nettodaten kommen in der Regel noch 10 % bis 50 % weiterer Speicherplatzbedarf für die Strukturen zur Verwaltung der Datenbank (z. B. Indices, Interne Tabellen zur Verwaltung von Zugriffsrechten und zur Speicherplatzverwaltung).

### Qualität des Speichermediums

Die Auswahl der geeigneten Hardware spielt bei großen Datenbanken eine bedeutende Rolle. Es werden Festplatten mit unterschiedlichen Größen und Zugriffsgeschwindigkeiten angeboten. Da alle Festplatten ein zwar geringes, aber dennoch vorhandenes Risiko eines Datenverlustes tragen, sind unterschiedliche Konzepte zur Reduzierung dieser Risiken entwickelt worden. (Siehe Redundant Array of Independent Disks (RAID) und Storage Area Network (SAN))

## Datensicherung

Bei jeder Datenbank sollte die regelmäßige Herstellung von Datensicherungen geplant werden. Wesentliche Parameter sind dabei der Platzbedarf der Datensicherungen und die Zeit, die bei einem Totalausfall des Speichermediums gebraucht wird, um den Betrieb wieder aufzunehmen. Auch die Zeit, die zur Wiederherstellung einzelner Tabellen erforderlich ist, ist eine wichtige Größe. Ferner muss festgelegt werden, wie lange Datensicherungen aufgehoben werden sollen.

## Ausfallsicherheit

Wenn ein Ausfall der Datenbank für einige Tage nicht kritisch ist, dann kann bei einem Ausfall einer Systemkomponente diese ersetzt werden und der Betrieb kann nach einem Einspielen einer Datensicherung fortgesetzt werden.
Wenn jedoch unternehmenskritische Daten in der Datenbank gespeichert werden, dann kann es sein, dass ein Ausfall von wenigen Stunden bereits einen immensen Schaden verursacht, weil wichtige Geschäfte einer Firma nicht mehr ausgeführt werden können. Hochverfügbarkeit eines Systems bezeichnet die Fähigkeit, bei Ausfall einer seiner Komponenten einen uneingeschränkten Betrieb zu gewährleisten. Sie wird zum einen durch eine redundante Ausstattung aller Systemkomponenten erreicht. Zum anderen ist eine Bereitstellung von gut geschultem Personal erforderlich, die bei einem Fehler sofort die erforderlichen Maßnahmen ergreifen können.

## Kosten

Die Kosten für die Speicherung der Daten ist von mehreren Komponenten abhängig.
Oft sind die Kosten für die Lizenzen und den Support für das Datenbankmanagementsystem (DBMS) wesentlich höher als die Kosten für die Hardware. Auch wenn man sich für freie DBMS-Software entscheidet, ist bei unternehmenskritischen Anwendungen trotzdem ein Support-Vertrag ratsam, um bei auftretenden Problemen schnell Hilfe zu bekommen.
Mit den Kosten für das Betriebssystem verhält es sich genauso wie mit den Kosten für die Datenbank-Lizenz. Bei unternehmenskritischen Anwendungen wird ein Support-Vertrag empfehlenswert sein, um bei Problemen mit dem Betriebssystem schnell Unterstützung zu erhalten. Bei großen und schnellen Datenbanken kommen oft noch weitere Kosten für Software zur ausfallsicheren Verwaltung der Hardwarekomponenten (z. B. Veritas Cluster Server) und zum Verwalten der Datensicherungen dazu.
Die Kosten für die Computer-Hardware sind oft deutlich niedriger als die Lizenz- und Support-Kosten. Allerdings sind bei vielen Datenbank-Herstellern die Lizenzen von der verwendeten Hardware und z. B. der Anzahl der Prozessoren abhängig. Um das System möglichst ausfallsicher zu gestalten, werden oft alle Hardware-Komponenten redundant aufgebaut.
Bei großen Anwendungen wird man auch für den Betrieb der Datenbank fachkundiges Personal brauchen, das z. B. eine Bereitschaft rund um die Uhr leistet und bei Problemen schnell die erforderlichen Maßnahmen ergreifen kann.

## Software

* DBDesigner 4
* MySQL Workbench
* DBDesigner Fork