INGRES-Data Dictionary und Systemkatalog

Inhaltsübersicht

            

INGRES-Data Dictionary und Systemkatalog. 1

11      INGRES-Data Dictionary und Systemkatalog. 1

11.1   INGRES-Master-Datenbank. 1

11.2   INGRES-Systemkatalog. 2

11.3   Abfragen auf Systemtabellen. 7

              

 

 

11 INGRES-Data Dictionary und Systemkatalog

 

 

          In  diesem   Kapitel  werden   das  INGRES-Data   Dictionary

          behandelt  und Systemkataloge  beschrieben. Zuerst  wird die

          INGRES-Master-Datenbank und  der Zugriff  auf sie erläutert.

          Danach  werden die  wichtigsten Tabellen  des Systemkatalogs

          beschrieben. In  einem weiteren  Abschnitt werden praktische

          Abfragen auf gewählte Systemtabellen gezeigt.

 

Zurück zum Inhaltsverzeichnis

 

 

 

11.1    INGRES-Master-Datenbank

 

 

          Die   INGRES-Master-Datenbank  (iidbdb)   kennzeichnet  eine

          Datenbank,  die   alle  übergeordneten   Informationen   wie

          Benutzer- und  Datenbanknamen enthält.  Weil sie die globale

          Information bezüglich aller Datenbanken eines INGRES-Systems

          beinhaltet, kann  man sie  als oberste Ebene des INGRES-Data

          Dictionarys betrachten.

 

          Die  Master-Datenbank   iidbdb  wird  bei  der  Installation

          eines   INGRES  Systems   automatisch  erstellt.   Sie   hat

          dieselbe Form  wie jede  andere INGRES-Datenbank,  kann aber

          nur  vom  INGRES-Systemadministrator  geändert  werden.  Die

          Aktualisierung dieser  Datenbank wird  bei jeder Aktion, wie

          etwa bei  der Erstellung  einer neuen Datenbank oder bei der

          Einrichtung eines neuen Benutzers, durchgeführt.

 

          Das INGRES-System unterstützt zwei Dienstprogramme, accessdb

          und catalogdb,  die  den  Zugriff  auf  iidbdb  ermöglichen.

          accessdb kann  nur  vom  INGRES-Systemadministrator  benutzt

          werden, um  iidbdb sowohl  zu ändern  als  auch  abzufragen,

          während  catalogdb  jedem  DBA  nur  Abfragen  erlaubt,  die

          ihn  selbst betreffen.  Die  beiden  Dienstprogramme  werden

          ausführlich in Kapitel 15 beschrieben.

 

          Eine   weitere   Möglichkeit,   Abfragen   auf   iidbdb   zu

          erstellen,   bieten  die  von  Benutzern  selbst  erstellten

          Anwendungsprogramme.

 

Zurück zum Inhaltsverzeichnis

 

 

 

