Professional Documents
Culture Documents
ch1 Les Tables Imbriquées
ch1 Les Tables Imbriquées
1. Définition
Modèle Logique
Le recours aux types utilisateurs (typBureau) brise la règle de la première forme normale de
l'atomicité des valeurs d'attribut.Ce non respect de la 1NF ne pose pas de problème en
relationnel-objet car la déclaration de type permet de contrôler la structure interne des
enregistrements imbriqués.
Dans le modèle relationnel classique, le problème du non respect de la 1NF était bien l'opacité
de la structure interne des attributs ainsi constitués qui interdisait l'accès à des sous
informations extraites de la valeur de l'attribut (par exemple un attribut comprenant le nom et
le prénom ensemble interdit l'accès à l'information "nom" ou à l'information "prénom"
indépendamment). L'usage de type éclaire cette opacité et rend ainsi le respect de l'atomicité
dépassable.
En Relationnel Objet la manipulation de données est étendue pour assurer la gestion des
objets et des collections.
1
Constructeur d'objet
Pour tout type d'objet est automatiquement créée une méthode de construction, dont le
nom est celui du type et les arguments les attributs du type.
Commandes
INSERT INTO nom_table (..., attribut_type_objet, ...)
VALUES
(..., nom_type(valeur1, valeur2, ...), ...);
Exemples
INSERT INTO tIntervenant (pknom, prenom, bureau)
VALUES ('Crozat', 'Stéphane', typBureau('PG','K',256));
Commandes
SELECT alias_table.nom_objet.nom_attribut
FROM nom_table AS alias_table
Exemple
SELECT pknom, prenom, i.bureau.centre FROM tIntervenant i;
Alias obligatoire
L'accès aux objets se fait obligatoirement en préfixant le chemin d'accès par l'alias de la table et non
directement par le nom de la table.
2
II Les collections imbriquées
1. Modèle logique
Les objets d'une collection peuvent être un type simple (collection de scalaire) ou un type
utilisateur (collection d'enregistrements).
a) Collection d'entiers
Type typListeTelephones : collection de <entier>
tIntervenant (#nom:char, prenom:char, ltelephones:typListeTelephones)
3
a) Gestion d'attribut multivalué par imbrication de collection de scalaires
en SQL3
Commandes
4
c) Gestion de composition par imbrication de collection d'enregistrements
Déclaration de type
CREATE TYPE nom_type AS OBJECT (
nom_attribut1 type_attribut1,
...
);
/
Création de tables d'objets (enregistrements avec OID)
CREATE TABLE t OF nom_type (
...
)
Usage des types dans les tables (modèle imbriqué)
CREATE TABLE t (
...
nom_attribut nom_type,
...
)
5
III Synthèse : enregistrement imbriqué, collection de scalaires
6
1. Insertion de collection d’objets
Exemple
La jointure entre la table principale et sa table imbriquée est implicitement réalisée, il ne faut pas la spécifier.
PKNOM COLUMN_VALUE
-------------------- ------------
Crozat 687990000
Crozat 912345678
Crozat 344231234
7
Vincent 344231235
Vincent 687990001
Lorsque la table imbriquée est une table de type scalaire (et non une table d'objets d'un type utilisateur), alors la
colonne de cette table n'a pas de nom (puisque le type est scalaire la table n'a qu'une colonne). Pour accéder à
cette colonne, il faut utiliser une syntaxe dédiée : COLUMN_VALUE.
SELECT t2.COLUMN_VALUE
FROM t t1, TABLE(t1.nt) t2;