Les collections imbriquées (modèle et LDD)

DéfinitionCollection

Une collection est un type de données générique défini afin de supporter un ensemble d'objets (scalaires ou enregistrements).

Synonymes : Collection d'objets

SyntaxeModèle logique

Appuyer sur espace pour rester en pause.
1
Type nom_type : collection de <type_objet>

Remarque

Les objets d'une collection peuvent être un type simple (collection de scalaire) ou un type utilisateur (collection d'enregistrements).

ExempleCollection d'entiers (modèle logique)

Appuyer sur espace pour rester en pause.
1
Type typListeTelephones : collection de <entier>
2
tIntervenant (#nom:char, prenom:char, ltelephones:typListeTelephones)

ExempleCollection d'objets complexes (modèle logique)

Appuyer sur espace pour rester en pause.
1
Type typSpecialite : <domaine:char, specialite:char>
2
Type typListeSpecialites : collection de <typSpecialite>
3
tIntervenant (#nom:char, prenom:char, lspecialites:typListeSpecialites)

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

Appuyer sur espace pour rester en pause.
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

Appuyer sur espace pour rester en pause.
Imbrication de collection de scalaires
Appuyer sur espace pour rester en pause.
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

Appuyer sur espace pour rester en pause.
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

Appuyer sur espace pour rester en pause.
Imbrication de collection d'enregistrement
Appuyer sur espace pour rester en pause.
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;