Der Datenbankmanager ermöglicht den einheitlichen Zugriff auf die Datenbasis der VDM Klassenbibliothek und schafft damit eine allgemeine Schnittstelle, die den Zugriff und die Verwaltung der Daten unabhängig vom Datenbankmodell gestattet. Der Datenbankmanager besteht beantwortet Anfragen über eine Textschnittstelle, die Kommandos erwartet.
Der gelinkte VDM Datenbankmanagers trägt den Namen dbm und setzt sich aus folgenden Komponenten zusammen
Abbildung: VDM Datenbankmanager
C- als auch hierauf aufbauender C++ -Quellcode der VDM-Klassenbibliothek, erzeugt anhand der in dbm.vdm hinterlegten DSL-Spezifikation, welche die Struktur der Datenbank, die verwendeten Implementationen als auch die Definition der auf die Datenbank anwendbaren Funktionen enthält.
C++ Quellcode, bestehend aus den Dateien
Das Resultat der Bindung aller Komponenten ist eine TCL-Shell mit dem Namen dbm und erweitertem Befehlsatz, die als Anwendungsschnittstelle den Zugriff auf die VDM-Datenbank ermöglicht, ansonsten jedoch mit der üblichen TCL-Shell identisch ist. Ebenso wie für die Standardshell tcl oder auch tclsh sind für den Datenbankmanager zwei Ausführungsmodi zulässig. Dies ist zum einen der interaktive Modus, der im Dialog mit dem Benutzer durchgeführt wird, und zum anderen die Interaktion als Filter. Die Shell ermittelt selbstätig anhand der Standardein- und ausgabeströme ob diese mit einem Terminal oder Pipes verbunden sind und verwendet den entsprechenden Modus.
Als externe Repräsentationen sind zwei Modelle definiert, für die der Manager erzeugt werden kann. Dies ist zum einen das FLAT-Modell, in der die Bibliothek in einer einzigen Datenbankdatei verwaltet wird, das weitere Modell ist die Abbildung der Datenbank auf einen Verzeichnisstruktur und wird als DIRECTORY-Modell bezeichnet. Die DSL-Spezifikation, ist nachfolgend für beide Modelle angegeben.
Domänen
![]() | = ![]() | ![]() ![]() |
![]() | = ![]() | ![]() ![]() |
![]() | = ![]() | ![]() ![]() |
![]() | = ![]() | ![]() ![]() |
![]() | = ![]() | |
![]() | = ![]() | |
![]() | = ![]() | |
![]() | = ![]() | |
![]() | = ![]() |
Implementationen
A. Modell FLAT
![]() | = ![]() |
![]() | = ![]() | |
![]() | = ![]() | |
![]() | = ![]() |
![]() | = ![]() |
B. Modell DIRECTORY
![]() | = ![]() | |
![]() | = ![]() | |
![]() | = ![]() | |
![]() | = ![]() |
![]() | = ![]() |
Im FLAT-Modell ist für den Datenbankmanager ein ,,Laden`` der Datenbank notwendig. Das bedeutet, die ADTs der Datenbankstruktur werden anhand der Datenbankdatei im Arbeitsspeicher wiederhergestellt. Für ein weiteres Modell für den Datenbankmanager würde sich, die Implementation ,,extern`` für die Struktur anbieten, die es erlaubt, die Datenbank auch direkt als Datei zu verwenden.