Bases de données orientées-objets

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Benoît Piranda Équipe SISAR Université de Marne La Vallée Bases de données Algèbre relationnelle, opérations Requêtes SQL.
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Classe : …………… Nom : …………………………………… Date : ………………..
Systèmes de Gestion de Bases de Données Orientés Objet
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Fonctionnalités des SGBD
Algèbre relationnelle
ACCESS Découverte.
Optimisation de Requêtes
Bases de données orientées-objets
TECHNIQUES DES SGBDO 1. Qu'est-ce qu'un SGBDO ?
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
Introduction à la POO: Les classes vs les objets
Les fonctions.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Développement d’applications web
SQL (1) Exercices - Enoncés
Contrôles d'accès aux données
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Principes de la technologie orientée objets
Modèle Entité-Association (1) Exercices - Enoncés
Initiation aux bases de données et à la programmation événementielle
Modélisation E/R des Données
Bases de données et SGBD relationnels
MIGRATION DE DONNÉES la méthode générale
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Complément Le diagramme des classes
SYSTEMES D’INFORMATION
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Projet Génie Logiciel & UML, Bases de Données & Interfaces
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
Cours de Base de Données & Langage SQL
Notre calendrier français MARS 2014
Management of Information Technology - e-business
Chapitre 3 Syntaxe et sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Initiation aux bases de données et à la programmation événementielle
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Structures des données
Introduction.
Chapitre 5 : Le langage SQL
CALENDRIER-PLAYBOY 2020.
BD Relationnelles versus BD Objets Fariza Tahi
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
Algorithmique et programmation (1)‏
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
Optimisation de requêtes
1 G. Gardarin Optimisation de Requêtes  1. Introduction  2. Arbres relationnels  3. Restructuration algébrique  4. Modèle de coût  5. Choix du meilleur.
Le modèle de l'ODMG 1. Contexte 2. Le modèle de l'ODMG et ODL
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Séance /10/2004 SGBD - Approches & Principes.
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
Introduction SGDBOO Sommaire Définition d’un SGBD (6 services)
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
Transcription de la présentation:

Bases de données orientées-objets 3. ODMG, ODL, et OQL Yves Pigneur Stéphane Rey Ecole des HEC Université de Lausanne CH-1015 Lausanne yves.pigneur@hec.unil.ch (+41 21) 692.3416

Agenda Introduction à l'ODMG: ODL: OQL: Exercices contenu de la proposition; architecture d'un SGBDO; ... ODL: exemple de type ODL. OQL: objectifs; accès à partir d'objets nommés; sélection avec qualification; Exercices HEC Lausanne - 1999

ODMG (Object Database Management Group) www.odmg.org Objectifs de l'ODMG: Réaliser l'équivalent de la norme SQL pour les bases de données objets. Permettre l'utilisation directe des types des langages objet. Définir un modèle abstrait de définition de bases de données objet, mis en oeuvre par un langage appelé ODL (Object Definition Language). Adapter le modèle à un langage objet particulier: C++; Smalltalk; Java. Proposer un langage d'interrogation: OQL (Object Query Language). HEC Lausanne - 1999

Contenu de la proposition ODL - Object Definition Language Langage de définition de schéma des bases de données objet proposé par l'ODMG. (Equivalent des DDL - Data Definition Language des SGBD.) OQL - Object Query Language: Langage d'interrogation de bases de données objet proposé par l'ODMG, basé sur des requêtes SELECT proches de celles de SQL. OML - Object Manipulation Language: Langage de manipulation intégré à un langage de programmation objet permettant la navigation, l'intérrogation (OQL) et la mise à jour de collections d'objets persistants, dont l'OMG propose trois variantes: OML C++, OML Smalltalk, et OML Java. HEC Lausanne - 1999

Architecture d'un SGBDO conforme à l'ODMG Editeur de classes Manipulateur d'objets Bibliothèques graphiques Débogueur, éditeur Persistance Identification Accès Concurrence Fiabilité Sécurité Outils interactifs OML OQL ODL Gérant d'objets HEC Lausanne - 1999

Lien avec les langages de programmation Déclaration en ODL ou LP ODL Application source en LP Pré-compilateur de déclarations Compilateur du LP ODBMS Runtime Application binaire Editeur de liens Exécutable HEC Lausanne - 1999 * LP - Langage de Programmation

