Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2010.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Dokumentieren Sie das Datenmodell Ihrer Tabelle auf Basis des Attributs Beschreibung von Tabellen und Feldern.

Techniken

Tabellen, DAO, Word

Voraussetzungen

Access 2000 und höher

Beispieldateien

Dokumentation.mdb

Shortlink

www.access-im-unternehmen.de/738

Tabellen und Felder dokumentieren

André Minhorst, Duisburg

Die Dokumentation von Datenbankanwendungen ist bei den meisten Entwicklern nicht besonders beliebt. Möglicherweise liegt der Grund schlicht darin, dass die Programmierarbeiten meist schon erledigt sind, wenn einem einfällt, dass der Kunde noch um eine ausführliche Dokumentation bat. Der vorliegende Beitrag soll zumindest die Dokumentation von Tabellen, Feldern und Co. so weit vereinfachen, dass Sie keinen Grund mehr haben, die Dokumentation an das äußerste Ende des Projekts zu verschieben.

Zur Dokumentation eines Datenmodells gehören eigentlich zwei Stufen:

  • Die Erfassung der Dokumentation, die mindestens die Beschreibung der Tabellen und der enthaltenen Felder enthalten sollte.
  • Die Ausgabe der Dokumentation in einem geeigneten Medium, beispielsweise als Access-Bericht, Word-Dokument oder HTML-Seite.

Beides kann in einem einzigen Schritt durchgeführt werden: Sie erstellen einfach das Zieldokument, beispielsweise mit Word, legen einige Absatzformatvorlagen fest um die Dokumentation zu strukturieren und tragen dann die Beschreibung der Tabellen und Felder ein.

Dies hat den Nachteil, dass Änderungen in der zugrunde liegenden Datenbank meist nicht gleich in die Dokumentation übertragen werden - und dies später zu erledigen, dürfte zu einer unangenehmen Arbeit werden. Sie müssen dann nämlich erstmal herausfinden, an welchen Stellen die Dokumentation nun nicht mehr dem aktuellen Stand des Datenmodells entspricht.

Besser ist es, die zwei Stufen wie oben beschrieben zu realisieren. Das heißt, dass Sie die Beschreibung der Tabellen und Felder gleich in den entsprechenden, im Entwurf zur Verfügung stehenden Eigenschaften unterbringen.

Tabellen und Felder stellen jeweils eine eigene Eigenschaft namens Beschreibung zur Verfügung, die Sie an folgenden Stellen anpassen können:

  • Im Tabellenentwurf stellen Sie die Beschreibung der Tabelle im gleichnamigen Eintrag des Eigenschaftsfensters ein.
  • Ebenfalls dort legen Sie die Beschreibung der Felder an, und zwar gleich in der jeweiligen Zeile eines Feldes in der Spalte Beschreibung.
  • Zusätzlich können Sie die Beschreibung einer Tabelle im Dialog Tabelleneigenschaften eintragen, den Sie über den Kontextmenüeintrag Tabelleneigenschaften der Tabellen im Datenbankfenster (Access 2003 und älter) beziehungsweise im Navigationsbereich (Access 2007 und jünger) öffnen.

Während nur letztere Möglichkeit auf den ersten Blick die mehrzeilige Eingabe anbietet, können Sie vom Tabellenentwurf aus durch Markieren der entsprechenden Eigenschaft und anschließendes Drücken von Umschalt + F2 das Zoom-Fenster öffnen. Hier finden Sie ein wenig mehr Platz zum Eingeben auch mehrzeiliger Beschreibungstexte.

Was gehört in eine Dokumentation?

Der Beschreibungstext ist am ehesten für Außenstehende interessant. Der Entwickler einer Datenbankanwendung könnte sich die Dokumentation neben den Rechner legen, um beispielsweise schnell einmal einen Tabellen- oder Feldnamen nachzuschlagen, weil er gerade mit der Nase im VBA-Editor steckt, ein SQL-Statement zusammenbaut und nicht dauernd zwischen VBA-Editor und dem Tabellenentwurf wechseln möchte. Davon abgesehen sollten wir die Dokumentation nicht nur mit Tabellen- und Feldnamen sowie deren Beschreibungstexten, sondern auch mit weiteren Informationen füttern. Für Tabellen sind folgende Einstellungen aus dem Eigenschaftsfenster interessant (s. Abb. 1):

pic001.png

Abb. 1: Eigenschaftsfenster einer Tabelle in der Entwurfsansicht

  • Gültigkeitsregel
  • Gültigkeitsmeldung

Die Tabellenfelder geben neben dem Feldnamen und der Beschreibung noch wesentlich mehr wichtige Eigenschaften her (s. Abb. 2):

pic002.png

Abb. 2: Übersicht der Felder und ihrer Eigenschaften in der Tabellenentwurfsansicht

  • Felddatentyp
  • Feldgröße
  • Eingabeformat
  • Beschriftung
  • Standardwert
  • Gültigkeitsregel
  • Gültigkeitsmeldung
  • Eingabe erforderlich
  • Leere Zeichenfolge
  • Indiziert
  • Unicode-Kompression

