Suchen...
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Datenbankübergreifende Dokumentation von SQL-Objekten

In diesem Beitrag werden die pragmatischen Aspekte einer datenbankübergreifenden Dokumentation von SQL-Objekten stichpunktartig erläutert und einige ihrer Facetten näher betrachtet.

Eine solide Datenprojekt-Dokumentation mit den vielfältigen Verknüpfungen innerhalb von Datenbanken kann recht umfangreich werden und daher stellt sich die Frage, welche einfachen Hilfsmittel hierfür generell angebracht sind, die jeweiligen Strukturen und deren Beziehungen darzulegen.

Wer sich sinnvollerweise die Mühe macht und seine erstellten SQL-Objekte und vor allem deren Verknüpfungen grundlegend dokumentiert, hat bei späteren Anpassungen ein leichteres Vorgehen.
Die folgenden SQL-Skripte können bei der grundlegenden generischen Dokumentation von Datenbanken helfen. Der hier beschriebene Aufwand hält sich in Grenzen und lohnt sich auf alle Fälle.

Allgemeine Situation

Jeder, der SQL-Skripte schreibt, weiß, dass eine Dokumentation sehr wesentlich ist: Zu jeder Programmierung gehört auch die Dokumentation als verständliche Beschreibung des Datenmodells.
Aber nicht immer wird eine Dokumentation formuliert, entweder weil die notwendige Zeit einfach fehlt oder die disziplinierte Beschreibung des Quellcodes zu lästig ist.
In der Regel basieren Datenmodelle auf vorgelagerten Datenbanken, welche als verschiedene Daten-quellen zur Verfügung stehen. In diesen laufen vielfältige Skripte, welche bestimmte Tabellen bearbeiten und aufbereiten, so dass die Datenbanken voneinander abhängig werden.
Solange noch aktiv an Skripten im Projekt gearbeitet wird, besteht meistens kein Problem zu verstehen, wie der Code und die Zusammenhänge funktionieren.
Anders sieht es aus wenn mehrere Personen an einem Projekt arbeiten, ein größerer zeitlicher Abstand zur letzten Änderung besteht oder eine Weiterentwicklung eines möglicherweise zusätzlichen Projekts ansteht.
Somit sind in den meisten Fällen die erstellten Skripte letztlich nicht mehr im Ursprungszustand, weil sich die Anforderungen im Nachhinein schrittweise geändert haben.
Manchmal ist es sogar der Fall, dass solange herumgebastelt wird, bis alle Wünsche irgendwie erfüllt werden konnten und ohne eine gute Dokumentation blickt dann leider niemand mehr so richtig durch.
Im Allgemeinen sollte es Ansätze geben, die dem Verfasser von SQL-Skripten das Leben leichter, effektiver und effizienter macht.
In diesem Beitrag geht es darum, wie die Erzeugung und Aktualisierung von gängigen Grundlagen automatisiert und vereinfacht werden kann. Es werden einige interessante Möglichkeiten aufgezeigt.
Der hier beschriebene Aufwand hält sich in Grenzen und lohnt sich auf alle Fälle.

Per SQL eine kleine Datenbankdokumentation erstellen

Die folgenden SQL-Skripte können bei der grundlegenden generischen Dokumentation von Datenbanken helfen.

Die Objekte einer Datenbank

Zu Beginn ein kleines SQL-Skript, welches alle Objekte einer Datenbank aktuell ausgibt:

Die Felder der Tabellen und Sichten einer Datenbank

Hier ein kleines SQL-Skript, welches alle Tabellen und Sichten einer Datenbank mit Spalten und Datentypen aktuell ausgibt:

Die Anzahl der Tabellenzeilen schnell und einfach ausgeben

Die Fragestellung „Wie viele Zeilen haben die Tabellen?“ gibt es immer. Die Standardantwort als klassi-scher Ansatz lautet dann:

Allerdings können hierbei zwei Probleme auftreten: Der SQL-Server muss zum Bearbeiten dieser Abfrage einen Table-Scan durchführen. Das kann bei Tabellen mit mehreren Millionen Datensätzen eine Weile dauern. Und man kann mit dieser Abfrage nur jeweils eine Tabelle abfragen.
Was macht man aber, wenn man die Zeilenanzahl aller Tabellen einer Datenbank gleichzeitig bestimmen möchte? Mit Hilfe der folgenden Abfrage kann diese Fragestellung problemlos und aktuell gelöst werden:

Dieses kurze SQL-Skript zeigt alle Benutzertabellen mit der zugehörigen aktuellen Zeilenanzahl.

Der „index_id < 2“ filtert nach „clustered index“ (1) und „hash table“ (0).

Damit auch die Systemtabellen angezeigt werden, muss der Filter “is_ms_shipped = 0” entfernt werden.

Die Abhängigkeiten der Datenbankobjekte

Hier ein kleines SQL-Skript, welches die Objekte und deren Abhängigkeiten einer Datenbank aktuell ausgibt. Hierbei werden auch materialisierte Sichten zusätzlich auf ihre originären Sichten verlinkt:

Ein solches SQL-Skript sollte in jeder Datenbank angelegt sein, welche man in diesem Zusammenhang mitbetrachten möchte.
Diese vorgelagerten SQL-Skripte können dann an dieser Stelle per „union all“ ebenfalls hinzugezogen werden, um eine datenbankübergreifende Dokumentation zu erstellen.

Die Reihenfolge der Objektabhängigkeiten (Ziel zu allen Quellen)

Hier ein kleines SQL-Skript, welches die zusammenhängende Reihenfolge der Objektabhängigkeiten vom Ziel zu allen Quellen basierend der SQL-Sicht von 3.4 aktuell ausgibt:

Die Reihenfolge der Objektabhängigkeiten (Quelle zu allen Zielen)

Hier ein kleines SQL-Skript, welches die zusammenhängende Reihenfolge der Objektabhängigkeiten von der Quelle zu allen Zielen basierend der SQL-Sicht von 3.4 aktuell ausgibt: