-relationnel Cours 7 : Modèle relationnel-objet ESIL Université de la méditerranée Odile.Papini@esil.univ-mrs.fr http://pages-perso.esil.univmed.fr/ papini/
-relationnel Plan du cours 1 Introduction 2 3 -relationnel 4
-relationnel Bibliographie Livres : G. Gardarin : et relationnel. Eyrolles ed. 1999. C. J. Date : Introduction aux bases de données. (8ième edition). Vuibert ed. 2004. H. Garcia-Molina, J. D. Ullman, J. Widow : Database systems, the complete book. Prentice Hall ed. 2002. C. soutou : Programmer objet avec Oracle. Vuibert ed. Supports de cours : http ://deptinfo.unice.fr/ grin/mescours/minfo/bdavancees/supports/
-relationnel Introduction inconvénients du modèle relationnel annés 1980 : POO évolution des SGBD relationnelles vers SGBD objets idée fondamentale : augmenter le niveau d abstraction
-relationnel Modèle objet concepts fondamentaux terme objet objet immuable objet modifiable classe d objets méthode message terme traditionnel valeur variable types fonction appel notion d héritage
-relationnel nombreux travaux dans les années 1980 SGBDO : Cependant le modèle objet ne gère pas : requêtes ad hoc les vues contraintes d intǵrité déclaratives clé trangères fermeture et complétude conception de BDO n est pas indépendantes de l application
-relationnel Correspondance relationnel objet paradigmes objet et relationnel différents modèle objet est plus riche (héritage) difficultés pour faire correspondre des objets à des données de tables relationnelles
-relationnel Difficultés de passage du relationnel à l objet identité des objets traduction des associations traduction de l héritage navigation entre les objets
-relationnel Difficultés de passage du relationnel à l objet les objets persistants doivent être enregistrés dans la base relationnelle un objet a une structure complexe : représentée par un graphe le plus souvent graphe : arbre dont la racine est l objet et les fils correspondent aux valeurs des variables d innstance qui sont persistantes nécessité d aplatir le graphe pour le ranger dans la base donner relationnelle
-relationnel Le modèle objet-relationnel extension du modèle relationnel avec des notions qui comblent les plus grosses lacunes du modèle relationnel compatibilité ascendante : ce qui fonctionne pour le modèle retationnel fonctionne dans le modèle objet-relationnel norme SQL 99 (SQL 3)
-relationnel Pouriquoi ètendre le modèle relationnel la reconstruction d objets complexes éclatés en tables relationnelles est très coûteuse : nombreuses jointures pour échapper aux jointures, le le modèle objet-relationnel permet : les références : implantation de structures complexes attributs multivalués (listes, ensembles, tableaux) utilisation de références facilite l utilisation de données très volumineuses du multimédia en permettant leur partage à moindre coût (sans jointure)
-relationnel Le modèle objet-relationnel modèle relationnel : impossibilité de définir de nouveaux types modèle objet-relationnel : possibilité de définir de nouveaux types : simples structurés fonctions et procédures associées modèle objet-relationnel : supporte l héritage de type (polymorphisme et réutilisation)
-relationnel Pourquoi ne pas utiliser les SGBDO? Avantages du modèle relationnel : facilité et efficacité des requêtes complexes dans les grandes bases de données spécification des contraintes d intégrité sans programmation théorie sous-jacente solide et normes reconnues
-relationnel Pourquoi ne pas utiliser les SGBDO? inertie de l existant : très nombreuses bases de données relationnelles utilisées pas de normalisation des SGBDO moins de souplesse pour s adapter à plusieurs applications peu d informaticiens formés aux SGBDO
-relationnel Le modèle objet-relationnel Nouvelles possibilités : définition de nouveaux types complexes avec fonctions de manipulation une colonne peut contenir une collection : liste, ensemble, ligne considérée comme un objet avec un identificateur OID utilisation de références aux objets extension de SQL : SQL3 (ou SQL99) recherche et manipulation des données
-relationnel Le modèle objet-relationnel Inconvénients du modèle objet-relationnel : ne s appuie pas sur une théorie solide comme le modèle relationnel pas de standardisation : implantations différentes, partielles dans les SGBD
-relationnel A jout de nouveaux types nouveaux types prédéfinis à la norme SQL : référence collection LOB (objets de grande taille) types définis par l utilisateur : types distincts types structurés
-relationnel Types distincts pour mieux différencier les domaines des colonnes formés à partir des types de base s utilisent avec les mêmes instructions que le type de base sous jacent CREATE TYPE CODEPAYS as char(2) ; CREATE TYPE MATRICULE as integer ;
-relationnel Types structurés correspondent aux classes de la POO peuvent contenir des : constructeurs attributs (variables d instances) fonctions et procédures (méthodes) les membres peuvent être : public protected private fonctions et procédures peuvent être écrites en SQL ou autre langage
-relationnel Types structurés syntaxe semblale à celle de la création d une table CREATE TYPE DEPT TYPE as OBJECT (NUM DEP integer, NOM DEP varchar(30), LIEU varchar(30)); un type peut contenir une contrainte d intégrité redéfinition d un type s il existe déja : CREATE or REPLACE TYPE
-relationnel Fonctions dans les types CREATE TYPE DEPT TYPE AS OBJECT (NUM DEP integer, NOM DEP varchar(30), LIEU varchar(30), MEMBER FUNCTION get LIEU RETURN varchar) ; CREATE TYPE BOBY DEPT TYPE AS end ; MEMBER FUNCTION get LIEU RETURN IS begin return LIEU ; end;
Héritage Introduction -relationnel les types supportent l héritage multiple avec le mot-clé UNDER un type est final par défaut CREATE TYPE EMPLOYE TYPE AS OBJECT (MATR integer, NOM varchar(30), SAL numeric(8,2)), NOT FINAL; CREATE TYPE COMMERCIAL TYPE UNDER EMPLOYE TYPE (COMM numeric(8,2)), NOT FINAL;
-relationnel Ajout d un attribut à un type ALTER TYPE EMPLOYE TYPE ADD ATTRIBUTE DATE NAISSANCE DATE CASCADE ; CASCADE : propagaton aux tables déja construites à partir du type
-relationnel Ajout d une méthode à un type ALTER TYPE EMPLOYE TYPE ADD MEMBER FUNCTION AGE RETURN INTEGER CASCADE ;
-relationnel Types de ligne notion de type de ligne correspond aux structures du langage C : ensemble non encapsulé d attributs un type peut être nommé ou non
-relationnel Type de ligne non nommé CREATE TABLE EMP (NOM E VARCHAR(15), ADRESSE ROW(NUMERO INTEGER, RUE VARCHAR(25), ));
-relationnel Type de ligne nommé CREATE ROW TYPE ADRESSE T (NUMERO INTEGER, RUE VARCHAR(25), )); ce type peut être utilisé pour : une déclaration d attribut une création de table àpartir de ce type
-relationnel Vues du dictionnaire des données USER TYPES : pour les types USER TYPES ATTRS : pour les attributs des types USER TYPES METHODS : pour les méthodes des types USER OBJECT TABLES : pour les tables objet-relationnelles sous SQLPLUS de Oracle : DESCRIBE DEPT TYPE
-relationnel Création de tables à partir de types les données d un type ne sont persistantes que si elles sont rangées dans une table la création de tables peut se faire comme en SQL (standard) la création de tables peut se faire à partir dun type de donées
-relationnel Création de tables à partir d un type le type EMPLOYE TYPE CREATE TYPE EMPLOYE TYPE AS OBJECT (MATR integer, NOM varchar(30), SAL numeric(8,2)); la création d une tableà partir de type et spécification des contraintes d intǵrité : CREATE TABLE EMPLOYE OF EMPLOYE TYPE (PRIMARY KEY MATR);
-relationnel Héritage de tables une table peut hériter d une ou plusieurs tables pas supporté par ORACLE 10g
-relationnel Création de tables à partir d un type dérivé CREATE TABLE COMMERCIAUX OF COMMERCIAL TYPE (CONSTRAINT PK COM PRIMARY KEY (MATR));
-relationnel Caractéristiques d un table objet-relationnel une table est une table objet-relationnelle si elle a été construite à partir d un type : CREATE TABLE OF les lignes de ces tables sont considérées comme des objets avec un identifiant (OID) on peut utiliser des références pour désigner les lignes de ces tables pas possible pour les autres tables vues du dictionnaire des données : USER OBJECT TABLES : pour les tables objet-relationnelles
-relationnel Insertion de données ajout des données comme pour des tables relationnelles INSERT INTO COMMERCIAUX (MATR, NOM, SAL, COMM) VALUES (365, TOTO, 3000,500);
-relationnel Insertion avec constructeur utilisation d un constructeur du type avec lequel la table a été construite INSERT INTO EMPLOYE VALUES ( EMPLOYE TYPE(365, TOTO, 3000,500)); si le type est un type utilisé par un autre type, l utilisation du constructeur du type est obligatoire
-relationnel Modifications de données utilisation de la notation pointée UPDATE EMPLOYE SET EMPLOYE.SAL = 2800 WHERE EMPLOYE.NOM = TITI ; SQL 99 fournit la notation.. pour désigner un attribut d une colonne d un type structuré UPDATE EMPLOYE SET EMPLOYE.ADRESSE.. NUMERO = 18 WHERE EMPLOYE.NOM = TITI ;
-relationnel Appel de procédure ou fonction E.NOM, age(e) FROM EMPLOYE E WHERE age(e) < 40; sous ORACLE SELECT E.NOM, E.age() FROM EMPLOYE E WHERE E.age(E) < 40;
Références Introduction -relationnel On peut indiquer la définition d u type qu un attribut contient des références (pas des valeurs) à des données dun autre type CREATE TYPE EMPLOYE TYPE AS OBJECT (MATR integer, NOM varchar(30), SAL numeric(8,2)), DEPT REF DEPT TYPE);
-relationnel SELECT avec références La notation pontée permet de récupérer les attributs d un type dont on a un pointeur lieu de travail des employés sous SQL 99 SELECT NOM, E.DEPT LIEU FROM EMPLOYE E; avec ORACLE SELECT NOM, E.DEPT.LIEU FROM EMPLOYE E;
-relationnel INSERTIONS avec références pointeur NULL INSERT INTO EMPLOYE VALUES (1546, TITI, NULL); référence vers le DEPT numéro 10 INSERT INTO EMPLOYE (MATR, NOM, DEPT) SELECT 1830, TOTO, REF(d) FROM DEPT d WHERE DEPT.NUM DEPT = 10;
-relationnel MODIFICATIONS avec références UPDATE EMPLOYE SET DEPT = (SELET REF(d) FROM DEPT d WHERE NUM DEPT =10) WHERE MATR = 1984; si DEPT de numéro 10 n existe pas le SELECT renvoie NULL pour éviter ce problème : rajouter la contrainte NOT NULL DEPT REF DEPT TYPE NOT NULL
-relationnel Contraintes sur les références le type REF DEPT TYPE restreint le type référencé mais pas la table référencée cette référencé peut référencer une valeur de n importe quelle colonne de table qui a le type DEPT TYPE la clause SCOPE restreint la colonne référencée, elle peut être ajoutée lors de la définition d une table DEPT REF DEPT TYPE SCOPE IS DEPT TABLE ; DEPT référence une ligne de la table DEPT TABLE (pas une ligne d une autre table)
-relationnel Référence perdue SCOPE ne suffit pas pour imposer une contrainte stricte la référence peut être perdue : ne pas correspondre à une ligne existante pour éviter les références perdues SCOPE doit être remplacé par une contrainte REFERENCES (comme avec des tables relationnelles) DEPT REF DEPT TYPE REFERENCES DEPT TABLE ;
-relationnel Types de collections Représentation d une colonne multivaluée : utilisation des collections ensembles (pas de doublons) sacs (avec doublons) listes (ordonnées et indexées par un entier) d autres types de collections peuvent être ajoutées par les SGBD
-relationnel Exemple de collections CREATE TYPE EMPLOYE TYPE (MATR integer, NOM varchar(30), PRENOMS LIST (varchar(15)), ENFANTS SET(personne), );
-relationnel Utilisation d une collection on peut utiliser une collection comme une table en la faisant précéder par le mot-clé TABLE SELECT NOM FROM EMPLOYE E WHERE NOM IN (SELECT * FROM TABLE (E.PRENOMS)); on peut faire afficher une collection comme un tout SELECT NOM, PRENOMS FROM EMPLOYE ;
-relationnel Les collections avec ORACLE 10g ORACLE 10g n offre que 2 types de collections : table imbriquée (NESTED TABLE) : collection on-ordonnée et non limitée en nombre d éléments tableau prédimensionné (VARRAY) : collection d éléments de même type, ordonnée et limitée en taille
-relationnel Tables imbriquées une table relationnelle (pas nécessairement objet-relationnelle) peut contenir une ou plusieurs tables imbriquées table imbriquée (NESTED TABLE) : collection on-ordonnée et non limitée en nombre d éléments tableau prédimensionné (VARRAY) : collection d éléments de même type, ordonnée et limitée en taille