Object Definition Language ODL ODL est un langage pour décrire le schéma des bases de données objet. ODL définit les types d'objet que l'on peut implémenter dans de nombreux langages de programmation: ODL n'est pas lié, ni à la syntaxe, ni à la sémantique d'un langage de programmation. ODL est basé sur IDL, le Interface Definition Langage de l'OMG: www.omg.org pour plus d'information. HEC Lausanne - 1999

ODL - Déclaration d'un type (1) Exemple simplifé Employe Section nom numero id salaire embaucher est_enseigne_par Professeur licencier Prof grade enseigne distinctions HEC Lausanne - 1999

ODL - Déclaration d'un type (2) interface Professeur:Employe{ extent professeurs; attribute enum grade {titulaire, vacataire, assistant}; relationship Set<Section> enseigne inverse Section::est_enseigné_par; } Professeur grade distinctions est_enseigne_par Prof enseigne Déclaration en ODL ou PL ODL Pré-compilateur de déclarations HEC Lausanne - 1999

Object Query Language Permettre un accès facile à une base objet; OQL Permettre un accès facile à une base objet; offrir un accès non procédural pour permettre des optimisations automatiques (ordonnancement, index, ...); garder une syntaxe proche de SQL; rester conforme au modèle de l'ODMG; permettre de créer des résultats littéraux, objets, collections, ...; supporter des mises à jour limitées via les opérations sur objets, ce qui garantit le respect de l'encapsulation. HEC Lausanne - 1999

Schéma de travail (exemples OQL) Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999 HEC Lausanne - 1999

Accès à partir d'objets nommés (Q) MAVOITURE.COULEUR (R) LITTERAL STRING (Q) MAVOITURE.APPARTIENT.NOM (R) LITTERAL STRING Nous appelons de telles requêtes des extractions d'objets. HEC Lausanne - 1999

Sélection avec qualification (Q) SELECT B.NOM, B.PRENOM FROM B IN BUVEURS WHERE B.TYPE = "GROS" (R) LITTERAL BAG<STRUCT<NOM: STRING, PRENOM: STRING>> Une collection non ordonnée, qui accepte les doubles HEC Lausanne - 1999

Expression de jointures (Q) SELECT B.NOM, B.PRENOM FROM B IN BUVEURS, E IN EMPLOYES WHERE B.NSS = E.NSS AND B.TYPE = "GROS" (R) LITTERAL BAG<STRUCT<NOM: STRING, PRENOM: STRING>> Jointure HEC Lausanne - 1999

Parcours d'associations multivaluées Une association multivaluée est une association de type [1:N] ou [M:N]. (Q) SELECT B.NOM, B.PRENOM FROM B IN BUVEURS, V IN B.BOIRE WHERE V.CRU = "VOLNAY" (R) LITTERAL BAG<STRUCT<NOM: STRING, PRENOM: STRING> Héritage HEC Lausanne - 1999

Sélection d'une structure en résultat (Q) SELECT STRUCT(NAME: B.NOM, CITY: B.HABITE.VILLE) FROM B IN BUVEURS WHERE B.TYPE = "GROS" (R) LITTERAL BAG<STRUCT(NAME, CITY)> (Q) SELECT DISTINCT(NAME: B.NOM, CITY: B.HABITE.VILLE) FROM B IN BUVEURS WHERE B.TYPE = "GROS" (R) LITTERAL SET<STRUCT(NAME, CITY)> Une collection non ordonnée, sans double HEC Lausanne - 1999

Calcul de collections en résultat (Q) LIST(SELECT STRUCT(NOM: B.NOM, VILLE: B.HABITE.VILLE) FROM B IN BUVEURS WHERE B.NOM = "DUPONT") (R) LITTERAL LIST <STRUCT(NOM, VILLE)> Une collection ordonnée, qui accepte les doubles HEC Lausanne - 1999

Application de méthodes en qualification et en résultat (Q) SELECT DISTINCT E.NOM E.HABITE.VILLE, E.AGE() FROM E IN EMPLOYES WHERE E.SALAIRE > 10000 AND E.AGE() < 30 (R) LITTERAL SET <STRUCT> AGE() est une méthode HEC Lausanne - 1999

Imbrication de SELECT en résultat (Q) SELECT DISTINCT STRUCT (NOM: E.NOM, INF_MIEUX: LIST ( SELECT I FROM I IN E.INFERIEUR WHERE I.SALAIRE > E.SALAIRE)) FROM E IN EMPLOYES (R) LITTERAL SET <STRUCT (NOM: STRING, INF_MIEUX: LIST <EMPLOYES>) HEC Lausanne - 1999