Für Felder, die als Nachschlagefeld definiert sind, gibt es sogar noch eine ganze Reihe weiterer Eigenschaften (s. Abb. 3). Die wichtigsten finden Sie in dieser Auflistung:

pic003.png

Abb. 3: Als Nachschlagefeld definierte Felder liefern noch mehr dokumentationswerte Eigenschaften.

  • Steuerelement anzeigen
  • Herkunftstyp
  • Datensatzherkunft
  • Gebundene Spalte
  • Spaltenanzahl
  • Spaltenbreiten

Indizes dokumentieren

Es gibt in Access verschiedene Index-Arten: Einfache Indizes, die lediglich die Suche nach den Werten des indizierten Feldes beschleunigen, eindeutige Indizes, die dafür sorgen, dass ein Wert nur einmal je Tabelle vorkommt, und Primärschlüssel, die als eindeutige Merkmale einer Tabelle dienen. Jede Indexart kann sich überdies auf ein oder mehrere Felder beziehen.

Beziehungen dokumentieren

Neben den Tabellen und ihren Feldern sollen auch die Beziehungen zwischen den Tabellen dokumentiert werden. Diese finden Sie in der Benutzeroberfläche von Access unter Umständen nur mit Mühe: Beziehungen werden zwar im Beziehungen-Fenster festgelegt, aber Sie können dort Tabellen ein- und ausblenden.

Und mit den Tabellen verschwinden dann auch die Beziehungspfeile, welche die Beziehung charakterisieren.

Dennoch sollen die Beziehungen in einer Dokumentation entsprechend gewürdigt werden.

Konzept für den Aufbau der Dokumentation

Bevor wir uns an die technische Umsetzung begeben, sollten wir uns ein paar Gedanken über den Aufbau der Dokumentation machen. Die oberste Einheit in der Struktur der Dokumentation ist die Datenbankanwendung. Gleich darunter folgen die Tabellen. Jede Tabelle enthält Felder, also werden diese unterhalb der Tabellen angeordnet.

Indizes beziehen sich auf ein oder mehrere Felder.Daher sollen Indizes auf der gleichen Ebene wie die Felder dargestellt werden, allerdings im Anschluss an diese.

Beziehungen betreffen zwar in der Regel jeweils immer nur ein Feld einer Tabelle, aber da Felder auch in mehrere Beziehungen verstrickt sein können, landen auch diese auf der gleichen Ebene wie die Tabellenfelder.

Die Eigenschaften von Tabellen, Feldern, Indizes und Beziehungen landen jeweils eine Ebene unterhalb des Objekts, auf das sie sich beziehen.

Der Datenbankdokumentierer

Access enthält von Haus aus bereits einen Datenbankdokumentierer. Dieser bietet zwar eine halbwegs durchdachte Benutzeroberfläche (s. Abb. 4), aber die Dokumentation landet in einem Bericht, der sich nur bedingt zur Weiterverarbeitung eignet.

pic004.png

Abb. 4: Access bietet ebenfalls einen Datenbank-Dokumentierer. Dieser liefert sein Ergebnis jedoch nur als Bericht.

Mit den nachfolgend vorgestellten Techniken wollen wir uns nicht auf Berichte beschränken, sondern verschiedene Ausgabemöglichkeiten erlauben.

Technische Umsetzung: Daten sammeln

Wir gehen in folgenden Schritten vor: Als Erstes schauen wir, wie wir an die benötigten Informationen gelangen (Tabellen, Felder, Indizes und Beziehungen). Anschließend entwickeln wir die Techniken zum Ausgeben dieser Daten in verschiedenen Formaten.

Entsprechend unserer Struktur geben wir dabei erst den Datenbanknamen aus und dann die Tabellen mit ihren Eigenschaften. Für jede Tabelle folgen in einer weiteren Ebene die Felder, Indizes und Beziehungen, ebenfalls mit den jeweiligen Eigenschaften.

Die folgenden Abschnitte beschreiben dabei die grundlegenden Techniken zum Ermitteln der Informationen für die Tabellendokumentation.

Tabellen ermitteln

Die Tabellen und ihre Eigenschaften erhalten wir über die TableDefs-Auflistung des Database-Objekts. Die folgenden Zeilen zeigen, wie Sie alle Tabellen einer Datenbank durchlaufen und einige ihrer Eigenschaften im Direktfenster ausgeben können:

Public Sub TabellenErmitteln()

    Dim db As DAO.Database

    Dim tdf As DAO.TableDef

    Set db = CurrentDb

    For Each tdf In db.TableDefs

        Debug.Print tdf.Name, tdf.DateCreated

    Next tdf

    Set db = Nothing

End Sub

Um Systemtabellen auszuschließen, die mit MSys... oder USys... beginnen, können Sie innerhalb der For Each-Schleife eine entsprechende Bedingung einarbeiten:

