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-Sichten | zeigen, die angelegten |
_TABLES | Tabellen |
_OBJECTS | alle Objekte, incl. Status-Spalte |
_TAB_COLS | Spalten der Tabellen |
_VIEWS | Sichten |
_TRIGGER | Trigger |
_CONSTRAINTS | Constraints |
_CONS_COLUMS | Spalten 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