11.2     INGRES-Systemkatalog

 

 

          Den zweiten,  logisch untergeordneten  Teil des  INGRES-Data

          Dictionarys  bildet  der  Systemkatalog.  Der  Systemkatalog

          beinhaltet  interne  Informationen,  die  das  INGRES-System

          für  einen reibungslosen  Ablauf benötigt.  Im Systemkatalog

          befindet  sich   die  Information  über  Tabellen,  Spalten,

          Indexe,  Zugriffsrechte, Format-  und  Listenprogramme  usw.

          Diese Information ist für das einwandfreie Funktionieren des

          Systems unerläßlich.

 

          Bei  INGRES  besteht der  Systemkatalog aus  Systemtabellen,

          die  in ihrem  Aufbau den  Benutzertabellen entsprechen.  Im

          Unterschied  zu den  Benutzertabellen haben  die Namen aller

          Systemtabellen das Präfix "ii".

 

          INGRES hat zwei Systemkatalogtypen

 

                        - den Standard-Systemkatalog         und

                        - den erweiterten Systemkatalog.

 

          Der  Standard-Systemkatalog  ermöglicht  dem  Benutzer,  die

          Informationen  über   logische  Datenbankobjekte  (Tabellen,

          Views,    Indexe   usw.)   der   existierenden   Datenbanken

          abzufragen.    Der    erweiterte    Systemkatalog    enthält

          Informationen  über  Anwendungen,  die  mit  QBF,  RBF  oder

          anderen front-end-Produkten  von  INGRES  erstellt  worden

          sind.

 

          Der   wichtigste    Unterschied   zwischen   diesen   beiden

          Systemkatalogen  ist,  daß  der  Standard-Systemkatalog  die

          Systemtabellen   mit   allgemein   wichtigen   Informationen

          enthält,   während  der   erweiterte   Katalog   spezifische

          Informationen  bezüglich jedes  einzelnen  INGRES-Subsystems

          besitzt. Deswegen  werden wir  im  weiteren  Verlauf  dieses

          Kapitels  nur   die  Tabellen   des  Standard-Systemkatalogs

          beschreiben. Die  Informationen über einzelne Systemtabellen

          des   erweiterten   Systemkatalogs   finden   Sie   in   den

          entsprechenden INGRES-Manualen.

 

          Hinweis.

          Die   Anwendungen  eines   Benutzers  haben  weder  auf  dem

          Standard-  noch auf dem erweiterten  Systemkatalog  direkten

          Zugriff.  Jede   Abfrage   auf   Systemtabellen   in   einer

          Anwendung   verwendet   die   Standard-Katalog-Schnittstelle

          ("Standard-Catalog-Interface"),    um   auf   Systemtabellen

          der      beiden      Katalogtypen      zuzugreifen.      Die

          Standard-Katalog-Schnittstelle besteht  aus Views,  die  von

          INGRES unterstützt  werden. Der  Grund  dafür  liegt  darin,

          daß INGRES  sich einerseits  die Änderung der Systemtabellen

          in  den  künftigen  Versionen  vorbehält,  andererseits  dem

          Benutzer  eine standardisierte  Schnittstelle, die  auch  in

          den künftigen  INGRES-Versionen gelten  wird, zur  Verfügung

          stellen möchte.

 

          Im   folgenden    werden   die    wichtigsten   Views    des

          Standard-Systemkatalogs   mit  den   dazugehörigen   Spalten

          dargestellt.

 

iitables           

Die wichtigste und in den Abfragen  meistbenutzte Systemtabelle.

Sie enthält je eine Reihe für die Beschreibung jedes Objektes

(Tabelle, View oder Index). Die wichtigsten Spalten dieser Tabelle sind:

 

Spalte

Beschreibung

table_name       

Der Name des Objektes (Tabelle, View oder Index).

table_owner      

Der Eigentümer des Objektes.

create_ date       

Das Erstellungsdatum des Objektes

table_type       

Der Objekttyp. "T" definiert eine Tabelle, "V" ein View und "I" einen Index.

table_subtype    

Der Typ einer Tabelle bzw. eines Views bezüglich der Systemzugehörigkeit. "N" definiert ein Objekt einer lokalen INGRES-Datenbank, "L" ein Objekt aus dem INGRES-Netz und "I" ein Objekt eines fremden Datenbanksystems

table_stats      

besagt, ob ein Eintrag des Objektes in der Systemtabelle iistats vorhanden ist ("Y") oder nicht ("N").

table_indexes     

besagt, ob ein Eintrag des Objektes in der Systemtabelle iiindexes vorhanden ist ("Y") oder nicht ("N").

num_rows         

Die geschätzte Reihenanzahl der Tabelle. Falls die Anzahl unbekannt ist, wird der Wert -1 eingetragen.

number_pages     

Die geschätzte Anzahl der physikalischen Seiten, die einer Tabelle gehören. Falls die Anzahl  unbekannt ist, wird der Wert -1 eingetragen.

 

iicolumns           

Diese  Tabelle   beinhaltet  Information über  die  Spalten  einer  Tabelle

bzw. eines Views.  Für jedes  dieser  Objekte existieren  ein  oder 

mehrere  Einträge in  iicolumns. Die  wichtigsten  Spalten dieser Tabelle sind:

 

Spalte

Beschreibung

table_name       

Der Tabellenname.   

table_owner      

Der Eigentümer der Tabelle.        

column_name      

Der Name der Spalte.              

column_datatype  

Der Datentyp der Spalte.

column_length    

Die physikalische Länge der Spalte.

column_nulls     

besagt, ob die Spalte NULL-Werte enthalten darf oder nicht.

key_sequence     

besagt, ob die Spalte einen Teil des Speicherstruktur-Index bildet.

 

 

            iiviews             

Diese  Tabelle   beinhaltet  einen  oder mehrere  Einträge für  jedes View

einer Datenbank. Die wichtigsten Spalten dieser Tabelle sind:

 

Spalte

Beschreibung

table_name       

Der Name des Views.

table_owner      

Der Eigentümer des Views.        

check_option     

besagt, ob das View mit der Angabe "WITH CHECK OPTION" definiert ist ("Y") oder nicht ("N"). (Für die Definition der Angabe "WITH CHECK OPTION" siehe Kapitel 11.).

