Array

<< Alias-Schlüssel | IBExpert Glossar | Autocommit >>

Array

Firebird/InterBase® ermöglicht die Definition der Spalten als ein Array von Elementen, d.h. Dateninformationen können in sogenannten Arrays gespeichert werden. Ein Array ist eine Reihe von Werten, die durch das Festlegen eines oberen und eines unteren Limits bestimmt werden. Ein Array besteht aus einer beliebigen Menge an Information die in verschiedene Dimensionen aufgespalten werden können. Ein Array kann als ganzes, als eine Serie von Elementen in einer Dimension von Arrays oder als einzelnes Element gehandhabt werden.

Arrays sollten mit Vorsicht verwendet werden. Die Datenbanknormalisierung wendet üblicherweise ein alternatives Format ur Speicherung solcher Daten an, sodass normale Tabellenstrukturen genauso passend sind und auch zu bevorzugen. Es gibt jedoch gelegntlich Ausnahmen, zum Beispiel für Meßwertprotokollierung, wo Arrays zu bevorzugen sind

Der Array-Datentyp wird relativ selten verwendet, da er nicht so einfach zu verarbeiten ist und nicht den typischen Anforderungen an eine SQL Datenbank entspricht (normalerweise würden ein oder zwei Tabellen erzeugt werden und nicht ein Array).

Arrays können als eine Domäne deklariert werden oder direkt in der Tabellendefinition nach der Datentypdefinition. Array-Daten können jeder Da6tentyp sein, außer Blob. Zwischen 1 und 16 Dimensionen können festgelegt werden; jede Dimension kann soviele Elemente speichern, wie in eine Datenbank passen. Die Werte werden als Blob gespeichert werden und können daher von nahezu unbegrenztem Unmfang sein.

Der einzige Unterschied, verglichen mit einer normalen Datentypdefinition ist, die Festlegung der Dimension in eckigen Klammern, jede Dimension durch Kommas getrennt. Standardmäßig ist ist die unterste ID-Nummer 1 und die oberste ID-Nummer das Maximum der Dimension. Alternative Begrenzungs-IDs können an Stelle der Arraygöße fetsgelegt werden durch Trennung per Doppelpunkt. Zum Beispiel wird ein Array mit 5 Messungen mit zwei Dimensionen angefanegn bei dem Standardwert 1, wie folgt definiert:

 [2,5]

Die Zählung beginnt mit 1 und endet mit dem Wert, der vom Benutzer eingegeben wurde. In diesem Fall können 2 x 5 = 10 Messungen protokolliert werden. Wenn die Zählng zum Beispiel bei 0 anfangen soll, ist die Array-Definition wie folgt:

 [0:2, 0:5]

Eindimensionale Arrays

Definition: NAME DATATYPE [LOWER_DIMENSION:UPPER_DIMENSION]
Beispiel: LANGUAGE_REQ VARCHAR(15) [1:5]

In diesem Feld können 5 Dateneinträge vom Typ VARCHAR(15) gespeichert werden. Zugriff kann auf LANGUAGE_REQ[1] bis LANGUAGE_REQ[5] genommen werden.

Multidimensionale Arrays

Definition: NAME DATATYPE [LOWER_DIMENSION1:UPPER_DIMENSION1]

 [LOWER_DIMENSION2:UPPER_DIMENSION2] 

Beispiel: DAILY_MEASUREMENTS NUMERIC(18,2) [1:24][1:365]

Wenn Sie Arrays verwenden, ist es wichtig, sich der Vorteile und Einschränkungen bewusst zu sein.

Vorteile von Arrays

  1. InterBase® Operationen können auf dem gesamten Datentyp als einzelnes Element durchgeführt werden. Alternative Operationen können auf Array-Teil nur für bestimmte Werte einer Dimension ausgeführt werden. Ein Array kann auch in jedes Einzelelemnet aufgespalten werden.
  2. Folgende Operationen werden unterstützt:
  • SELECT-Anweisung von Array-Daten.
  • Eingabe von Daten in ein Array.
  • Datenaktualisierung in einem Array-Teil.
  • Datenauswahl aus einem Array-Teil.
  • Überprüfung eines Array-Elements ind einer SELECT-Anweisung.

Array-Einschränkungen

  1. A benutzerdefinierte Funktionen können nur auf ein Element in einem Array zugreifen.
  2. Die folgenden Operationen werden nicht unterstützt:
  • Dynamisch referenzierende Array-Dimensionen unter Verwendung von SQL-Anweisungen.
  • Eingabe von Daten in ein Array.
  • Einzelne Array-Elemente auf null setzen.
  • Verwendung von Aggregat-Funktionen, wie MIN(), MAX(), SUM(), AVG() und COUNT() in Arrays.
  • Die Referenzierung auf einen Array in der GROUP BY-Klausel in einer SELECT-Abfrage.
  • Erzeugung eines Views, der aus einem Array-Teil auswählt.
  1. Die Daten, die auf diese Weise gespeichert werden, können nicht per Index ausgewählt werden; jede Abfrage greift immer nur auf unindexierte Felder zu.

Siehe auch:
deutschsprachig:
SQL Editor
englischsprachig:
Data types and subtypes
Selecting the right data type to improve database performance
Firebird 2.1 Language Reference Update
Firebird 2.0 Language Reference Update
SQL Language Reference
Firebird 2.1 Release Notes: Sorting on BLOB and ARRAY columns is restored
Data retrieval: Notes on SELECT syntax

zurück zum Seitenanfang
<< Alias-Schlüssel | IBExpert Glossar | Autocommit >>