Standard ODMG
Transcription
Standard ODMG
Standard ODMG Plan Introduction Architecture des BDOO (ODMG) Le modèle de données Le langage de définition des objets Le langage de manipulation des objets Liaison avec les langages de programmation Architecture SGBD ODMG Composants de l'architecture Source de l'application dans un langage de programmation Déclaration en ODL Compilateur du langage de programmation Processeur Des déclarations Execution du méta-données SGBDOO Binaire de l'application Editeur de lien BD Accés aux données Execution de l'application Le Modèle Objet (ODMG) Propriétés du modèle Modèle basé sur des objets (avec des identifiants) Objets organisés dans des types (ayant même comportement) Comportement d'un type défini par un ensemble d'opérations exécutables sur un objet du type Etat d'un objet défini par les valeurs de l'objet pour un ensemble de propriétés (attributs) Des noms significatifs peuvent être associés aux objets. Le même objet (avec un identifiant) peut avoir plusieurs noms significatifs Signatures d'opérations Nom de l'opération Nom et type de chaque argument Nom et type des valeurs retournées Noms des exceptions (conditions d'erreur) Signatures d'attributs Nom de l'attribut Type de ces valeurs Le Modèle Objet (ODMG) Propriétés du modèle (…) Les objets d'un type participent à des relations spécifiées par des signatures Une signature définit Type des autres objets participant à la relation Nom d'une fonction de traverse (fonction inverse) Relations sont binaires Les types d'objets sont reliés dans un graphe de sous-type/surtype Un ensemble "extent" peut être défini pour contenir les instances d'un type Les instance individuelles d'un type peuvent être identifiables de manière unique par les valeurs d'un ensemble d'attributs (e.g. clés du modèle relationnel) Le Modèle Objet (ODMG) Propriétés du modèle (…) Structures Eqivalent à Record et Struct des langages de programmation Emplacements nommés (correspondant à objets ou valeurs de type donné) Collections (contient un nombre arbitraire d'instances de même type) Deux sous-arbres distincts Objet a un identifiant peut être partagé ou référencé par d'autres objets Littéral Identité définie par la valeur du littéral Immuable (Immutable) et ne peuvent changer de valeur Le Langage de définition d'objet ODL Propriétés du langage ODL suit la syntaxe de OMG Est basé sur le langage IDL (Interface definition langage) Permet à une base de données d'être partagée par plusieurs langages de programmation SA syntaxe est influencée par le langage C++ Le Modèle Objet (ODMG) Hiérarchie des types de ODMG Objet_dénotable Littéral Objet Objetatomique Objetstructuré Type Structure <e1:T ….en:Tn> Exception Collection<T> Itérateur Set<T> Bag<T> List <T> String Bitstring Array <T> Littéralatomique Littéralstructuré Le Modèle Objet (ODMG) Hiérarchie des types de ODMG Objet_dénotable Littéral Objet Littéralatomique Littéralstructuré Integer Collection immuable <T> Character Boolean Immutable Structure <e1:T1 … en:Tn> Float Immutable Set<T> Date Enumeration Immutable Bag<T> Immutable List <T> String Bitstring Time Date Time Immutable Array <T> Interval Le Langage de définition d'objet ODL Exemple de schéma a_pour_requis préreq Employé Cours nom Id salaire nom numéro créer supprimer embaucher licencier Etudiant nom Id résidence est_requis_pour Professeur Assistant inscrire abandon sections est_section_de suit Section inscrit a_pour_sections est_suivi_par ISA numéro grade distinctions encadre a_pour-PA enseigne pa est_enseigné_par Lien multi-valué prof Le Langage de définition d'objet ODL Exemple de schéma ODL Cours interface Cours { extent cours; keys nom, numéro; attribut string nom; attribut string numéro; relationship List<Section> a_pour_sections inverse Section:: est_section_de; relationship Set<Cours> est_pré_requis_pour inverse Cours:: a_pour-pré_requis; créer (in semestre) raises (déja_crée); supprimer(in semestre) raises (pas_crée); } Le Langage de définition d'objet ODL Exemple de schéma ODL Section interface Section { extent sections; keys (est_section_de, numéro); attribut string numéro; relationship Professeur est_enseigné_par inverse Professeur:: enseigne; relationship PA a_pour_PA inverse PA:: encadre; relationship Cours est_section_de inverse Cours :: a_pour_section; relationship Set<Etudiants> est_suivi_par inverse étudiant :: suit; ….. } Employé interface Employé { extent employés; keys (nom, Id); attribut string nom; attribut integer Id; attribut integer salaire_mensuel; embaucher(in Personne); licencier(in Employé) raises(employé_inconnu) } Le Langage de définition d'objet ODL Exemple de schéma ODL Professeur ISA Enumération interface Professeur : Employé{ extent professeurs; attribut enum grade {titulaire,associé,assistant}; attribut string nom; attribut string numéro; relationship Set<Section> enseigne inverse Section:: est_enseigné_par distinctions () raises (inéligible); } PA interface PA : Employé, Etudiant{ extent assistants; relationship Section encadre inverse Section a_pour_PA; …… } Le Langage de définition d'objet ODL Exemple de schéma ODL Etudiantr interface Etudiant { extent Etudiants; key nom, Id attribut string nom; attribut string Id; attribut struct<string Université, string numéro_pièce, string adresse>; relationship Set<Section> suit inverse Section:: est_suivi_par; inscrit_au_cours(in Cours, in Section) raises (pré_req insatisfait, section_pleine, cours_plein) supprimer_cours(in Cours) raises (pas_inscrit_dans-cours) ….. } Le Langage de requêtes objets : OQL Propriétés du langage OQL est fondé sur le modèle objet ODMG qui définit sa sémantique est un langage déclaratif N'assure pas la complétude de programmation Est optimisable a une syntaxe basée sur SQL permet d'autres syntaxes qui ont pour objectif la fusion avec les langages de programmation (exemple C++) fournit des primitives de haut niveau qui manipulent les collections et les types structurés ne fournit pas d'opérations de mise à jour, mais s'appuie sur les méthodes définies sur les objets. Le Langage de requêtes objets : OQL Exemples de requêtes Prédicat appliqué à une collection Ensemble des âges de toutes personnes appelées Pat Select distinct x.âge from x in Personnes where x;nom = "Pat" Résultats : un littéral de type set<integer> Construction d'un structure: Select distinct struct (a: x.âge, s: x.sexe) from x in Personnes where x;nom = "Pat" Résultats : un littéral de type set<struct> Le Langage de requêtes objets : OQL Exemples de requêtes Application d'une fonction sur une collection (Pour chaque employé on construit une structure constituée de son nom et de l'ensemble de ses subordonnées à haut salaire) Select distinct struct ( nom: x.nom shs : (select y from y in x.subordonnés where y.salaire > 500.000) from x in Employés Résultats : set<struct> : set <struct (nom : string, shs : bag<employé>) Le Langage de requêtes objets : OQL Exemples de requêtes Requête à partir d'un point d'entrée (un nom d'objet) dans la base de données Requête de mise à jour (création d'un objet à identité) Président (fournit les employés qui sont présidents d'entreprise) Président.subordonnée (l'ensemble des subordonnés du président) Personnes (l'ensemble de toutes les personnes) Personne( nom:"Pat"; date_naissance: "28/3/56", salire : 100.000) Requête de mise à jour (création d'un objet sans identité) Struct (a:10, b: "Pat")
Documents pareils
Cours 4 :Introduction à l`ODMG
Implémentation du modèle abstrait
• mapping des concepts
• mapping des types
• mapping des collections
Nécessité d'adapter le modèle
• certains concepts n’existent pas dans le langage
• interface e...