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.
CTRL+C pour copier, CTRL+V pour coller
1
Type nom_type : collection de <type_objet>
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.
CTRL+C pour copier, CTRL+V pour coller
1
Type typListeTelephones : collection de <entier>
2
tIntervenant (#nom:char, prenom:char, ltelephones:typListeTelephones)
Type typListeTelephones : collection de <entier>
tIntervenant (#nom:char, prenom:char, ltelephones:typListeTelephones)

ExempleCollection d'objets complexes (modèle logique)

Appuyer sur espace pour rester en pause.
CTRL+C pour copier, CTRL+V pour coller
1
Type typSpecialite : <domaine:char, specialite:char>
2
Type typListeSpecialites : collection de <typSpecialite>
3
tIntervenant (#nom:char, prenom:char, lspecialites:typListeSpecialites)
Type typSpecialite : <domaine:char, specialite:char>
Type typListeSpecialites : collection de <typSpecialite>
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.
CTRL+C pour copier, CTRL+V pour coller
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;
-- Déclaration d'un type abstrait de collection 
CREATE TYPE liste_nom_type AS TABLE OF nom_type_scalaire;

-- Déclaration d'une table imbriquant une autre table
CREATE TABLE nom_table_principale (
 nom_attribut type_attribut,
 ...
 nom_attribut_table_imbriquée liste_nom_type,
 ...
 )
 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.
CTRL+C pour copier, CTRL+V pour coller
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;
CREATE OR REPLACE TYPE typListeTelephones AS TABLE OF number(10);
/

CREATE TABLE tIntervenant (
pknom varchar2(20) PRIMARY KEY,
prenom varchar2(20) NOT NULL,
ltelephones typListeTelephones
)
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.
CTRL+C pour copier, CTRL+V pour coller
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;
--Création d'un type abstrait d'objet 
CREATE TYPE nom_type AS OBJECT (...);

-- Déclaration d'un type abstrait de collection 
CREATE TYPE liste_nom_type AS TABLE OF nom_type;

-- Déclaration d'une table imbriquant une autre table
CREATE TABLE nom_table_principale (
 nom_attribut type_attribut,
 ...
 nom_attribut_table_imbriquée liste_nom_type,
 ...
 )
 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.
CTRL+C pour copier, CTRL+V pour coller
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;
CREATE OR REPLACE TYPE typSpecialite AS OBJECT (
domaine varchar2(50),
technologie varchar2(50)
);
/

CREATE OR REPLACE TYPE typListeSpecialites AS TABLE OF typSpecialite;
/

CREATE TABLE tIntervenant (
pknom varchar2(20) PRIMARY KEY,
prenom varchar2(20) NOT NULL,
lspecialites typListeSpecialites
)
NESTED TABLE lspecialites STORE AS tIntervenant_nt2;