Data Dictionary

Das Data Dictionary (kurz Dictionary), oder auch die Metadatenbank genannt, kann als das Inhaltsverzeichnis des DBS bezeichnet werden. Datenbankobjekte, die dort nicht eingetragen sind, gibt es auch nicht. Es enthält Informationen über die Datenbasis, wie z.B. Tabellen und Sichten mit ihren Attributstrukturen und ihre Beziehungen untereinander, ebenso über die verwendeten physikalischen Speicherstrukturen wie z.B. Indices, HEAP, B-Baum, über Integritätsbedingungen und über alle anderen Datenbankobjekte die das DBS ebenfalls zur Verfügung stellt.

Relationales Modell, SQL:

Im relationalen Modell ist das Dictionary mit den gleichen Konzepten realisiert, auf denen auch das relationale Modell beruht, nämlich Tabellen, Attributen, Beziehungen, Sichten, ... Informationen im Dictionary werden durch die SQL-DDL-Befehle eingefügt (CREATE-Anweisungen), geändert (ALTER-Anweisungen) oder gelöscht (DROP-Anweisungen) bzw. bei der Rechtverwaltung mittels GRANT und REVOKE, etc.

Die Informationen in einem Data Dictionary beinhalten die Namen der Tabellen und deren Spalten inklusive Datentypen und Längen. Es werden alle Datenbankobjekte gelistet - alle Tabellen, Sichten, Indices, Sequenzen, Constraints, Synonyme und mehr. Den Einträgen im Dictionary können Kommentare? hinzugefügt werden.

Oracle:

Bei Oracle umfasst das Dictionary ca. 2300 Tabellen und Sichten. Für jedes Datenbankobjekt gibt es eine oder mehrere Tabellen/Sichten, die alle beschreibende Informationen enthalten. In der Regel sind die Namen recht sprechend vergeben, wie z.B. USER_TABLES, USER_CONSTRAINTS, USER_INDEXES, und viele, viele mehr ... Ganz grob untergliedern sie sich in folgende Gruppen:

Dictionary-Sichten zeigen
USER_<sichtname>die Datenbankobjekte, die der Anwender in seinem Schema selbst angelegt hat
ALL_<sichtname>die Datenbankobjekte, die der Anwender selbst angelegt hat bzw. auf die er Zugriffsrechte von anderen Anwendern bekommen hat
DBA_<sichtname>alle angelegten Datenbankobjekte
V$_<sichtname>statistische Informationen, die für Laufzeitverbesserungen (Tuning) oder für optimierte Speicherformen ausgewertet werden können

Hier nur einige, die jedoch den Einstieg in das Thema erleichtern, da sie zu den hier beschriebenen SQL-Objekten gehören.

Dictionary-Sichtenzeigen, die angelegten
_TABLESTabellen
_OBJECTSalle Objekte, incl. Status-Spalte
_TAB_COLSSpalten der Tabellen
_VIEWSSichten
_TRIGGERTrigger
_CONSTRAINTSConstraints
_CONS_COLUMSSpalten der Constraints

Beispiele unter Oracle:

Für das Identifizieren von Objekten, die einem Benutzer angehören, bieten sich insbesondere zwei Views als guter Startpunkt an: USER_CATALOG und USER_OBJECTS. Der USER_CATALOG besteht aus zwei Spalten (TABLE_NAME, TABLE_TYPE) und zeigt mit folgendem Befehl eine nützliche Zusammenfassung der eigenen Objekte an:

 SELECT TABLE_TYPE, COUNT(*)
 FROM USER_CATALOG
 GROUP BY TABLE_TYPE;
TABLE_TYPE COUNT(*) ----------- -------------- SEQUENCE 12 TABLE 50 VIEW 9 SYNONYM 3

Die View USER_OBJECTS beinhaltet mehr Informationen, beispielsweise wann ein Objekt angelegt wurde, wann es zuletzt geändert wurde (DDL) und in welchem Namespace es liegt. Eine nützliche Aufgabe, die man mit Hilfe dieser View bewerkstelligen kann, ist das Herausfinden ungültiger Views:

 SELECT STATUS, OBJECT_TYPE, OBJECT_NAME
 FROM USER_OBJECTS
 WHERE STATUS = 'INVALID'
 ORDER BY OBJECT_NAME;//

 STATUS   OBJECT_TYPE  OBJECT_NAME
 -------- ------------ ---------------
 INVALID  VIEW         V_KUNDENSICHT
 INVALID  VIEW         V_UMSATZREPORT

Möchte man nun die Abfrage einsehen, auf der eine View aufbaut, kann man dies mit folgendem Befehl:

 SELECT TEXT
 FROM USER_VIEWS
 WHERE VIEW_NAME = 'V_KUNDENSICHT';//

 TEXT
 ----------------------
 SELECT KUNDENNAME,
        KUNDENADRESSE,
        [..]
        FROM KUNDEN

Quellen:

  • INCITS/ISO/IEC 9075-1-2008. Part 1 "SQL/Framework", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • INCITS/ISO/IEC 9075-1-2008. Part 2 "SQL/Foundation", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • Elmasri, Ramez; Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2009, ISBN 978-3-86894-012-1
  • Faeskorn-Woyke, Heide; Bertelsmeier, Birgit; Riemer, Petra; Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6* Melton, Jim/Simon, Alan R.: "SQL: 1999 - Understanding Relational Language Components", Morgan Kaufmann, San Francisco, 2001, ISBN 1558604561
  • Kemper, Alfons; Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2011, 978-3-486-59834-6
  • Oracle® Database SQL Language Reference 11g Release 2 (11.2), E17118-03, August 2010, http://download.oracle.com/docs/cd/E11882_01/server.112/e17118.pdf
  • Saake, Gunter; Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2011, ISBN 978-3-8266-9156-0
  • Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2

Kategorie: Allgemeines, Aktive Datenbanken, SQL, D