Bases de données orientées-objets 12d. SQL3 Yves Pigneur Stéphane Rey Ecole des HEC Université de Lausanne CH-1015 Lausanne yves.pigneur@hec.unil.ch (+41 21) 692.3416 Identifiant Dépendance fonctionnelle Fromes normales Normalisation
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
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
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
Le besoin de types de données multimédia ABC123 Temps 1996 HEC Lausanne - 1999
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
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
Le modèle objet-relationnel (3) Polymorphisme Types utilisateurs Collections RELATIONNEL Domaine Table Attribut Clé Référence Opérations Identifiant Héritage HEC Lausanne - 1999
Le modèle objet-relationnel (4) Police ... Conducteurs Accidents 9876 Conducteur Age Paul 19 Louise 37 Date HEC Lausanne - 1999
Vue d'ensemble de SQL3 (1) HEC Lausanne - 1999
Vue d'ensemble de SQL3 (2) HEC Lausanne - 1999
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
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
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 JOUR-OUVERT (LUN, MAR, MER, JEU, VEN); HEC Lausanne - 1999
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)); Un type avec référence à un objet: CREATE TYPE VOITURE (NUMERO CHAR(9), COULEUR VARCHAR, PROPRIETAIRE REF(PERSONNE)); CREATE TYPE PHONE WITH OID VISIBLE (PAYS VARCHAR, ZONE VARCHAR, NOMBRE INT, DESCRIPTION CHAR(20)); HEC Lausanne - 1999
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) CREATE TYPE PERSONNE WITH OID VISIBLE (NSS INT, NOM VARCHAR, PRENOMS LIST(VARCHAR), TEL SET(PHONE)); HEC Lausanne - 1999
SQL3 - Appel de fonctions SELECT E.NOM, AGE(E) FROM EMPLOYES E WHERE AGE(E) < 35; CREATE TABLE EMPLOYESLOC UNDER EMPLOYES WITH (ADRES ADRESSE) SELECT NOM, REPOS FROM EMPLOYELOC E WHERE DISTRICT(E.ADRES) = "MORGES" AND E.ADRES..VILLE = "BUSSIGNY" SELECT E.NOM, E..AGE() Utilisation d'une fonction pour obtenir le district. Utilisation de la notation pointée pour accéder aux attributs composés. HEC Lausanne - 1999
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
SQL3 - Recherche en collections SELECT REF(P) FROM PERSONNES P WHERE "VELO" IN SELECT * FROM TABLE (P.PASSETEMPS). PASSETEMPS SET(VARCHAR) HEC Lausanne - 1999
Conclusions ... HEC Lausanne - 1999
Relationnel vs. objet: le modèle relationnel POUR CONTRE 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. 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. ... HEC Lausanne - 1999
Relationnel vs. objet: le modèle objet POUR CONTRE Les objets permettent de représenter [plus] naturellement des entités du monde réel: 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: gestion des objets en mémoire et dans la base; performance d'accès aux objets; concurrence d'accès aux objets. ... HEC Lausanne - 1999
? Evolution des SGBD Relationnel- Relationnel objet Relationnel-objet Nouveau paradigme Relationnel- objet Relationnel Objet temps HEC Lausanne - 1999
Réflexion: application de gestion clients ? Relationnel- objet Table Table Relationnel Table Table Table Objet HEC Lausanne - 1999
Relationnel, objet, ou objet-relationnel? Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999 Complexité des requêtes Objet- relationnel Relationnel Relationnel Objet Complexité des données HEC Lausanne - 1999
? Conclusion Relationnel Objet Relationnel- objet Relationnel-objet Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999 Complexité des requêtes Relationnel Objet Relationnel- objet ? Relationnel-objet Nouveau paradigme Objet- relationnel Relationnel Relationnel Objet Complexité des données HEC Lausanne - 1999