© Éditions Eyrolles
225
chapitre n° 3
Le niveau physique : de SQL2 à SQL3
À propos des références
Bien que les références permettent d’implanter une association entre deux tables, comme le
faisaient les clés étrangères, elles n’offrent pas encore toutes les fonctionnalités de ces dernières. Il est possible que l’intégrité référentielle soit à programmer partiellement ou totalement.
Avec Oracle, il est possible de savoir si l’objet père d’un objet fils donné a été supprimé par la
directive DANGLING [SOU 04]. En revanche, il n’est pas encore possible de définir une clé
primaire, une contrainte UNIQUE ou un index sur une référence.
Que reste-t-il aux références ? La limitation du nombre de jointures entre des tables et la
possibilité de définir des vues objet-relationnelles de tables SQL2.
Associations un-à-plusieurs
Nous recensons trois bases de travail sous SQL3 pour décrire une association un-à-plusieurs
entre deux classes C1 (père) et C2 (fils).
Solution 1 Définition d’une collection (NESTED TABLE ou VARRAY pour Oracle) dans le type
dérivé de C1. Cette collection contient une référence vers le type dérivé de C2.
Solution 2 Définition d’un attribut REF ou FOREIGN KEY dans le type dérivé de C2 qui référence
le type dérivé de C1.
Solution 3 Définition d’un troisième type contenant deux attributs REF ou FOREIGN KEY qui
référencent les types dérivés de C1 et C2.
Tableau 3.24 Association un-à-un SQL3
Schéma logique
Script SQL3 (Oracle)
Stage[nstage, theme]
Etudiant[netu, nom, age, refSta]
CREATE TYPE stage_type AS OBJECT
(nstage CHAR(4), theme CHAR(30))
CREATE TYPE etudiant_type AS OBJECT
(netu CHAR(4), nom CHAR(30), age NUMBER,
CREATE TABLE Stage OF stage_type
(CONSTRAINT pk_stage PRIMARY KEY(nstage));
CREATE TABLE Etudiant OF etudiant_type
(CONSTRAINT pk_etudiant PRIMARY KEY(netu),
refSta REF stage_type)
CONSTRAINT nn_refSta CHECK (refSta IS NOT NULL),
CONSTRAINT scope_refSta refSta SCOPE IS Stage)
Précédent

- 231/316

Suivant