Les collections imbriquées (LDD)

SyntaxeImplémentation des collections de scalaires sous forme de tables imbriquées en SQL3

1
-- Déclaration d'un type abstrait de collection 
2
CREATE TYPE liste_nom_type AS TABLE OF nom_type_scalaire;
3
4
-- Déclaration d'une table imbriquant une autre table
5
CREATE TABLE nom_table_principale (
6
 nom_attribut type_attribut,
7
 ...
8
 nom_attribut_table_imbriquée liste_nom_type,
9
 ...
10
 )
11
 NESTED TABLE nom_attribut_table_imbriquée STORE AS nom_table_stockage;

ExempleGestion d'attribut multivalué par imbrication de collection de scalaires

Imbrication de collection de scalaires
1
CREATE OR REPLACE TYPE typListeTelephones AS TABLE OF number(10);
2
/
3
4
CREATE TABLE tIntervenant (
5
pknom varchar2(20) PRIMARY KEY,
6
prenom varchar2(20) NOT NULL,
7
ltelephones typListeTelephones
8
)
9
NESTED TABLE ltelephones STORE AS tIntervenant_nt1;

SyntaxeImplémentation des collections d'enregistrement sous forme de tables imbriquées en SQL3

1
--Création d'un type abstrait d'objet 
2
CREATE TYPE nom_type AS OBJECT (...);
3
4
-- Déclaration d'un type abstrait de collection 
5
CREATE TYPE liste_nom_type AS TABLE OF nom_type;
6
7
-- Déclaration d'une table imbriquant une autre table
8
CREATE TABLE nom_table_principale (
9
 nom_attribut type_attribut,
10
 ...
11
 nom_attribut_table_imbriquée liste_nom_type,
12
 ...
13
 )
14
 NESTED TABLE nom_attribut_table_imbriquée STORE AS nom_table_stockage;

ExempleGestion de composition par imbrication de collection d'enregistrements

Imbrication de collection d'enregistrement
1
CREATE OR REPLACE TYPE typSpecialite AS OBJECT (
2
domaine varchar2(50),
3
technologie varchar2(50)
4
);
5
/
6
7
CREATE OR REPLACE TYPE typListeSpecialites AS TABLE OF typSpecialite;
8
/
9
10
CREATE TABLE tIntervenant (
11
pknom varchar2(20) PRIMARY KEY,
12
prenom varchar2(20) NOT NULL,
13
lspecialites typListeSpecialites
14
)
15
NESTED TABLE lspecialites STORE AS tIntervenant_nt2;

ComplémentSynthèse : enregistrement imbriqué, collection de scalaires imbriquée, collection d'enregistrement imbriquée

Modèle imbriqué
1
Type typBureau : <centre:char, batiment:char, numero:int>
2
Type typListeTelephones : collection de <entier>
3
Type typSpecialite : <domaine:char, specialite:char>
4
Type typListeSpecialites : collection de <typSpecialite>
5
tIntervenant (#nom:char, prenom:char, bureau:typBureau, ltelephones:typListeTelephones, lspecialites:typListeSpecialites)
1
CREATE OR REPLACE TYPE typBureau AS OBJECT (
2
centre char(2),
3
batiment char(1),
4
numero number(3)
5
);
6
/
7
8
CREATE OR REPLACE TYPE typListeTelephones AS TABLE OF number(10);
9
/
10
11
CREATE OR REPLACE TYPE typSpecialite AS OBJECT (
12
domaine varchar2(15),
13
technologie varchar2(15)
14
);
15
/
16
17
CREATE OR REPLACE TYPE typListeSpecialites AS TABLE OF typSpecialite;
18
/
19
20
CREATE TABLE tIntervenant (
21
pknom varchar2(20) PRIMARY KEY,
22
prenom varchar2(20) NOT NULL,
23
bureau typBureau,
24
ltelephones typListeTelephones,
25
lspecialites typListeSpecialites
26
)
27
NESTED TABLE ltelephones STORE AS tIntervenant_nt1,
28
NESTED TABLE lspecialites STORE AS tIntervenant_nt2;