© Éditions Eyrolles
233
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
Notation UML
Choisissons de traduire l’association réflexive plusieurs-à-plusieurs par la solution universelle et
l’association réflexive un-à-plusieurs par une collection de références (première solution
d’implantation d’une association un-à-plusieurs).
Script SQL3
L’association Distance met en œuvre des références et une table précisant les clés étrangères.
L’association responsable nécessite une collection (collAero) de références (refAeroRespons).
Figure 3-30 Associations réflexives UML
Tableau 3.29 Associations réflexives SQL3
Schéma logique
Script SQL3 (Oracle)
Aeroport[codeOACI, nomAero,
collAero{refAeroRespons}]
Distance[refAero1, refAero2,
nautiques]
CREATE TYPE aeroport_type
CREATE TYPE elt_collAero AS OBJECT
(refAeroRespons REF aeroport_type)
CREATE TYPE collAero_type AS TABLE OF elt_collAero
CREATE TYPE aeroport_type AS OBJECT
(codeOACI VARCHAR(6), nomAero VARCHAR(30),
collAero collAero_type)
CREATE TYPE distance_type AS OBJECT
(refAero1 REF aeroport_type,
refAero2 REF aeroport_type, nautique NUMBER)
CREATE TABLE Aeroport OF aeroport_type
(CONSTRAINT pk_aeroport PRIMARY KEY(codeOACI))
NESTED TABLE collAero STORE AS tempAeros
Distance
nautiques
0..*
responsable
1..*
Aeroport
code0ACI
nomAero
1..*
0..1
233
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
Notation UML
Choisissons de traduire l’association réflexive plusieurs-à-plusieurs par la solution universelle et
l’association réflexive un-à-plusieurs par une collection de références (première solution
d’implantation d’une association un-à-plusieurs).
Script SQL3
L’association Distance met en œuvre des références et une table précisant les clés étrangères.
L’association responsable nécessite une collection (collAero) de références (refAeroRespons).
Figure 3-30 Associations réflexives UML
Tableau 3.29 Associations réflexives SQL3
Schéma logique
Script SQL3 (Oracle)
Aeroport[codeOACI, nomAero,
collAero{refAeroRespons}]
Distance[refAero1, refAero2,
nautiques]
CREATE TYPE aeroport_type
CREATE TYPE elt_collAero AS OBJECT
(refAeroRespons REF aeroport_type)
CREATE TYPE collAero_type AS TABLE OF elt_collAero
CREATE TYPE aeroport_type AS OBJECT
(codeOACI VARCHAR(6), nomAero VARCHAR(30),
collAero collAero_type)
CREATE TYPE distance_type AS OBJECT
(refAero1 REF aeroport_type,
refAero2 REF aeroport_type, nautique NUMBER)
CREATE TABLE Aeroport OF aeroport_type
(CONSTRAINT pk_aeroport PRIMARY KEY(codeOACI))
NESTED TABLE collAero STORE AS tempAeros
Distance
nautiques
0..*
responsable
1..*
Aeroport
code0ACI
nomAero
1..*
0..1