Création d'objets en résultat (Q) EMPLOYE (SELECT STRUCT (NSS: B.NSS, NOM: B.NOM, SALAIRE: 4000) FROM B IN BUVEURS WHERE NOT EXIST E IN EMPLOYES: E.NSS=B.NSS) (R) BAG <EMPLOYES> inséré dans EMPLOYES Création d'objets HEC Lausanne - 1999

Quantification de variables (Q) FOR ALL P IN EMPLOYES: P.AGE < 100 (R) Retourne vrai si tous les employés ont moins de 100 ans. HEC Lausanne - 1999

Quantificateur existentiel (Q) EXISTS V IN SELECT V FROM V IN VOITURES, B IN V.APPARTIENT WHERE V.MARQUE = "RENAULT": B.AGE() > 60 (R) Retourne vrai s'il existe une voiture de marque Renault, possédée par une personne de plus de 60 ans. HEC Lausanne - 1999

Calcul d'agrégats et opérateur GROUP BY (Q) SELECT E FROM E IN EMPLOYES GROUP BY ( BAS: E.SALAIRE < 7000, MOYEN: E.SALAIRE >= 7000 AND E.SALAIRE < 21000 HAUT: E.SALAIRE >= 21000) (R) STRUCT<BAS: SET(EMPLOYES), MOYEN: SET(EMPLOYES), HAUT: SET(EMPLOYES)> HEC Lausanne - 1999

Expression de collections: tri (Q) SELECT E.NOM, E.SALAIRE FROM E IN EMPLOYES WHERE E.SALAIRE > 21000 ORDER BY DESC E.SALAIRE (R) BAG<STRUCT(NOM: STRING, SALAIRE: DOUBLE)> HEC Lausanne - 1999

Schéma de travail (questions OQL) Le magazine Economics produit, reproduit, et vend des rapports sur les plus grandes sociétés du monde. Un rapport à un numéro d'identification, une catégorie, un résumé, et une date de publication. Chaque rapport est composé d'un certain nombre de chapitres, qui ont à leur tour un numéro d'identification, un résumé, un auteur, et une date de publication. Un chapitre peut se retrouver dans plusieurs rapports. L'Economics vend ses rapports à des personnes pour lesquelles il connaît leur numéro de sécurité sociale, leur nom, leur prénom, et leur date de naissance. Personne nss nom prenom datenais Age() Rapport id categorie resume datepub ... Chapitres id resume auteur datepub ... Achète ComposéDe * * * * EstAcheté Compose HEC Lausanne - 1999

Question 1 Quelle est la liste de tous les rapports achetés par John? Personne nss nom prenom datenais Age() Rapport id categorie resume datepub ... Chapitre id resume auteur datepub ... Quelle est la liste de tous les rapports achetés par John? (Q) SELECT R.ID FROM R IN RAPPORT, P IN R.ESTACHETE WHERE P.NOM = "JOHN" (R) BAG<ID: STRING> Achète ComposéDe * * * * EstAcheté Compose HEC Lausanne - 1999

Question 2 Personne nss nom prenom datenais Age() Rapport id categorie resume datepub ... Chapitre id resume auteur datepub ... Quels sont les chapitres, dans l'ordre, qui composent le rapport ID=1234? (Q) LIST(SELECT C.ID FROM C IN CHAPITRE, R IN C.COMPOSE WHERE R.ID="1234") (R) LIST<ID: STRING> Achète ComposéDe * * * * EstAcheté Compose HEC Lausanne - 1999

Question 3 Est-ce que John a acheté le rapport ID=1234? Personne nss nom prenom datenais Age() Rapport id categorie resume datepub ... Chapitre id resume auteur datepub ... Est-ce que John a acheté le rapport ID=1234? (Q) EXIST R IN SELECT R FROM R IN RAPPORT, P IN R.ESTACHETE WHERE R.ID="1234": P.NOM="JOHN" (R) ["Vrai""Faux"] Achète ComposéDe * * * * EstAcheté Compose HEC Lausanne - 1999

Question 4 Personne nss nom prenom datenais Age() Rapport id categorie resume datepub ... Chapitre id resume auteur datepub ... Achète ComposéDe * * * * EstAcheté Compose Quels sont les noms des employés qui gagnent plus de 100'000.- par année, et qui ont acheté le rapport ID=9876? (Q) SELECT E.NOM FROM E IN EMPLOYES, R IN EMPLOYE.ACHETE WHERE E.SALAIRE > 100000 : R.ID = "9876" Employe salaire dateentree datesortie ... HEC Lausanne - 1999