UML 2 pour les bases de données
232
© Éditions Eyrolles
Avec une collection
La collection collVols contient les références vers les classes concernées par l’association
ainsi que les attributs tempsVol et dateV. Aucune contrainte de clé étrangère ne peut être
programmée pour l’heure avec Oracle.
Associations réflexives
Pour traduire une association réflexive, il suffit d’adopter une des solutions précédemment
recensées selon la nature de l’association (un-à-un, un-à-plusieurs, plusieurs-à-plusieurs ou
n-aire). La solution universelle peut convenir dans tous les cas.
Dans l’exemple 3-30, l’association réflexive plusieurs-à-plusieurs modélise la distance séparant
deux aéroports. Par ailleurs, l’association réflexive un-à-plusieurs modélise le fait qu’un aéroport
peut avoir sous sa responsabilité plusieurs autres aéroports.
Tableau 3.28 Association n-aire par une collection SQL3
Schéma logique
Script SQL3 (Oracle)
Avion[immat, typeav]
Compagnie[comp, nomcomp,
collVols{refAvi, refDepart,
refArrivee,
dateV, tempsVol} ]
Aeroport[codeOACI, nomAero]
CREATE TYPE avion_type AS OBJECT
(immat VARCHAR(6), typav VARCHAR(10))
CREATE TYPE aeroport_type AS OBJECT
(codeOACI VARCHAR(6), nomAero VARCHAR(30))
CREATE TYPE compagnie_type AS OBJECT
(comp VARCHAR(4), nomcomp VARCHAR(30),
CREATE TABLE Avion OF avion_type
(CONSTRAINT pk_avion PRIMARY KEY(immat))
CREATE TABLE Aeroport OF aeroport_type
(CONSTRAINT pk_aeroport PRIMARY KEY(codeOACI))
CREATE TABLE Compagnie OF compagnie_type
(CONSTRAINT pk_compagnie PRIMARY KEY(comp))
CREATE TYPE elt_collVols AS OBJECT
(refAvi
REF avion_type,
refDepart REF aeroport_type,
refArrivee REF aeroport_type,
dateV
DATE, tempsVol NUMBER)
CREATE TYPE collVols_type AS TABLE OF
elt_collVols
collVols collVols_type)
NESTED TABLE collVols STORE AS tempVols
232
© Éditions Eyrolles
Avec une collection
La collection collVols contient les références vers les classes concernées par l’association
ainsi que les attributs tempsVol et dateV. Aucune contrainte de clé étrangère ne peut être
programmée pour l’heure avec Oracle.
Associations réflexives
Pour traduire une association réflexive, il suffit d’adopter une des solutions précédemment
recensées selon la nature de l’association (un-à-un, un-à-plusieurs, plusieurs-à-plusieurs ou
n-aire). La solution universelle peut convenir dans tous les cas.
Dans l’exemple 3-30, l’association réflexive plusieurs-à-plusieurs modélise la distance séparant
deux aéroports. Par ailleurs, l’association réflexive un-à-plusieurs modélise le fait qu’un aéroport
peut avoir sous sa responsabilité plusieurs autres aéroports.
Tableau 3.28 Association n-aire par une collection SQL3
Schéma logique
Script SQL3 (Oracle)
Avion[immat, typeav]
Compagnie[comp, nomcomp,
collVols{refAvi, refDepart,
refArrivee,
dateV, tempsVol} ]
Aeroport[codeOACI, nomAero]
CREATE TYPE avion_type AS OBJECT
(immat VARCHAR(6), typav VARCHAR(10))
CREATE TYPE aeroport_type AS OBJECT
(codeOACI VARCHAR(6), nomAero VARCHAR(30))
CREATE TYPE compagnie_type AS OBJECT
(comp VARCHAR(4), nomcomp VARCHAR(30),
CREATE TABLE Avion OF avion_type
(CONSTRAINT pk_avion PRIMARY KEY(immat))
CREATE TABLE Aeroport OF aeroport_type
(CONSTRAINT pk_aeroport PRIMARY KEY(codeOACI))
CREATE TABLE Compagnie OF compagnie_type
(CONSTRAINT pk_compagnie PRIMARY KEY(comp))
CREATE TYPE elt_collVols AS OBJECT
(refAvi
REF avion_type,
refDepart REF aeroport_type,
refArrivee REF aeroport_type,
dateV
DATE, tempsVol NUMBER)
CREATE TYPE collVols_type AS TABLE OF
elt_collVols
collVols collVols_type)
NESTED TABLE collVols STORE AS tempVols
