Bases de données avancées 2004 - 2005 110
attribut-référence IS DANGLING
Cette condition est vraie si et seulement si l'attribut référence n'a pas été initialisé.
Exemple:
SELECT p.nom FROM LesPersonnes p WHERE p.conjoint IS DANGLING;
4. Hiérarchie de types OBJECT
En Oracle à partir de la version 9, il est possible de créer des hiérarchies de types OBJECT, puis
d'utiliser ces types et leurs sous-types lors des créations de tables. Pour créer un type pour lequel on
va déclarer des sous-types, il faut ajouter la clause NOT FINAL à son instruction CREATE TYPE;
sinon, par défaut le type créé sera considéré par Oracle comme "final", c'est-à-dire sans sous-type.
Pour créer un sous-type d'un type non final, il faut rajouter la clause UNDER nom-sur-type. Le
sous-type héritera alors des attributs et méthodes du sur-type. Attention, l'héritage multiple est
interdit : un type ne peut avoir qu'un seul sur-type.
Exemple :
CREATE TYPE T-Personne AS OBJECT
( AVS NUMBER ,
nom VARCHAR(18) ,
prénom VARCHAR(18) ,
adresse VARCHAR(200) )
NOT FINAL /
CREATE TYPE T-Etudiant UNDER T-Personne
( faculté VARCHAR(18) ,
cycle VARCHAR(18) )
/
Le type T-Etudiant est un type OBJECT, qui contient 6 attributs, AVS, nom, prénom, adresse,
faculté et cycle. On peut l'utiliser, comme les autres types, pour créer des tables d'objets de type T-
Etudiant ou comme domaine pour des attributs. Le type T-Personne peut lui aussi être employé pour
créer des tables d'objets ou servir de domaine pour des attributs. Dans le cas d'une table d'objets de
type T-Personne et dans celui d'un attribut de type T-Personne, suivant le principe de substituabilité,
l'utilisateur peut y insérer des valeurs de type T-Personne ou de type T-Etudiant.
Exemples :
CREATE TABLE LesPersonnes OF T-Personne ; /* création d'une table d'objets */
INSERT INTO LesPersonnes VALUES (T-Person (11111111, 'Rochat', 'Philippe', 'Rue des oiseaux,
1, Morges') /* création et insertion d'un objet de type T-Personne */
INSERT INTO LesPersonnes VALUES ( T-Etudiant (22222222, 'Muller', 'Annie', 'Rue du marché,
22, Renens', 'HEC', 'master') /* création et insertion d'un objet de type T-Etudiant */
CREATE TABLE LivresEmpruntés (livre VARCHAR(20), emprunteur T-Personne) ;
/* création d'une table de tuples structurés (non 1NF) */
INSERT INTO LivresEmpruntés VALUES ('SQL3', T-Person (11111111, 'Rochat', 'Philippe', 'Rue
des oiseaux, 1, Morges')
/* insertion d'un tuple structuré dont l'attribut emprunteur est de type T-Personne */
INSERT INTO LivresEmpruntés VALUES ('Les Bases de Données', T-Etudiant (22222222,
'Muller', 'Annie', 'Rue du marché, 22, Renens', 'HEC', 'master')
/* insertion d'un tuple structuré dont l'attribut emprunteur est de type T-Etudiant */
Dans le cas d'une hiérarchie de types, une nouvelle condition permet de tester le type d'une valeur.
La condition élémentaire :