Академический Документы
Профессиональный Документы
Культура Документы
Bases de Données OO
4.1 Avantages et inconvénients du modèle relationnel
4.2 Relationnel – Objet
4.3 Mapping E-A/UML vers Relationnel-Objet
4.4 Implémentation du Relationnel-Objet
4.5 Exemples d’applications
4.1 Avantages du modèle Relationnel
Syntaxe :
Type nom_type : collection de <type_objet>
Exemple :
Type prenoms : Collection de <Chaine>
Type liste_telephones : Collection de <Entier>
Remarque :
Les objets d'une collection peuvent être d'un type utilisateur.
Type adresse : <num, rue, ville>
Type liste_adresse : collection de <adresse>
En relationnel :
Livre (ISBN:entier, titre:chaîne, soustitre:chaîne, edition:chaîne,
annee:entier)
Auteur (id:entier, nom:chaîne, prenom:chaîne)
Motscles (livre=>Livre, motcle=>Motcle) Motcle (motcle:chaine)
AuteursLivres (idauteur=>Auteur, ISBN=>Livre)
En Relationnel-Objet (version 1)
Type Titre : <titre, soustitre>
Type Edition : <titre, soustitre>
Type Auteur : <nom, prenom>
Type Liste_motscles : collection de <chaîne>
Type Liste_auteurs : collection de <Auteur>
Livre (ISBN, titre:Titre, edition:Edition, motscles:Liste_motscles,
auteurs:Liste_auteurs)
Fotsing Talla Bernard, PhD Bases de Données Avancées I 100
4.2 Relationnel - Objet
Ici l'entité auteur devient une propriété des livres et non un objet
défini indépendamment dans le schéma de donnée
Ce n’est pas souhaitable et on préfèrera conserver l'entité auteur.
Mais le choix est aisé s’il existe au préalable un schéma conceptuel
En Relationnel-Objet (version 2)
Type Titre : <titre, soustitre>
Type Edition : <titre, soustitre>
Type Liste_motscles : collection de <chaîne>
Type Liste_auteurs : collection de <Number>
Livre (ISBN, titre:Titre, edition:Edition, motscles:Liste_motscles,
auteurs:Liste_auteurs)
Auteur (id:entier, nom:chaîne, prenom:chaîne)
L’utilisation des collections permettent de se débarrasser des
relations n-m
Boolean
Array
Row
Héritage de types
CREATE TYPE sous_type UNDER sur_type (
Déclarations spécifiques ou surcharges
)
Tables imbriquées (Nested tables) : Implémentation des
collections sous forme de tables imbriquées.
--Création d'un type abstrait d'objet
CREATE TYPE nom_type AS OBJECT (...);
Remarque : Méthodes
Si le type sur lequel s'appuie la création de la table défini des
méthodes, alors les méthodes seront associées à la table.
Remarque : Contraintes
Il est possible, sur une table ainsi définie, de spécifier les mêmes
contraintes que pour une table créée avec une clause CREATE
TABLE (contraintes de table).
Ces contraintes doivent être spécifiées au moment de la création de
la table, et non au moment de la création du type. (bien que la
définition d'objet permet de spécifier des contraintes du type NOT
NULL, etc.)
Insertion d'objets
La manipulation de données est étendue pour assurer la gestion
des objets et des collections.
TITRE COLUMN_VALUE
-----------------------------
UML2.4 1
UML2.4 2
SELECT t1.Titre, t3.Nom
FROM tLivre t1, TABLE(t1.fkAuteurs) t2, tAuteur t3
WHERE t2.COLUMN_VALUE=t3.Id;
TITRE NOM
-----------------------------
UML2.4 GARDARIN
UML2.4 FEVRE
Manipulation d'OID
Une table d'objets, i.e. créée depuis un type, dispose d'un OID pour
chacun de ses tuples.
Cet OID est accessible depuis la syntaxe REF dans une requête SQL
Syntaxe : REF
SELECT REF(alias)
FROM nom_table alias
Exemple : OID
0000280209DB703686EF7044A49F8FA67530383B36853DE7106B
C74B6781275ABE5A553A5F01C000340000