UML 2 pour les bases de données
240
© Éditions Eyrolles
Transformation des associations d’héritage
SQL3 prend en compte l’héritage de types et l’héritage de tables. Nous ne parlons pas ici de
décomposition pour traduire une association d’héritage, car la notion d’héritage est intrinsèque
au modèle objet.
Héritage de types
En considérant l’exemple 2-48, le schéma SQL3 est composé des types PNC_type et PNT_type
qui héritent du type Personnel_type à l’aide de la directive UNDER. Les tables PNC et PNT
permettront de stocker des objets persistants. La table Personnel contiendra notamment les
personnels n’étant ni PNT ni PNC (c’est un cas possible car l’héritage est sans contrainte).
L’avantage de l’héritage de types par rapport à l’héritage de tables réside dans le fait qu’un
type, une fois déclaré, peut entrer dans la composition d’un autre type ou peut permettre de
définir plusieurs tables.
L’inconvénient de l’utilisation des types se situe au niveau de la modification de la structure des
tables en exploitation (Oracle, tout en l’autorisant par ALTER TYPE, ne maîtrise pas encore
très bien l’ajout ou la suppression de colonnes d’un type composant une table objet-relationnelle).
Héritage de tables
Dans le schéma SQL3 suivant, les tables PNC et PNT héritent de la table objet-relationnelle
Personnel à l’aide de la directive UNDER.
Tableau 3.33 Héritage de types SQL3
Schéma logique
Script SQL3 (Oracle)
PNC[indice, prime]
Personnel[numPers, nomPers]
PNT[brevet, validiteLicence]
CREATE TYPE Personnel_type
(numPers NUMBER, nomPers VARCHAR(20))
CREATE TYPE PNC_type UNDER Personnel_type
(indice NUMBER, prime NUMBER(8,2))
CREATE TYPE PNT_type UNDER Personnel_type
(brevet VARCHAR(10), validiteLicence DATE)
CREATE TABLE Personnel OF Personnel_type
(CONSTRAINT pk_Personnel PRIMARY KEY(numPers))
CREATE TABLE PNC OF PNC_type
CREATE TABLE PNT OF PNT_type
240
© Éditions Eyrolles
Transformation des associations d’héritage
SQL3 prend en compte l’héritage de types et l’héritage de tables. Nous ne parlons pas ici de
décomposition pour traduire une association d’héritage, car la notion d’héritage est intrinsèque
au modèle objet.
Héritage de types
En considérant l’exemple 2-48, le schéma SQL3 est composé des types PNC_type et PNT_type
qui héritent du type Personnel_type à l’aide de la directive UNDER. Les tables PNC et PNT
permettront de stocker des objets persistants. La table Personnel contiendra notamment les
personnels n’étant ni PNT ni PNC (c’est un cas possible car l’héritage est sans contrainte).
L’avantage de l’héritage de types par rapport à l’héritage de tables réside dans le fait qu’un
type, une fois déclaré, peut entrer dans la composition d’un autre type ou peut permettre de
définir plusieurs tables.
L’inconvénient de l’utilisation des types se situe au niveau de la modification de la structure des
tables en exploitation (Oracle, tout en l’autorisant par ALTER TYPE, ne maîtrise pas encore
très bien l’ajout ou la suppression de colonnes d’un type composant une table objet-relationnelle).
Héritage de tables
Dans le schéma SQL3 suivant, les tables PNC et PNT héritent de la table objet-relationnelle
Personnel à l’aide de la directive UNDER.
Tableau 3.33 Héritage de types SQL3
Schéma logique
Script SQL3 (Oracle)
PNC[indice, prime]
Personnel[numPers, nomPers]
PNT[brevet, validiteLicence]
CREATE TYPE Personnel_type
(numPers NUMBER, nomPers VARCHAR(20))
CREATE TYPE PNC_type UNDER Personnel_type
(indice NUMBER, prime NUMBER(8,2))
CREATE TYPE PNT_type UNDER Personnel_type
(brevet VARCHAR(10), validiteLicence DATE)
CREATE TABLE Personnel OF Personnel_type
(CONSTRAINT pk_Personnel PRIMARY KEY(numPers))
CREATE TABLE PNC OF PNC_type
CREATE TABLE PNT OF PNT_type
