Arbeit mit Datenbanken – auch im Team – leicht gemacht Datenbankdesign mit dbSchema und Git
Die Arbeit mit Datenbanken ist aufwändig und erfordert spezielle Kenntnisse, vor allem bei umfangreichen Projekten mit zahlreichen Tabellen und tief verschachtelten Relationen. Das Erstellen des Datenbankschemas im Zuge des Designs lässt sich aber mit visuellen Tools vereinfachen.

Viele Anwendungen sind heutzutage durch einen Zugriff auf umfassende Datenbestände gekennzeichnet. Oft kommen die Daten aus unterschiedlichen Quellen und Datenbanksystemen. Sowohl die Developer als auch die Administratoren sind bei der Arbeit an solchen Projekten mit zahlreichen Herausforderungen konfrontiert.
Erforderlich sind dabei nicht nur fundierte Kenntnisse in der Abfragesprache SQL, sondern auch Erfahrungen beim Aufbau, dem Design und der Verwaltung der Datenbankschemata. Visuelle Tools zur Konzeption, Strukturierung und Pflege von Datenbanken können an dieser Stelle Hilfe leisten. Sie entlasten bei Routineaufgaben und sind hilfreich in umfassenden Datenstrukturen den Überblick zu behalten.
Ein interessantes Tool, welches auf diese Aufgaben spezialisiert ist, ist DbSchema. Neben dem Entwerfen eines visuellen Schemas gibt es einen Datenexplorer, einen visuellen Abfrageeditor und einen Datensatzgenerator. Die Bedienung des Tools ist intuitiv und ermöglicht eine Arbeit an der Struktur der Datenbank auch ohne tiefergehende SQL-Kenntnisse.
Der Entwurf einer Datenbank durchläuft üblicherweise mehrere Phasen, wie im Bild zu sehen ist.
- Externe Phase: Hier wird die Informationsstruktur ermittelt. Die Datenbank bildet einen Ausschnitt aus der realen Welt. Dazu ist der Informationsbedarf der Benutzer zu ermitteln und zu strukturieren. Das Ergebnis ist eine informelle Beschreibung des Fachproblems.
- Konzeptionelle Phase: Das Ziel ist die formalisierte Beschreibung des betrachteten datenbasierten Sachverhaltes (semantisches Modell) – bei relationalen Datenbanken meist in Form des Entity Relationship Models (ER-Diagramm).
- Logische Phase: Hier geht es um eine Übertragung vom semantischen in das logische Datenmodell, zum Beispiel in eine relationale Struktur (Tabellenform). Dieser Schritt umfasst auch die Normalisierung der Tabellenstruktur.
- Physische Phase: Hier wird die Datenbank implementiert. Am Ende dieser Phase soll die „leere“ Datenbank existieren. Dazu wird das logische Modell unter Verwendung einer Datendefinitionssprache, zum Beispiel SQL, in ein konkretes Datenbankschema übersetzt. Es müssen Datentypen, Wertebereiche, Relationen und Sichten festgelegt werden.
Tools kann man insbesondere in der logischen und der physischen Phase anwenden. Einige Beispiele aus der Praxis sollen die Vorgehensweise verdeutlichen.
Die Arbeit am Schema steht im Mittelpunkt
Um einen guten Überblick über die Daten einer bereits vorhandenen oder noch zu erstellenden Datenbank zu behalten, wird das Datenbankschema erstellt. Es handelt sich um eine Art Skizze, welche die Struktur der Daten beschreibt. Aus Sicht einer relationalen Datenbank umfasst das Schema alle Datenbankobjekte, die man durch das Relationenschema beschreiben kann, beispielsweise Tabellen, Sichten, Funktionen, Prozeduren, Indizes und Trigger.
In der Praxis wird das Datenbankschema eingesetzt, um die logische und die physische Sicht auf die Datenbank zu unterscheiden. Die physische Sicht ist von der konkreten Datenbank abhängig. DbSchema arbeitet unabhängig von der konkreten Datenbank, es wird eine generische Vorlage für die Datenbank verwendet, so dass ein allgemeines Schema für unterschiedliche Datenbanken angewendet werden kann.
Mittels Reverse-Engineerings lässt sich ein solches logisches Schema auch aus einer bestehenden Datenbank generieren. Mit JDBC-Treibern kann man die Verbindung zu jeder Datenbank herstellen und das Schema gewissermaßen „zurückentwickeln“. Die Erstellung und Verwaltung der Schemata ist im Tool DbSchema sowohl auf logischer als auch auf physischer Ebene über visuelle Diagramme möglich.
Auf der logischen Ebene kann man unterschiedliche Beziehungstypen (identifizierende, nicht identifizierende, eins-zu-eins- oder viele-zu-viele) definieren. Im Design auf physischer Ebene wird die Kardinalität des Fremdschlüssels durch die Eindeutigkeit der referenzierenden Spalte bestimmt. Anhand eines Konverters ist die Konvertierung des logischen in das physische Schema automatisch möglich. Das logische Design wird in einer Modelldatei mit interaktiven Grafiken gespeichert (siehe Bild).
Teamarbeit
Softwareentwicklung ist Teamarbeit. Zu komplex und umfassend sind die Projekte, als dass diese von einem Entwickler bearbeitet werden könnten. Zur gemeinsamen Arbeit und zum Teilen des Quellcodes wird dabei auf Versionsverwaltungen zurückgegriffen. GitHub verwaltet die Source-Dateien in einem zentralen Online-Repository und alle Teammitglieder haben darauf lesenden und schreibenden Zugriff.
Bei der Datenbankentwicklung gibt es einen ähnlichen Wunsch nach einer koordinierten Zusammenarbeit. Dabei ist es jedoch nicht empfehlenswert, direkte Änderungen an der physischen Struktur der Datenbank vorzunehmen. Die Zusammenarbeit wird daher besser auf die logische Ebene verlagert.
Auf dieser Ebene ist es möglich, die Datenstruktur am Modell zu entwerfen und zu überarbeiten, ohne dass dies direkte Auswirkungen auf die angebundene Datenbank hat. Das logische Modell der Datenbank kann eigenständig gespeichert, über GitHub der Teambearbeitung zugänglich gemacht und letztendlich auf diese Weise schrittweise verbessert und abgestimmt werden.
Transformation in das physische Schema
Ein in DbSchema erstelltes logisches Schema lässt sich zu mehreren physischen Datenbanken transformieren. Das Herstellen einer Verbindung mit der Datenbank verändert nicht das Schema. Diese Verbindung wird lediglich in einer XML-Projektdatei gespeichert und beim Start des Tools erneut geladen. DbSchema erstellt angepasste SQL-Skripte, welche ein Erstellen der herstellerspezifischen Datenbanken aus einem übergreifenden gemeinsamen generischen (logischen) Schema ermöglichen, wie die vorangestellte Illustration zeigt.
Datenbearbeitung
SQL-Kenntnisse sind in der Regel eine Voraussetzung für die Arbeit mit den Datenbanken. DbSchema bietet eine Alternative. Der integrierte Visual Query Builder macht es möglich SQL-Abfragen visuell zu erstellen, beispielsweise können Tabellen sehr einfach anhand eines Mausklicks miteinander verknüpft werden. Das Generieren der notwenigen SQL-Statements erfolgt dabei im Hintergrund.
Ebenfalls ist eine Bearbeitung von Datenabfragen ohne SQL-Kenntnisse möglich. Beispielsweise kann man im Relational Data Editor die Tabellen über Fremdschlüssel bzw. virtuelle Fremdschlüssel kaskadieren, dabei zur Veranschaulichung mehrere Tabellen geöffnet lassen und die Datensätze direkt in der Tabellenansicht bearbeiten. Ein einfacher Doppelklick auf die Zelle genügt zur Bearbeitung.
Experimente mit Datenbank-Layouts
Wie bereits erwähnt, handelt es sich in der Praxis oft um umfangreiche, mit der Zeit gewachsene Datenbestände. Aus diesem Grund ist es wichtig, vor der Arbeit mit einer Datenbank, sich einen klaren Überblick über die Daten zu verschaffen.
DbSchema bietet eine Funktion zum Erstellen verschiedener Layouts einer Datenbank. Die erstellten Modelle können sowohl mit und ohne Verbindung zur Datenbank bearbeitet werden. Es handelt sich dabei um interaktive Dokumente. Beispielsweise kann man mit einem Doppelklick die Tabellenstruktur direkt im Diagramm bearbeiten.
Das Erstellen von Fremdschlüsseln ist per Drag and Drop möglich. Zusammengehörige Tabellen können zu Gruppen zusammengefasst und farblich markiert werden. Mit der Kommentarfunktion ist es möglich, Hinweise zu den erstellten Layouts hinzuzufügen. Das hilft bei einer späteren Überarbeitung und bei der Zusammenarbeit im Team. Die generierten Dokumentationsdateien liegen im HTML5-Format vor und können sowohl lokal gespeichert als auch im Internet veröffentlicht werden.
NoSQL-Datenbanken bearbeiten
Die Besonderheit von NoSQL-Datenbanken besteht darin, dass diese keine festgelegte Datenbankstruktur haben. Mit DbSchema kann man die Verbindung zu einer NoSQL-Datenbank wie beispielsweise MongoDB aufbauen. Auch wenn NoSQL-Datenbanken grundsätzlich kein festgelegtes Schema für die Datenstrukturen benötigen, schränkt man die Freiheit der speicherbaren Objekte i.d.R. aus Gründen der Logik und Konsistenz ein.
Ein solches Schema lässt sich aus vorhandenen Datenobjekten automatisch ableiten. Mittels eines automatisch generierten MongoDB Validation Schemas ist es möglich, für Collections implizit Validierungsregeln zu definieren. Auch hier können die Datenbank-Entwickler Kommentare zu Collections und Feldern direkt im Diagramm hinzufügen.
Die Kommentare werden in einer Model-Datei gespeichert, die sich in ein HTML5- oder PDF-Dokument exportieren lässt. Sie erscheinen als interaktive Mouseover-Hinweise. Mit dem Visual Query Builder kann man auch komplexe Abfragen mit Projektionen, Filtern und Aggregatfunktionen auf NoSQL-Datenbanken durchführen.
Datenbankmigration
Das Thema Migration von Datenbanken hat in der Praxis einen wichtigen Stellenwert. Dabei werden Daten aus einer oder mehreren Quelldatenbanken in eine oder mehrere Zieldatenbanken migriert.
Nach dem Abschluss der Migration befindet sich das Dataset vollständig, jedoch möglicherweise umstrukturiert, in den Zieldatenbanken. Clients, die auf die Quelldatenbanken zugegriffen haben, werden dann auf die Zieldatenbanken umgeleitet und die Quelldatenbanken werden heruntergefahren.
Dieser Vorgang ist keine triviale Aufgabe. Auch bei der Migration einer Datenbank ist die Unterstützung durch Software sinnvoll. DbSchema bietet Unterstützung bei der Migration durch die Generierung von Schema-Migrationsskripten. Bestehende Datenbankstrukturen können verwendet, angepasst und zu einer optimierten Struktur migriert werden.
Fazit und Ausblick
Mit universellen Datenbanktools gestaltet sich die Handhabung von Datenbanken, insbesondere auf Ebene der Struktur, deutlich einfacher. Man kann mit den Werkzeugen typische und umfassende Aufgaben an Datenbanken verschiedener Hersteller bearbeiten. Beziehungen in umfangreichen Datenbankstrukturen – mit oft mehr als 100 Tabellen – im Blick zu behalten ist kompliziert und visuelle Hilfen sind willkommen. Die Arbeit an der logischen Datenbankstruktur ist eine wichtige Aufgabe bei der Erstellung und Pflege des Datenbestandes. Tools, welche eine Zusammenarbeit im Team unterstützen, vereinfachen diese komplexe Aufgabe.
(ID:49219440)