SQL Code verbessern — Kommentare

Eine Datenbank ist auch nur Code. Und wie jeder andere Code kann man auch diesen stetig verbessern um die Wartung zu verbessern, Wiederverwendbarkeit zu erhöhen, Performance zu optimieren, etc. Im heutigen Blogeintrag möchte ich ein paar praktische Hinweise geben, wie man seine Datenbank-Dokumentierung vor allem durch Kommentare verbessern kann.

Dass Kommentare sehr wichtig ist, ist weitgehend bekannt und wird an dieser Stelle nicht weiter ausgeführt. Es geht viel mehr darum was man kommentiert und wieviel Information wirklich hilft – in Bezug auf Datenbank-zentrierte Anwendungen. Da ich in meinem momentanen Projekt einen Großteil in PL/SQL programmiere verwende ich Oracle Datenbanken als Beispiele für diesen Beitrag. Sehr vieles davon lässt sich aber problemlos auf andere Datenbanksysteme übertragen.

Sprechende Namen verwenden

Das wichtigste überhaupt: Sprechende Namen. Meiner Meinung nach sparen gut gewählte Namen für Tabellen, Views und Spalten eine Menge Beschreibungsaufwand.

Stored Procedures und PL/SQL-Packages kommentieren

Die PL/SQL-Packages, welche wir für Applikationslogik auf der Datenbank erstellen, sind wie Klassen jeder anderen Objekt-Orientierten Sprache zu betrachten. Entsprechend werden sie ausführlich kommentiert. Jedes Package hat eine allgemeine Beschreibung und jede Funktion wird dann noch zusätzlich genauer beschrieben.

Wichtig ist dabei, dass man alle Kommentare zu Package oder Stored Procedure innerhalb des CREATE-Statements schreibt, denn nur dann wird der Kommentar auch auf der Datenbank mit abgelegt.

/** 
 * Dieser Kommentar verschwindet beim 
 * Kompilieren auf der Datenbank.
 */
CREATE OR REPLACE PACKAGE test_package AS

   /**
    * Hier kann eine Beschreibung des Packages erfolgen.
    * Sie wird beim Kompilieren gespeichert.
    */

   [...]

END test_package;

Tabellen und Views kommentieren

Da Tabellen in einer Datenbank DAS zentrale Element sind sollten sie auf jeden Fall kommentiert werden. Das Gleiche gilt häufig für Views, die ja auch (virtuelle) Tabellen sind.

Der Befehl zum Kommentieren von Views ist unter Oracle übrigens der selbe wie für Tabellen:

comment on table V_MY_VIEW is 'This is my test view that serves for demonstration purpose only.';

Spalten kommentieren(?)

Ich wusste es bis vor Kurzem nicht, aber es gibt auch die Möglichkeit jede Spalte einer Tabelle oder eines Views zu kommentieren.

comment on column MY_TABLE.MY_COLUMN is 'This is my demonstration column.';

Ich habe es bisher noch nicht viel verwendet aber ich denke mir, dass sich gerade komplexere Zusammenhänge in Tabellen dadurch noch besser beschreiben lassen. Hat man zum Beispiel eine Spalte die eine Flag ist und nur 0 oder 1 enthalten darf, dann kann man diese Information in den Kommentar zu der Spalte einfügen.

Teilweise ist dies bei gut gewählten sprechenden Namen meiner Meinung nach nicht nötig. Auch kann man über die Foreign-Key-Constraints herausfinden welche Verknüpfungen auf einer Spalte bestehen. Wie geht ihr mit Spalten um? Kommentiert ihr sie oder verlasst ihr euch darauf dass der Spaltenname ausreicht?

Datenbankschema ausdrucken

In regelmäßigen Abständen wenn sich die Datenbank verändert hat, erstelle ich ein Bild von dem Datenbankschema. Viele Datenbankprogramme unterstützen die Erstellung sehr gut. Nach dem ein erster Entwurf erstellt ist ordne ich die Tabellen logisch zueinander. Dabei versuche ich mich von der Aufteilung des Bilds an vorherigen Versionen zu orientieren um die Entwicklungsschritte der Datenbank besser vergleichen zu können.

Dieses Bild kann man ausdrucken und als ersten Einstieg verwenden wenn man sich neu in die Datenbank einarbeitet. Dort bekommt man schnell einen Überblick welche Tabellen miteinander verlinkt sind.

social