If Not (tdf.Name Like "MSys*" Or tdf.Name Like "USys*") Then

    Debug.Print tdf.Name, tdf.DateCreated

End If

Das TableDef-Objekt bietet noch weitere Eigenschaften, die wir für die Dokumentation verwenden können.

Felder und ihre Eigenschaften ermitteln

Wenn Sie einmal auf ein TableDef-Objekt zugreifen, ist der Weg zur Fields-Auflistung nicht mehr weit - und die ermöglicht den Zugriff auf alle Field-Objekte einer Tabelle, sprich: auf die Felder.

Die folgende Beispielprozedur können Sie von der obigen Prozedur zum Ausgeben aller Tabellen aus aufrufen - zum Beispiel mit der folgenden Anweisung:

Call FelderErmitteln(tdf)

Die Prozedur durchläuft alle Field-Elemente der Fields-Auflistung des als Parameter übergebenen TableDef-Objekts und gibt einige der Eigenschaften aus:

Public Sub FelderErmitteln(tdf As DAO.TableDef)

    Dim fld As DAO.Field

    For Each fld In tdf.Fields

        Debug.Print fld.Name, fld.Type, fld.Size

    Next fld

End Sub

Indizes ermitteln

Auch auf die Indizes einer Tabelle können Sie per DAO zugreifen. Dazu liefert das TableDef-Objekt eine Auflistung namens Indexes. Jeder Index kann ein oder mehrere Felder betreffen. Dementsprechend enthält das Index-Objekt wiederum eine Fields-Auflistung, über die Sie alle Felder des Indexes abfragen können. Die folgende Beispielprozedur rufen Sie wiederum für jedes TableDef-Objekt einmal auf:

Call IndizesErmitteln(tdf)

Die Prozedur durchläuft erst alle Elemente der Indexes-Auflistung und gibt einige Eigenschaften des aktuellen Indexes aus. Danach durchläuft sie alle Felder des Indexes und gibt auch diese aus:

Public Sub IndizesErmitteln(tdf As DAO.TableDef)

    Dim idx As DAO.Index

    Dim fld As DAO.Field

    For Each idx In tdf.Indexes

        Debug.Print idx.Name, idx.Primary, idx.Foreign, idx.IgnoreNulls

        For Each fld In idx.Fields

            Debug.Print " " & fld.Name

        Next fld

    Next idx

End Sub

Beziehungen ermitteln

Die Beziehungen wiederum befinden sich im Objektmodell nicht unterhalb der TableDef-Objekte, sondern auf der gleichen Ebene. Das scheint auch logisch, denn schließlich betrifft jede Beziehung zwei Tabellen und verbindet diese.

Die folgende Beispielprozedur liefert alle Beziehungen der aktuellen Datenbank. ForeignTable liefert dabei die Tabelle, die das Primärschlüsselfeld der Beziehung enthält, Table die Tabelle mit dem Fremdschlüsselfeld.

Die Fields-Auflistung liefert in der Regel nur ein Field-Objekt (außer, Sie erstellen eine Beziehung mit zwei Feldern jeder Tabelle - dies sollten Sie jedoch vermeiden).

Dieses Field-Objekt liefert über die Eigenschaft Name das Feld der Tabelle mit dem Primärschlüssel. Den Namen des Fremdschlüsselfeldes finden Sie mit der Eigenschaft ForeignName des Field-Objekts heraus.

Public Sub BeziehungenErmitteln()

    Dim db As DAO.Database

    Dim rel As DAO.Relation

    Dim fld As DAO.Field

    Set db = CurrentDb

    For Each rel In db.Relations

        Debug.Print rel.Name, rel.Table, rel.ForeignTable

        For Each fld In rel.Fields

            Debug.Print " " & fld.Name, fld.ForeignName

        Next fld

    Next rel

    Set db = Nothing

End Sub

Damit haben Sie alle Informationen zusammen, die eine Dokumentation der Tabellen erfordert - wir haben zwar nur jeweils ein paar Eigenschaften der betroffenen Objekte untersucht, aber das reicht für den Anfang. Die übrigen Elemente schauen wir uns später an.

Struktur und Inhalt der Dokumentation

Normalerweise wird eine Tabellendokumentation etwa in diesem Schema aufgebaut sein:

Datenbank

    Tabelle 1

        Feld 1

        Feld 2

        ...

        Index 1

        Index 2

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Indizierung mit Access

DAO: Tabellen, Felder und Co. bearbeiten

VBA-Code mit Doxygen dokumentieren

Beschreibung von Tabellen und Co. nutzen

SQL-Datenbankschema auslesen

Professionelle Datenmodellierung mit Access

Datenbanken und Tabellen per SQL anpassen

Die Microsoft Data Engine (MSDE)

Datenhierarchien in Access

Daten aus verknüpften Tabellen kopieren

© 2003-2015 André Minhorst Alle Rechte vorbehalten.