MANIPULATION D OBJETS
Introduction Manipuler des objets à structure complexe Résultat des requêtes Identité, égalité, gestion des doubles Hiérarchie de généralisation Comportement Conclusion
LANGAGES DE MANIPULATION (LMD) LMD = outil pour manipuler efficacement des grands ensembles d objets: recherche en fonction de la valeur d attributs mise à jour Objectifs: simplicité d emploi accès optimisés Différents types de LMD: navigationnels déclaratifs visuels
LMD NAVIGATIONNELS systèmes de fichiers SGBD réseau, hiérarchique browsers fonctions: accès à un objet à la fois pointeurs courants gérés par le système accès à l objet suivant à l objet sélectionné par tel chemin d accès Inséré dans un langage de programmation
Cours Cours prof nomc cycle étudiants prérequis nomc = 'BD' BD prof nomc cycle étudiants prérequis étudiants prof nomc cycle Dubois Annie BD prof nomc cycle étudiants prérequis étudiants prérequis étudiants suivant prof nomc cycle Duval Jean BD prof nomc cycle cours.obtenus prérequis étudiants prérequis
LMD DECLARATIFS L utilisateur spécifie le quoi et non le comment. En relationnel, SQL est un standard Ecriture rapide de requêtes Optimisation par le SGBD En OO, des propositions de SQLOO divers pas de standard, ni de consensus Peu de définition complète formelle Les OQL sont beaucoup plus complexes que le SQL relationnel Fonctions de base à définir exactement: algèbre OO
LMD VISUELS Maîtriser l emploi des SQLOO ou algèbre OO est difficile outils d aide nécessaires: éditeurs langages graphiques ou visuels Modèle de données adapté: support graphique : le diagramme liens explicites Browsers visuels (navigationnels) Langages de requêtes visuels (déclaratifs)
LMD des SGBDO Les SGBDO offrent toujours une interface procédurale extensible: méthodes prédéfinies langage de programmation méthodes définies pour l application souvent un SQLOO ± complet parfois un browser visuel bientôt un langage de requêtes visuel.
EFFICACITE des LMD OO Noms, prénoms et numéros des étudiants qui suivent les cours du professeur Spaccapietra En relationnel : Select p1 nom, prénom, n E From Personne p1, Pers_prénom, Etudiant, Suit, Assure, Personne Where p1 AVS = Pers_prénom AVS And p1 AVS = Etudiant AVS And Suit n Etud = Etudiant AVS And Suit nomc = Assure nomc And Assure n prof = Personne AVS And Personne nom = Spaccapietra
EFFICACITE des LMD OO (suite) Noms, prénoms et numéros des étudiants qui suivent les cours du professeur Spaccapietra En SQL OO : Select nom, prénoms, n E From Etudiant Where Exists c in cours_suivis : c prof nom = Spaccapietra
STRUCTURE COMPLEXE Objectifs: manipuler les objets de structure complexe atteindre les attributs composants définir la structure du résultat Relationnel non première forme normale (NF2): modèles, algèbres, calculs
STRUCTURE COMPLEXE (suite) Personne nom prénom P adresse enfant n Þ ru e v ille c o d e prénom E date sexe jo u r m o is a n nom prénomp* enfant* prénome* date sexe j m a Rochat Alfred Annie 1 4 90 F Jean Marie Marc 15 2 92 M André Jean
Accès aux attributs composants notation pointée + quantificateurs personnes qui ont transmis au moins un prénom à au moins un de leurs enfants Algèbre OO : sélection [ prénomp ( enfant ( enfant prénome (prénomp =enfant prénome))) ] Personne
Accès aux attributs composants notation pointée + quantificateurs personnes qui ont transmis au moins un prénom à au moins un de leurs enfants Algèbre OO : sélection [ prénomp ( enfant ( enfant prénome (prénomp =enfant prénome))) ] Personne
Accès aux attributs composants SQL d O2 : Select p From p in Personne Where exists r in p prénomp : exists e in p enfant : exists s in e prénome: r= s notation pointée + comparateurs ensemblistes
SQL d O2 : Select p From p in Personne Where exists r in p prénomp : exists e in p enfant : exists s in e prénome: r= s notation pointée + comparateurs ensemblistes
Accès aux attributs composants (2) Tout attribut multivalué est manipulé comme une relation / classe personnes qui ont au moins une fille solution précédente: sélection [ enfant (enfant sexe = F ) ] Personne
Solution 2 : algèbre emboitée: sélection [sélection [sexe = F ] enfants =/= ø] Personne La solution 2 est plus puissante,mais elle mélange les notions de classe et d attribut.
STRUCTURER LE RESULTAT Pour chaque personne, son nom et les prénoms de ses enfants Select nom,enfant prénome From Personne La structure du résultat est une sous-structure de celle de l opérande - Pas de restructuration nom Rochat enfant* prénome* Annie Marie Marc André Jean ensemble d'ensembles
STRUCTURER LE RESULTAT (2) Pour chaque personne, son nom et les prénoms de ses enfants en vrac. Select nom, Flatten enfant prénome From Personne nom Rochat enfant_prenome* Annie Marie Marc André Jean ensemble structure du résultat différente de celle de l opérande : restructuration
Pour chaque enfant, ses parents soit la base: Personne nom prénomp* enfant* prénome* Rochat Alfred Annie Jean Marie Marc André Jean Rochat Alice Annie Marie Marc André Jean Enfant nom prénome* parent* prénomp* Rochat Annie Alfred Marie Jean Alice Rochat Marc Alfred André Jean Jean Alice
STRUCTURER LE RESULTAT (suite) Nouveaux opérateurs NEST: regroupe des attributs en un attribut complexe multivalué regroupe les valeurs / occurrences 1 forme normale NF2 UNNEST: dégroupe en supprimant un attribut complexe / multivalué multiplie les valeurs / occurrences NF2 1 forme normale
STRUCTURER LE RESULTAT (suite) unnest [enfant] Personne Enfant := nest [parent:prénomp] (unnest [enfant] Personne) nom prénomp* prénome* Rochat Alfred Jean Annie Marie Rochat Alfred Marc Jean André Jean Rochat Alice Annie Marie Rochat Alice Marc André Jean
STRUCTURER LE RESULTAT (suite) changement de type de collection: LIST-TO-SET : liste ensemble LIST-TO-BAG : liste multi-ensemble BAG-TO-SET : multi-ensemble FLATTEN : collection de collections collection ensemble
RESULTAT d une REQUÊTE Objectifs : fermeture du langage requêtes contenant des requêtes définir : une vue, un instantané (snapshot), un schéma d exportation, une modification de schéma schéma Personne (nom, prénomp*, adresse, enfant* (prénome*, sexe, date )) vues Personne1 (nom, prénomp*, adresse) Personne2 (nom, prénomp*, adresse, nb.enfants) Enfant (nom, prénome*, parent*(prénomp*, adresse))
TYPE du RESULTAT Résultat = objets, oids, valeurs? Pas de consensus SQL d O2 : oids ou valeurs Select p From p in Personne Where nom = Rochat Select Tuple (p adresse, p date) From p in Personne Where nom = Rochat
Objets TYPE du RESULTAT (suite) Quels oids pour ces objets du résultat? Select p adresse, p date From p in Personne Where nom = Rochat nouveaux oids : langage générateur d objets [Orion] oids de l opérande nouveau point de vue sur des objets existants : langage à conservation d objets solution nécessaire pour définir une vue
TYPE du RESULTAT (suite) point de vue objets oids valeurs nouvel objet requête instantané export vue modification de schéma
Langages générateurs d objets Personnes de nom Rochat r := sélection [nom = Rochat ] Personne Root Class r1 ou r2 Personne NP nom personne NP nom réalisation simple r1 n est pas une personne r2 : indirection fastidieuse
Langages à conservation d objets r := sélection [nom = Rochat ] Personne Personnes de nom Rochat naturel n := projection [nom] Personne Liste des noms des personnes NP nom adresse Personne r nom NP adresse n Personne
Langages à conservation d objets (suite) Que faire des expressions? Adresses des personnes de nom Rochat a := projection [adresse] sélection [nom = Rochat ] Personne Il faut dissocier les notions d héritage et d inclusion? de population. Personne Cocoon : hiérarchie des types + hiérarchie des classes ERC+ : sélection Lien de généralisation : inclusion + héritage Lien de dérivation : inclusion + héritage selectif a
Langages à conservation d objets Opérateurs générant de nouveaux objets Opérateurs de restructuration Enfant = nest...unnest... ( Personne ) Jointures de plusieurs classes Jointure selon lien de composition Pour chaque étudiant ses nom, prénoms, liste des noms des cours suivis
Langages à conservation d objets Jointure selon des valeurs Enseignants et étudiants de même nom Jointure emboîtée point de vue un étudiant et ses cours un enseignant et les étudiants de même nom Jointure plate nouveaux objets un étudiant + un de ses cours un enseignant + un étudiant de même nom
IDENTITE EGALITE En BDO, il y a plusieurs tests d égalité: identité (même objet) égalité de surface (même valeur) égalité de profondeur (mêmes valeurs des feuilles) Gestion des doubles Opérateurs ensemblistes
IDENTITE EGALITE Gestion des doubles Le langage doit permettre de supprimer: les doubles au sens même oid les doubles au sens même valeur SQL d Orion Select UNIQUE p From p in <collection> Select UNIQUE VALUE p From p in <collection>
OPERATEURS ENSEMBLISTES En relationnel, union, différence, et intersection portent sur des tuples de valeur. En OO, le langage doit offrir (aussi?) l union, différence, intersection selon l identité des objets. Etudiant union Enseignant Enseignant différence Etudiant Enseignant intersection Etudiant (conflit dynamique d héritage multiple)
OPERATEURS ENSEMBLISTES (suite) Personne Enseignant Etudiant Personne Union Enseignant Etudiant Différence Intersection
Hiérarchie de généralisation Que signifie accéder à la population d une classe: sa population propre sa population globale (avec sous-classes)? sélection [adresse ville = Lausanne ] Personne uniquement les personnes ni enseignantes, ni étudiantes les personnes, étudiants et enseignants compris?
Hiérarchie de généralisation SQL d Orion: Select p From p in Personne Where p adresse ville = Lausanne Select p From p in Personne* (extension profonde) Where p adresse ville = Lausanne résultat = arbre de classes
COMPORTEMENT (méthodes) Emploi de méthodes dans les requêtes Select nom, âge From Personne Select anniversaire From Personne Where date_nais = date_du_jour [Orion] Encapsulation ± Comportement des objets du résultat Select p From p in Personne Where nom = Rochat même comportement que Personne Select nom, âge From Personne âge est une méthode qui utilise l attribut date_nais! quel comportement?
Quelque Problèmes du Modèle OO Vues Objet Rappel : Objectif de la notion de vues en relationnel Définir des interfaces spécifiques aux applications Permettre ainsi une flexibilité de requête Méthodes de définition de vues en relationnel Vues calculées (par les requêtes) Vues matérialisées (Les instances existent) Difficultés des vues objet Les objets de la vue peuvent avoir des attributs et/ou des méthodes spécifiques Fournir des identifiants permanents aux objets de la vue
Quelque Problèmes du Modèle OO Mise à jour de Vues En relationnel la mise à jour de vues est un problème complexe. Exemple : l opérateur Project peut fusionner plusieurs tuples quand la totalité de la clé n est pas incluse dans les attributs de la projection ==> Une perte d information Mise à jour plus facile en OO Deux objets possédant le même état (valeurs des attributs) peuvent être différents (OIDS ne sont pas égaux) Dans les solution à conservation d objets : répercussion des modifications est automatique.
Quelque Problèmes du Modèle OO Rôles objet Rappel : la notion de rôle a été introduite en base de données pour modéliser les différentes facettes, c est à dire les différents rôles, des entité du monde réel. Pour représenter un rôle, on peut introduire des attributs ou des propriétés spécifique du rôle. Par exemple, une personne dans son rôle d étudiant a besoin d un attribut «Diplôme préparé»; la même personne dans son rôle d employé nécessite un attribut «salaire» Attention : Un rôle n est pas une entité En OO, dans les modèles sans la notion explicite de rôle, un rôle est implémenté par les entités/classes et la multi-héritage
Quelque Problèmes du Modèle OO Migration d objet Objectif : modéliser les aspects dynamiques d une entité. Par exemple au cours de sa vie, une personne peut avoir les statuts suivants (dans cet ordre ) : étudiant ---> employé ---> étudiant (thésard) ---> enseignant ---> employé ---> retraité Définir les chemins de migration qui tracent l historique des changement de nature de l entité On peut définir les classes de Chemins qui sont cohérent avec une application : Exemple : Personne ---> voiture ----> employé, n est pas cohérent Définir des contraintes sémantiques sur les chemins de migration
CONCLUSION Avantages nouveaux : puissance de l interface procédurale compatibilité LMD - langage de programmation Mais: manque d études formelles complètes comportement peu pris en compte les divers types d utilisation des requêtes sont peu étudiés
CONCLUSION En cours: normalisation du SQL OO compatibilité avec le SQL relationnel? proximité avec les langages de programmation? optimiseurs de requêtes langages logiques OO