text_segment     

Der Text, der die Definition des Views enthält.

 

iiindexes

Diese  Systemtabelle beinhaltet je einen Eintrag für  jedes  Objekt  der  Tabelle

            iitables vom  Typ "I".  Die  wichtigsten Spalten sind:

 

Spalte

Beschreibung

index_name       

Der Indexname

index_owner      

Der Eigentümer des Index.           

base_name        

Der  Name der zugehörigen Tabelle.

base_owner       

Der Eigentümer der Tabelle.

unique_rule      

besagt, ob jeder Datenwert der indizierten Spalte nur einmal ("U") oder mehrmals ("D") vorkommen kann.

 

iiindex_columns     

Diese  Tabelle beinhaltet je einen  Eintrag für diejenigen Spalten,  die

            einen Index bilden. Die wichtigsten Spalten sind:

 

Spalte

Beschreibung

index_name       

Der Name des Index, der die Spalte enthält.

index_owner      

Der Eigentümer des Index.          

column_name      

Der Spaltenname.                   

column_sequence  

Definiert die Stelle, die die Spalte innerhalb des Speicherstruktur-Index eines Sekundär-Index einnimmt.

 

iistats             

Diese Tabelle beinhaltet je einen Eintrag für jede Spalte, für die Statistiken 

vorliegen. Die wichtigsten Spalten dieser Systemtabelle sind:

 

Spalte

Beschreibung

table_name       

Der Name der Tabelle, zu der die Spalte gehört.

table_owner      

Der Eigentümer der Tabelle.        

column_name      

Der Name der Spalte, für die die Auswertung vorliegt.              

has_unique       

besagt, ob  die Spalte eindeutige ("Y") oder mehrfache Werte ("N") erlaubt.  

 

         Wie  bereits   erwähnt,  ist   die  Form   der  System-   und

         Benutzertabellen   identisch.  Deswegen   können  bei  INGRES

         die   Systemtabellen   genauso   wie   die   Benutzertabellen

         abgefragt   und  modifiziert   werden.   Die   Abfragen   auf

         Systemtabellen unterscheiden  sich nicht von den Abfragen auf

         Benutzertabellen.

 

         Die Erlaubnis,  eine Systemtabelle  zu modifizieren, wird mit

         dem Dienstprogramm  accessdb erteilt.  Die Modifizierung  der

         Systemtabellen  kann auf  keinen Fall  empfohlen werden, weil

         dies  weitere Arbeiten  mit einer  Datenbank unmöglich machen

         könnte.

 

Zurück zum Inhaltsverzeichnis

 

 

 

11.3     Abfragen auf Systemtabellen

 

 

         In diesem Abschnitt werden einige Beispiele gezeigt, die die

         Abfragen auf Systemtabellen behandeln.

 

         Beispiel 11.1

 

         Finden  Sie den  Tabellentyp und  die Anzahl  der Reihen  der

         Tabelle mitarbeiter.

 

           SELECT table_type, num_rows

              FROM iitables

              WHERE table_name = 'mitarbeiter';

 

         Das Ergebnis ist

        

table_

num_rows         

T

7

                                    

         (1 row)

 

         Wie  aus dem Ergebnis des Beispiels 11.1 ersichtlich, handelt

         es sich  bei der  Tabelle mitarbeiter  um  eine  Basistabelle

         (table_type="T"), die insgesamt sieben Reihen enthält.

 

         Beispiel 11.2

 

         Finden Sie  alle  Tabellen  der  Beispieldatenbank,  die  die

         Spalte pr_nr enthalten.

 

          SELECT iitables.table_name

             FROM iitables, iicolumns

             WHERE iitables.table_name = iicolumns.table_name

             AND iicolumns.column_name = 'pr_nr';

 

         Das Ergebnis ist

 

table_name            

projekt               

arbeiten              

                                

         (2 rows)

 

         Beispiel 11.3

 

         Welche   Spaltennamen   sind   in   mehreren   Tabellen   der

         Beispieldatenbank enthalten?

 

          SELECT DISTINCT column_name

             FROM iicolumns

             WHERE table_owner ='peter'

             GROUP BY column_name

             HAVING COUNT(*) > 1

 

         Das Ergebnis ist

 

column_name               

m_nr                      

abt_ nr                    

pr_nr                     

                                    

         (3 rows)

 

         In Beispiel 11.3 wird angenommen, daß der Benutzer peter der

         Eigentümer der Tabellen der Beispieldatenbank ist.

 

Zurück zum Inhaltsverzeichnis