Bases de données orientées-objets 12d. SQL3 Yves Pigneur Stéphane Rey Ecole des HEC Université de Lausanne CH-1015 Lausanne [email protected] (+41 21) 692.3416 Agenda • Forces et faiblesses du modèle relationnel: – nouveaux besoins en matière de gestion de données. • Le modèle objet-relationnel. • SQL3. • Conclusions. HEC Lausanne - 1999 2 Forces du modèle relationnel • Permet de modéliser des données adaptées à la gestion à l'aide de tables: – représentation naturelle d'ensembles. • Offre d'excellentes performances sur le transactionnel (OLTP - Online Transaction Processing). • Intègre et permet la présentation multidimensionnelle de données (OLAP Online Analysis Processing). S'est imposé comme le standard de l'industrie: – langage SQL2; – architecture client-serveur; – optimisation des requêtes (algèbre, réécriture, modèle de coûts) gestion des transactions. HEC Lausanne - 1999 3 Faiblesses du modèle relationnel • Les règles de modélisation imposées pour structurer les données sont trop restrictives. • L'absence de pointeurs visible est pénalisante et nécessite l'utilisation de jointures, opérations lourdes et coûteuses. • Le non-support de domaines composés imposé par la première forme normale de Codd est inadapté aux objets complexes. • La non intégration des opérations dans le modèle relationnel constitue un manque. HEC Lausanne - 1999 4 Le besoin de types de données multimédia Types de données ABC123 Temps 1996 HEC Lausanne - 1999 5 Le modèle objet-relationnel (1) • Type de données utilisateur: type de données définissables par l'utilisateur composé d'une structure de données et d'opérations encapsulant cette structure. SQL3 les nomme types abstraits (ADT). • Patron de collection: Type de données générique permettant de supporter des attributs multivalués et de les organiser selon un type de collection. Exemple: une liste. • Référence d'objet: Type de données particulier permettant de mémoriser l'adresse invariante d'un objet ou d'un tuple. Permet de chaîner les objets directement entre eux, sans passer par des jointures. HEC Lausanne - 1999 6 Le modèle objet-relationnel (2) • Héritage de type: Forme d'héritage impliquant la possibilité de définir un sous-type d'un type existant, celui-ci héritant alors de la structure et des opérations du type de base. • Héritage de table: Forme d'héritage impliquant la possibilité de définir une sous-table d'une table existante, celle-ci héritant alors de la structure et des éventuelles opérations de la table de base. HEC Lausanne - 1999 7 Le modèle objet-relationnel (3) OBJET Polymorphisme Types utilisateurs Opérations RELATIONNEL Domaine Table Attribut Clé Référence Collections Identifiant Héritage HEC Lausanne - 1999 8 Le modèle objet-relationnel (4) Police 9876 ... Conducteurs Conducteur Age Paul 19 Louise 37 Accidents Date HEC Lausanne - 1999 9 Vue d'ensemble de SQL3 (1) 1 le cad re SQL/ Framew ork 2 les fond ements SQL/ Found ation 3 l'interface client SQL/ CLI 4 les procéd ures stockées l'intégration aux langages classiques SQL/ PSM 5 HEC Lausanne - 1999 Une d escription non-technique d e la façon d ont le d ocument est structuré, et une d éfinition d es concepts commu ns à toutes les parties. Le noyau d e base, incluant les types d e d onnées utilisateurs et le mod èle objet-relationnel. L'interface d 'appel client permet le d ialogue client-serveur pour l'accès aux d onnées, via SQL2 puis SQL3. Le langage d e spécification d e procéd ures stockées. SQL/ Bind ings 10 Vue d'ensemble de SQL3 (2) 6 la gestion d e SQL/ Transaction transaction 7 la gestion d u temps 8 9 A bandonné l'accès aux d onnées externes l'intégration aux langages objets 10 HEC Lausanne - 1999 SQL/ Temporal SQL/ MED Une spécification d e l'interface XA pour moniteur transactionnel d istribué. Le support d u temps, d es intervalles temporels, et d es séries temporelles. L'utilisation d e SQL pour accéd er à d es d onnées non-SQL. SQL/ OBJ 11 SQL3 - Les types abstraits • CREATE [DISTINCT] TYPE <nom ADT> [<OPTION OID>] [<CLAUSE SOUS-TYPE>] [AS] (<CORPS DE L'ADT>) • La clause DISTINCT est utilisée pour renommer un type de base existant déjà. HEC Lausanne - 1999 12 SQL3 - Les types abstraits, exemples (1) • Type avec OID pouvant être utilisé comme un objet: CREATE TYPE PHONE WITH OID VISIBLE (PAYS VARCHAR, ZONE VARCHAR, NOMBRE INT, DESCRIPTION CHAR(20)); – WITH OID VISILE permet de préciser la visibilité de l'OID pour chaque instance (objet). • Type avec sous-type: CREATE TYPE ETUDIANT UNDER PERSONNE (CYCLE VARCHAR, ANNEE INT); • Type énuméré: CREATE TYPE JOUR-OUVERT (LUN, MAR, MER, JEU, VEN); HEC Lausanne - 1999 13 SQL3 - Les types abstraits, exemples (2) • Type avec OID et fonction: CREATE TYPE EMPLOYE WITH OID VISIBLE (NUM CHAR(10), DATENAIS DATE, REPOS JOUR-OUVERT, SALAIRE FLOAT, FUNCTION AGE (E EMPLOYE) RETURNS (INT) { ... } END FUNTION;); CREATE TYPE JOUROUVERT (LUN, MAR, MER, JEU, VEN); HEC Lausanne - 1999 14 SQL3 - Les constructeurs d'objets complexes • SQL3 offre les patrons de base SET(T), MULTISET(T) et LIST(T). • Un type personne avec une liste de prénoms: CREATE TYPE PERSONNE WITH OID VISIBLE (NSS INT, NOM VARCHAR, PRENOMS LIST(VARCHAR), TEL SET(PHONE)); CREATE TYPE PHONE WITH OID VISIBLE (PAYS VARCHAR, ZONE VARCHAR, NOMBRE INT, DESCRIPTION CHAR(20)); • Un type avec référence à un objet: CREATE TYPE VOITURE (NUMERO CHAR(9), COULEUR VARCHAR, PROPRIETAIRE REF(PERSONNE)); HEC Lausanne - 1999 15 SQL3 - Les tables • Création de tables: CREATE TABLE ACCIDENT (ACCIDENT INT, RAPPORT TEXT, PHOTO IMAGE); CREATE TABLE POLICE (NPOLICE INT, NOM VARCHAR, ADRES ADRESSE, CONDUCTEURS SET(CONDUCTEUR), ACCIDENTS LIST(ACCIDENT)); CREATE TABLE PERSONNES OF PERSONNE; CREATE TABLE VINSMILL UNDER VINS WITH (MILL INT, QUALITE VARCHAR) HEC Lausanne - 1999 CREATE TYPE PERSONNE WITH OID VISIBLE (NSS INT, NOM VARCHAR, PRENOMS LIST(VARCHAR), TEL SET(PHONE)); 16 SQL3 - Appel de fonctions • SELECT E.NOM, AGE(E) FROM EMPLOYES E WHERE AGE(E) < 35; SELECT E.NOM, E..AGE() • CREATE TABLE EMPLOYESLOC UNDER EMPLOYES WITH (ADRES ADRESSE) Utilisation d'une fonction pour obtenir le district. SELECT NOM, REPOS FROM EMPLOYELOC E WHERE DISTRICT(E.ADRES) = "MORGES" AND E.ADRES..VILLE = "BUSSIGNY" Utilisation de la notation pointée pour accéder aux attributs composés. HEC Lausanne - 1999 17 SQL3 - Parcours de références • CREATE TYPE VOITURE (NUMERO CHAR(9), COULEUR VARCHAR, PROPRIETAIRE REF(PERSONNE)) • CREATE TABLE VOITURES OF TYPE VOITURE • SELECT V.PROPRIETAIRE DEREF NOM FROM VOITURES V WHERE V.COULEUR="ROUGE" AND V.PROPRIETAIRE DEREF ADRESSE..VILLE = "PARIS" HEC Lausanne - 1999 18 SQL3 - Recherche en collections • SELECT REF(P) FROM PERSONNES P WHERE "VELO" IN SELECT * FROM TABLE (P.PASSETEMPS). PASSETEMPS SET(VARCHAR) HEC Lausanne - 1999 19 Conclusions ... HEC Lausanne - 1999 20 Relationnel vs. objet: le modèle relationnel POUR CONTRE • • Le modèle relationnel ne permet pas de représenter certaines entités complexes du monde réel. • Les jointures peuvent être des opérations relativement lourdes. • ... • Le modèle relationnel est adapté à un grand nombre d'applications (de gestion par exemple), qui utilisent des types simples de données. Le modèle relationnel est basé sur une théorie "scientifique" et a été mis à l'épreuve ces 15 dernières années: – travaux de Codd; – ... • Le modèle relationnel est facile à comprendre. • ... HEC Lausanne - 1999 21 Relationnel vs. objet: le modèle objet POUR CONTRE • • Les objets permettent de représenter [plus] naturellement des entités du monde réel: – gestion des objets en mémoire et dans la base; – performance d'accès aux objets; – concurrence d'accès aux objets. – objets complexes. • • Les objets offrent une plus grande souplesse pour gérer les structures de données complexes (multimedia, CAO, AGL, etc.) Les SGBDO posent un certain nombre de problèmes: • ... ... HEC Lausanne - 1999 22 Evolution des SGBD Relationnelobjet Relationnel Relationnel-objet Relationnel Objet Objet Nouveau paradigme temps HEC Lausanne - 1999 23 Réflexion: application de gestion clients ? Relationnelobjet Table Table Relationnel Table Table Table Objet HEC Lausanne - 1999 24 Relationnel, objet, ou objet-relationnel? Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999 Complexité des requêtes Relationnel Relationnel Objetrelationnel Objet Complexité des données HEC Lausanne - 1999 25 Conclusion Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999 Complexité des requêtes Relationnelobjet Objetrelationnel Relationnel Relationnel Relationnel-objet Objet Objet Relationnel Relationnel Objet Nouveau paradigme Complexité des données HEC Lausanne - 1999 26