VARRAY (Oracle)

Unterseite von Typkonstruktor

Der VARRAY-Typkonstruktor ist eine geordnete Menge von gleichartigen (homogenen) Elementen, deren maximale Anzahl feststeht. Er ist das Oracle-Pendant zum SQL-Typkonstruktor ARRAY. Ein Ändern von einzelnen Werten innerhalb des VARRAY wird nicht unterstützt. Bei Änderungen müssen alle Werte des VARRAY durch neue ersetzt werden.

Der VARRAY—Datentyp gehört — wie auch der oraclespezifische Typkonstruktor NESTED TABLE — zu den so genannten Kollektionsdatentypen und damit auch zu den benutzerdefinierte Datentypen. Sie können zur Definition von Attributen in realtionalen und Objekttabellen wie auch zur Definition von PL/SQL—Variablen und Parametern verwendet werden. Werden die “collections" in relationalen Tabellen angewendet, dann wird die 1. Normalform (und damit auch die 2. und 3.) verletzt, die die Forderung nach atomaren Datentypen beinhaltet.

VARRAYs können eine geordnete Menge von Datenelementen, die alle den gleichen Datentyp haben, aufnehmen. Als Datentypen sind neben den vordefinierten "built-ins" auch benutzerdefinierte Datentypen zugelassen. Es muss eine maximale VARRAY-Größe definiert werden, unterhalb der die VARRAY-Größe variabel sein kann. Jedes Element ist über einen Index zugreifbar, der die Position im Array angibt. Analog zu den Objekttypen? wird eine Konstruktormethode automatisch vom DBMS generiert, Die Änderung des Wertes einer einzelnen VARRAY-Spalte ist nicht möglich, nur alle VARRAY—Werte eines Datensatzes zusammen. Die nachfolgenden Beispiele veranschaulichen den Umgang mit den VARRAYs.

Beispiele:

        CREATE OR REPLACE TYPE telefon_vtyp  AS VARRAY(5) OF VARCHAR2(25);

        CREATE OR REPLACE TYPE kinder_typ    AS OBJECT
             (name               VARCHAR2 (50) 
              geburtstag         DATE);

        CREATE OR REPLACE TYPE kinder_vtyp   AS VARRAY(10) OF kinder_typ:

        CREATE TABLE mitarbeiter_varray
             (mita_id            NUMBER PRIMARY KEY,
              name               VARCHAR2(30),
              adresse            VARCHAR2(50),
              telefon            telefon_vtyp);

        INSERT INTO mitarbeiter_varray VALUES
             (8512,'Melchior, Helge', '5l427 BG',
              telefon_vtyp('053934893223', '0173/59341', '04937477538383', '0443732272721111'));

        CREATE TABLE mitarbeiter_varray2
             (name               VARCHAR2(30), 
              telefon            telefon_vtyp,
              kinder             kinder_vtyp);

        INSERT INTO mitarbeiter_varray2 VALUES 
               {'Melchior, Helge'  
                telefon_vtyp('0226l/68229-45', '0173/599341', '056/1111') ,
                kinder_vtyp (kinder_typ('Else',  to_date('l9.10.99','dd.mm.rr')),
                             kinder_typ('Erich', to_date('l1.02.01','dd.mm.rr'))
                            );

siehe auch: Typkonstruktor, Konstruktor, benutzerdefinierte Datentypen

Quellen:

Kategorie: Datenmodellierung, Objektrelationale DB, V, T