Tipps&Tricks Unique für proNet START
[an error occurred while processing this directive][an error occurred while processing this directive]
zurück 
 
Kategorie: Datenbankprojekte
Fall: 21Plattform: AlleBetriebssystem: Alle
Schlüssel oder Index? Eine Entscheidungshilfe
 
In Unique CONCEPT wurde traditionell mit den unterschiedlichen Begriffen Schlüssel und Index etwas uneinheitlich umgegangen. In einem Unique 4GL-Programm wird auf einem (Gruppen-)Feld einer Tabelle ein key() definiert, um die Sortierung und das Feld, über das ein Datensatz in diesem Programm identifiziert wird, vorzugeben. In früheren Versionen von Unique START wurde durchgängig der Begriff Schlüssel benutzt, auch wenn tatsächlich nur Indizes in den DBMS erzeugt wurden.

Voraussetzung für eine Entscheidung, ob man einen Schlüssel oder Index benutzen sollte, sind natürlich die Definition und Eigenschaften beider Datenbankobjekte:

Schlüssel
  • Ein Schlüssel ist Teil des logischen Datenbankmodells und definiert, dass ein oder mehrere Spalten einen Datensatz eindeutig bestimmen. Einer der Schlüssel auf einer Tabelle kann zudem als primärer Schlüssel definiert sein und gibt damit an, das die Spalten dieses Schlüssels das Hauptkriterium zur Identifizierung dieses Schlüssels ist.
  • Ein Schlüssel dient nicht dazu, einen schnellen Zugriff auf Datensätze zu ermöglichen, obgleich die Eindeutigkeit der Schlüssel in den meisten DBMS dadurch gewährleistet wird, das implizit ein eindeutiger Index mit den gleichen Spalten erzeugt wird, der dann wiederum den schnellen Zugriff ermöglicht.
  • Wenn man über Fremdschlüssel (Foreign keys) die referentielle Integrität von Spalteninhalten einer Tabelle zu Spalteninhalten einer anderen Tabelle definieren möchte, setzt dies voraus, dass auf der Zieltabelle auf der/den gewünschten Spalte/n ein Schlüssel definiert ist.

Index
  • Ein Index gehört zur physikalischen Implementierung der Datenbank und dient primär der schnellen Suche nach Datensätzen.
  • Über einen eindeutigen Index können wie bei einem Schlüssel ein oder mehrere Spalten für die eindeutige Idenzifizierung eines Datensatzes definiert werden.
  • Mit clustered, teils auch gruppiert oder primär genannt, Indizes kann in den meisten DBMS die physikalische Reihenfolge der Datensätze auf dem Datenbankmedium vorgegeben werden.

Schlussfolgerungen
  • Datenbanken, die für Unique 4GL-Anwendungen entworfen werden, sind meist recht einfach gehalten. Will man keine oder nur in bestimmten Fällen Fremdschlüssel benutzen, lohnen sich Schlüssel auf allen nicht betroffenen Tabellen kaum. Die Eindeutigkeit von Spalten kann man einfach über einen eindeutigen Index definieren und selbst
  • wenn für Schlüssel implizit ein identischer Index vom DBMS erzeugt wird, kann der Zugriff auf die betroffene Tabelle bei Verwendung eines Schlüssels maximal genauso schnell in manchen Fällen vielleicht drastisch geringer sein.
  • Die Unique Runtime Engine kann für verschiedene DBMS,z.B. Oracle,Sybase,MS SQL Server, automatisch Hints benutzen, um den SQL Optimizer bei der Entscheidung für einen Zugriffspfad für die Ausführung einer select-Anweisung etwas in die richtige Richtung zu stossen und einen passenden Index vorzuschlagen. Die Hints setzen voraus, dass eben ein Index verfügbar ist und dass im Unique 4GL-Programm als key() ein Index benutzt wird.
  • Sollten in dem Datenbankprojekt bereits Schlüssel definiert sein, aber trotzdem der Wunsch bestehen, einfach nur Indizes zu erzeugen, kann über das Aktivieren der Check-Box Schlüssel als Indizes erzeugen im Fenster für die Erzeugung der Datenbank bzw. Skripte eine Umsetzung von primären und eindeutigen Schlüsseln in eindeutige Indizes aktiviert werden. Eine gleichzeitge Erzeugung von Fremschlüsseln kann dann aber nicht mehr stattfinden.

 
Letzte Änderung: 13. Oktober 2000
[an error occurred while processing this directive][an error occurred while processing this directive][an error occurred while processing this directive]
 
zurück 

©2014 proNet Informationssysteme GmbH, alle Rechte vorbehalten.