La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Systèmes de Gestion de Bases de Données Orientés Objet Philippe SALVAN

Présentations similaires


Présentation au sujet: "Systèmes de Gestion de Bases de Données Orientés Objet Philippe SALVAN"— Transcription de la présentation:

1 Systèmes de Gestion de Bases de Données Orientés Objet Philippe SALVAN

2 Plan du Cours m Généralités ê Historique ê Aspects Bases de Données ; Aspects Orientés Objet ê Architecture m Aspects Orientés Objets ê Objet Complexe, Encapsulation, Classes ê Identité d'Objet ê Héritage ê Surcharge, Lien retardé ê Valeurs, Types m Aspects Base de Données ê Modèle de persistance ê Transactions ê Interrogations ê Optimisations m ODMG 3.0

3

4 Généralités - Historique m Besoin dorganiser de manière cohérente des données permanentes et accessibles par des utilisateurs concurrents m Gestion de Fichiers SGBD Navigationnels SGBD Relationnels SGBD Orientés Objets

5 abstraction code unique code réutilisable optimisation données fichiers SGF code unique code réutilisable optimisation données fichiers SGBD/N code unique code réutilisable optimisation données fichiersSGBD/R code unique code réutilisable optimisation données fichiersSGBD/O Généralités - Historique

6 m Limites des SGBDR ê le modèle de données est très pauvre ê la normalisation conduit à un éclatement des données ê intégration de SQL à un langage de programmation : F ensembliste vs procédural F dysfonctionnement (conversion de types)

7 Généralités - Historique m Objectifs des SGBDOO ê réduire le dysfonctionnement entre langage de programmation et langage de base de données en offrant un unique langage de programmation de base de données ê supporter directement les objets arbitrairement complexes par un modèle objet ê partager le code réutilisable au sein du SGBD

8 Généralités - Historique m Définition des SGBDOO ê The Object-Oriented Database System Manifesto (1989) F Défini par des chercheurs F Ensemble de règles caractérisant un SGBDOO: obligatoires, facultatives, ouvertes

9 Généralités - Historique m Définition des SGBDOO ê ODMG 1.0 (1993) F Défini par des éditeurs F Standard de portabilité des SGBDOO ê ODMG 2.0 (1997) F Binding langages objet (c++, smalltalk, java) vers SGBDO ê ODMG 3.0 (2000) F Améliorations du binding java prémisses de JDO F Dernière version avant dissolution de lODMG

10 Généralités - Aspects Base de Données m un SGBDOO est un SGBD ê Persistance ê Gestion du disque ê Partage des données (multi-utilisateurs) ê Fiabilité des données ê Sécurité des données ê Interrogation ad hoc

11 Généralités - Aspects Orientés Objet m Un SGBDOO est Orienté Objet ê Objets complexes ê Identité d'objet ê Encapsulation, Classes ê Héritage ê Surcharge, Lien retardé ê Valeurs, Types ê Polymorphisme

12 Généralités - Architecture m Architecture Fonctionnelle Langage de Définition Langages de Programmation Langage de Requêtes Autres interfaces Outils de Développement Gestion de SchémaGestion d'Objets

13 Généralités - Architecture m Architecture Opérationnelle Objets Fichiers Verrous Journal Pages ApplicationCompilation Programme utilisateur

14 Généralités - Architecture m Architecture Client/Serveur ê Serveur d'objets Objets Fichiers Verrous Journal Cache de Pages Application Objets Application Objets

15 Généralités - Architecture m Architecture Client/Serveur ê Serveur d'objets F Fort degré de concurrence (verrouillage et journalisation au niveau de l'objet) F Possibilité d'exécution de méthodes sur le serveur

16 Généralités - Architecture m Architecture Client/Serveur ê Serveur de pages Pages Verrous Journal Cache de Pages Application Objets Fichiers Pages Application Objets Fichiers Pages

17 Généralités - Architecture m Architecture Client/Serveur ê Serveur de pages F Utilisation de la puissance de calcul des clients F Accroît le nombre de connections possibles F Serveur isolé F Verrouillage et journalisation par page

18 Généralités - Architecture m Architecture Client/Serveur ê Multi-serveurs Objets Répartis Fichiers Pages Application Objets Répartis Fichiers Pages Application objets ou pages

19 SCHEMA BASE Généralités m Schéma, Base BASE SCHEMA SYSTEME VOLUME DISQUE

20 Aspects Orientés Objets m Objet complexe, encapsulation, classe ê OBJET = DONNÉES + DESCRIPTION DINTERFACE (STRUCTURES DE DONNÉES + COMPORTEMENTS) ê Un objet est lencapsulation, dans une même entité, de données conformes à une structure de données et des opérations permettant de manipuler cette structure de données.

21 Aspects Orientés Objets m Objet complexe, encapsulation, classe ê Vue externe: OBJET = BOITE NOIRE + BOUTONS ê Vue interne: OBJET = DONNEES + MECANIQUE LIEE AUX BOUTONS

22 Aspects Orientés Objets m Point de vue structurel : ê un objet est un type de données qui définit une structure et lensemble des opérations applicables à cette structure. m Point de vue conceptuel : ê un objet est une unité de connaissance représentant le prototype dun concept m Point de vue acteur : ê un objet est une entité autonome et active.

23 Aspects Orientés Objets F Lencapsulation est le principe qui consiste à préserver la structure et la mécanique interne des objets des regards indiscrets pour nen montrer quune interface choisie Ý Les propriétés de visibilité permettent de définir ce qui fera partie de linterface. Ý Seules les parties publiques (appelées spécifications ou interfaces) sont accessibles.

24 Aspects Orientés Objets ê Une classe est la description abstraite dun ensemble dobjets partageant les mêmes caractéristiques. ê Elle possède deux composantes : Ý description des données, appelées attributs (composante statique) Ý description des procédures, appelées méthodes (composante dynamique)

25 Aspects Orientés Objets ê Les attributs caractérisent létat des objets durant lexécution des programmes. ê Les méthodes caractérisent les comportements des objets durant lexécution des programmes. ê Tout objet est instance de sa classe.

26 Aspects Orientés Objets m Une méthode est toujours associée à une classe et se compose de deux parties : ê sa signature qui indique les structures de données sur lesquelles elle opère ê son corps qui indique la manière dont elle opère m Une méthode est toujours déclenchée sur un objet appelé objet receveur et désigné, dans le corps de la méthode, par la variable self ou this. m Pour instancier une classe, on fait appel à lopérateur new, prédéfini pour toute classe, qui réalise lallocation mémoire nécessaire, crée un objet et déclenche automatiquement linitialisation de lobjet

27 Aspects Orientés Objets m Identité d objet ê Chaque objet est caractérisé par un identifiant unique, immuable, géré par le système. ê Cet identifiant est un moyen discriminant de désigner un objet ; il est indépendant de la valeur des attributs de l'objet. Deux objets peuvent coïncider en tout point (selon la modélisation effectuée) : on dit qu'ils sont égaux.

28 Aspects Orientés Objets ê Deux personnes différentes mais de mêmes caractéristiques (pour le modèle) ! ê Exemple: deux homonymes, de même prénom et de même âge… Nom:DUPOND Prénom:Jean Age:25 Conjoint:- Nom:DUPOND Prénom:Jean Age:25 Conjoint:-

29 Aspects Orientés Objets m L'identité est la relation d'équivalence "avoir même identificateur que" m L'égalité est la relation d'équivalence "avoir les mêmes propriétés que".

30 Aspects Orientés Objets F Jean DUPOND (1) se marie avec Jeanne DURANT Ý Jean DUPOND (1) le conjoint de Jeanne DURANT sont deux objets identiques (ou sont un seul objet) Ý Jean DUPOND (1) et Jean DUPOND (2) ne sont plus égaux (une de leurs propriétés diffère: le conjoint) Nom:DUPOND Prénom:Jean Age:25 Conjoint:[DURAND Jeanne] Nom:DUPOND Prénom:Jean Age:25 Conjoint:-

31 Aspects Orientés Objets IDENTITÉ != ÉGALITÉ ê Deux objets sont identiques si et seulement si ce sont le même ! (symbole = ) ê Deux objets sont égaux si et seulement si leurs valeurs sont égales.

32 Aspects Orientés Objets m L'identité d'objet permet de ê partager des objets ê de les rendre cycliques Nom:DUPOND Prénom:Jean Age:25 Conjoint:[DURAND Jeanne] Nom: DURAND Prénom: Jeanne Age:26 Conjoint:[DUPOND Jean]

33 Aspects Orientés Objets m Héritage ê L'héritage est un mécanisme de transmission des propriétés d'une classe vers une sous-classe. C'est une relation entre classes. F Le graphe de cette relation est le graphe d'héritage. ê Une sous-classe possède toutes les propriétés de sa super-classe mais elle peut en redéfinir certaines et en posséder d'autres. F La sous-classe est une spécialisation (ou raffinement) de la super-classe.

34 Aspects Orientés Objets m L héritage a deux objectifs : ê l'enrichissement : on adjoint, dans la sous-classe, de nouvelles propriétés à celles issues de la super-classe ê la substitution : on redéfinit dans la sous-classe certaines propriétés issues de la super-classe. m L'héritage est dit simple si la sous-classe n'a qu'une super-classe ; il est dit multiple si la sous- classe a plusieurs super-classes. m Intérêts de l héritage: ê factorisation du code des classes ê structuration hiérarchisée des classes, modularité

35 Aspects Orientés Objets Init (nom:string, prenom: string, age:integer, conjoint: Personne) Nom:DUPOND Prénom:Jean Age:25 Conjoint:- Salaire: realemployeur: EmployeurSalaire: real Salaire_Enseignant: real salaire_Chercheur: real Employeur_Enseignant: Employeur employeur_Chercheur: Employeur Personne Employe Chercheur Enseignant-Chercheur Enseignant

36 Aspects Orientés Objets m Surcharge, Lien retardé ê Chaque propriété d'une super-classe peut être redéfinie dans une sous-classe à condition de respecter certaines conditions : ê Pour les attributs : les types des attributs de la sous- classe doivent être des sous-types de ceux de la super- classe ê Pour les méthodes : le nombre de paramètres doit être identique et les types des paramètres et de la valeur de retour de la méthode dans la sous-classe doivent être des sous-types de ceux de la méthode dans la super- classe (covariance)

37 Aspects Orientés Objets ê Lorsqu on déclenche une méthode sur un objet, on ne peut pas nécessairement déterminer, à la compilation, le code qui sera réellement exécuté. F Lorsque le choix de la méthode à utiliser est réalisé à la compilation, on parle de lien statique. F Lorsque le choix de la méthode à utiliser est réalisé à l'exécution, on parle de lien retardé ou lien dynamique. Polymorphisme

38 Aspects Orientés Objets m Valeurs, Types ê Une valeur est une donnée organisée selon une certaine structure appelée type. ê Le type définit une structure de données et les opérations que l'on peut lui appliquer. ê Toute valeur est typée et son type est défini lors de sa déclaration.

39 Aspects Orientés Objets m Les valeurs ne supportent pas le concept d'identité : elles ne peuvent donc être ni partagées ni cycliques. m On accède à la valeur d'un objet en utilisant l'opérateur de déréférencement noté *. Nom:DUPOND Prénom:Jean Age:25 Conjoint:[DURAND Jeanne] Dupond p p = * Dupond

40 Aspects Orientés Objets ê Les types supportés par le système sont obtenus par application récursive de constructeurs de types à des types atomiques. ê Constructeurs de types : F tuple() (constructeur n-uplet) F list() (constructeur de collection ordonnée) F set() (constructeur de collection non ordonnée) F unique set() (idem mais sans doublon) F type() (accès au type d'une classe) ê Types atomiques: boolean, char, integer, real, string, bits, etc.

41 Aspects Orientés Objets ê Les types sont organisés selon une relation d'ordre partiel, défini par les règles suivantes : F il n'existe pas de sous-type d'un type atomique F tuple(a: t 1, b: t 2 ) est un sous-type de tuple(a: t 1 ) F tuple(a: t 1 ) est un sous type de tuple(a: t 2 ) si t 1 et un sous type de t 2 F list(t 1 ) [resp. set(t 1 ), unique set(t 1 )] est un sous-type de list(t 2 ) [resp. set(t 2 ), unique set(t 2 )] si t 1 est un sous type de t 2 ê De la même manière, les classes sont organisées selon un ordre partiel, décrit par le graphe d'héritage. ê L'ordre des types et des classes doit être vérifié par le compilateur.

42 Aspects Orientés Objets m Opérations sur les collections ê Listes F affectation, comparaison, concaténation, accès direct, appartenance, extraction de sous-liste, taille, remplacement, effacement, insertion, parcours itératif conditionnel ê Ensembles, Multi-ensembles F affectation, comparaison, union, intersection, différence, appartenance, taille, insertion, suppression, parcours itératif conditionnel

43 Aspects Bases de Données m Modèle de persistance ê Faculté pour un objet ou une valeur d'exister au-delà du programme qui l'a créé(e). m Modèle de persistance par attachement ê Tout objet ou valeur référencé(e) par un objet ou valeur persistant(e) est persistant(e).

44 Aspects Bases de Données m Conséquences du modèle par attachement ê transparent pour le développeur ê ramasse-miettes pour détruire les objets et valeurs qui ne sont plus référencés par un objet ou une valeur persistant(e) ê nécessité de racines de persistance

45 Aspects Bases de Données m Les racines de persistance sont nommées explicitement dans le schéma de la base de données (déclations) m Les racines de persistance peuvent être des objets et/ou des valeurs, de classes et/ou de type quelconques.

46 Aspects Bases de Données m Transactions m C'est un programme d'accès à la base de données qui vérifie les propriétés d'ACIDité : ê Atomicité (« tout ou rien ») ê Cohérence (« sémantique des objets garantie ») ê Isolation (« comme en mono-utilisateur ») ê Durabilité (« les effets dune transaction validée perdurent ») m Délimitées par un début de transaction et un achèvement (commit/validate ou rollback/abort)

47 Aspects Bases de Données m Interrogation ê Langage OQL (Object Query Language) standardisé par ODMG 93 ê Langage déclaratif, fonctionnel de syntaxe proche de SQL (Structured Query Language) permettant l'exécution de requêtes arbitrairement complexes combinant requêtes élémentaires et requêtes complexes

48 Aspects Bases de Données m Requêtes élémentaires accès aux instances nommées: LeDoyen envois de messages: LeDoyen>age() sélection d'un champ: LeDoyen>conjoint opérations sur les types atomiques et construits: LeDoyen>conjoint->age() + 1 construction et instanciation: struct(nom: LeDoyen>nom, age: LeDoyen>age())

49 Aspects Bases de Données m Requêtes complexes sélection/extraction/jointure select [distinct]… from … where… le résultat est un multi-ensemble (bag) ou ensemble (set) Tri order by … le résultat est une liste Partitionnement group by … le résultat est un ensemble de structures

50 Aspects Bases de Données m Entrées dans la base ê Si n désigne un objet ou une valeur nommée alors l'expression n est une requête qui retourne l'objet ou la valeur nommé(e) considéré(e) LeDoyen

51 Aspects Bases de Données m Atomes ê Si a désigne un atome, i.e. une valeur de type atomique (entier, réel, caractère, chaîne, booléen) alors l'expression a est une requête retournant cet atome. 3, « coucou »

52 Aspects Bases de Données m Atomes ê On dispose d'autres requêtes propres à chaque type atomique F nombres : opérations arithmétiques (+, -, *, /), modulo (mod()), valeur absolue (abs()) F chaînes de caractères: concaténation (+), extraction (x[i], x[i:j]), longueur (count()) F booléens: et (and), ou (or), négation 'not())

53 Aspects Bases de Données m Tuples ê Si x désigne une valeur ou un objet de type tuple alors x.a ou a est un attribut de x est une requête qui retourne l'attribut a de x. (*LeDoyen).conjoint ê Si x désigne un objet de type tuple alors x->a ou a est un attribut de x est une requête qui retourne l'attribut a de x. LeDoyen>conjoint

54 Aspects Bases de Données m Listes ê Extraction F x[i] : d'un élément F x[i:j], x[:j], x[i:]: d'une sous liste ê Opérations générales F first(x), last(x) F min(x), max(x), count(x), sum(x), avg(x)

55 Aspects Bases de Données m Listes ê Opérations particulières F x+y: concaténation de listes F listoset(x): conversion en unique set F flatten(x): Ý si x est une liste de listes, retourne la concaténation de tous les éléments de x Ý si x est une liste d'ensembles, retourne l'union de tous les éléments de x Ý si x est une liste de unique set, retourne l'union disjointe de tous les éléments de x

56 Aspects Bases de Données m Ensembles ê Extraction F element(x): extraction de l'unique élément d'un singleton ê Opérations générales F min(x), max(x), count(x), sum(x), avg(x) ê Opérations ensemblistes F x union y (x+y), x except y (x-y), x intersect y (x*y)

57 Aspects Bases de Données m Ensembles ê Opérations particulières F flatten(x): Ý si x est un ensemble de listes, retourne l'union disjointe de tous les éléments membres des listes de x Ý si x est un ensemble d'ensembles, retourne l'union de tous les éléments de x Ý si x est un ensemble de unique set, retourne l'union disjointe de tous les éléments de x

58 Aspects Bases de Données m Construction de valeurs ê On dispose des constructeurs habituels permettant d'obtenir des tuples, des listes et ensembles F tuple(); struct(a 1 : x 1, … a n : x n ): les attributs du tuple peuvent être des objets et/ou des valeurs F list(), list(x 1, …, x n ):les membres de la liste doivent être de même nature (objet ou valeur) et doivent avoir un supertype ou une superclasse commun(e) F set(), set(x 1, …, x n ): idem

59 Aspects Bases de Données m Construction dobjets ê Une requête peut créer un objet : Personne(nom: LeDoyen>nom, age: 70) F Le nom de la fonction est le nom de la classe. F Les attributs peuvent être initialisés avec les résultats d'autres requêtes. F Les attributs non cités sont initialisés par défaut (le constructeur de la classe n'est pas appelé).

60 Aspects Bases de Données m Envoi de messages ê x->m: où m est une méthode de la classe (ou d'une super classe) de x ne prenant aucun paramètre, retourne le résultat de l'application de la méthode m à l'objet x ê x->m(a 1, …, a n ): où m est une méthode de la classe (ou d'une super classe) de x prenant n paramètres, retourne le résultat de l'application de la méthode m à l'objet x avec les paramètres a 1, …, a n.

61 Aspects Bases de Données m Prédicats ê Ce sont des requêtes retournant une valeur booléenne F q like wild_card_exp: possibilité d'utiliser les caractères génériques ('*'…) F x = y (x == y): retourne la valeur true si et seulement si x et y sont deux valeurs égales ou bien si et seulement si x et y sont deux objets identiques F x != y: attention, signifie not(x = y)

62 Aspects Bases de Données m Prédicats F x y, x >= y F x in y: retourne la valeur true si et seulement si la valeur ou l'objet x appartient à la collection y ou bien si et seulement si le caractère x appartient à la chaîne y ou bien si et seulement si x est une sous- chaîne de la chaîne y.

63 Aspects Bases de Données m Prédicats: Quantificateurs F Universel: forall x in y: p Retourne true si et seulement si tout élément de la collection y satisfait le prédicat p select p from p in LesPersonnes where forall x in p->amis: x->age() < 18 Existentiel: exists x in y : p Retourne true si et seulement si il existe un élément de la collection y qui satisfasse le prédicat p select p from p in LesPersonnes where exists x in p->amis: x->age() < 18

64 Aspects Bases de Données m Sélection / Extraction / Jointure ê Font appel à un bloc select… from … where … select q fromx 1 in f 1, …, x n in f n wherep Ý où q est une requête impliquant les variables x 1, …, x n Ý où p est un prédicat impliquant les variables x 1, …, x n Ý où f i est une requête impliquant les variables x 1, …, x i-1 mais pas les variables x i, …, x n.

65 Aspects Bases de Données m Sélection / Extraction / Jointure ê La structure du résultat est un bag par défaut. F On peut éliminer la répétition de valeurs ou d'objets dans le résultat en utilisant la clause distinct (la structure du résultat est alors un unique set) F On peut trier le résultat avec la clause order by (la structure du résultat est alors une liste) ê On peut utiliser la caractère * F select * from Person p, Flower f F le résultat est du type bag(struct(p: Person, f:Flower))

66 Aspects Bases de Données m Tri ê y order by f1, …, fn F si y est une collection, retourne la liste contenant tous les éléments de y, rangés suivant les clés f 1, …, f n et, en dernier ressort par appel à magic() F les clés doivent être de type numérique ou chaîne de caractères Select p from p in LesPersonnes order by p->nom asc, p->prenom desc

67 Aspects Bases de Données m Partitionnement y group by (a 1 : q 1, …, a n : q n ) F Si y est une collection résultat d un select, l expression retourne une partition de y suivant les critères q 1, …, q n. F Le résultat est un ensemble (bag) de n-uplets dont les attributs sont a 1, …, a n, partition. partition est du même type que y, et désigne l ensemble des éléments de y associés à une valeur de (a 1 …a n )

68 Aspects Bases de Données m Partitionnement ê Possibilité dutiliser la clause having select p.age, card: count(partition) from LesPersonnes p group by p.age having count(partition) < 50 Pour réaliser un filtre utilisant une fonction d agrégation.

69 Aspects Bases de Données m Typage ê On peut sous-typer un élément dans une requête: select ((Employe) c) from c in LesPersonnes where c in LesEmployes select ((Employe) c)->salary() from c in LesPersonnes where (c in LesEmployes) && (c->age() > 25)

70 Aspects Bases de Données m OQL encapsulé dans un programme ê On peut lancer une requête OQL depuis un langage supportant le binding ODMG ê elle sera passée sous forme de chaîne de caractères, en paramètre à une fonction du type OQLquery m Exemple en C++ avec O2 #include "OQL_CC.hxx" { int i, j, c; d_Bag >group, result;... d_OQL_Query query("select x from x in $1 where \ count(x->children) > $2 and x->age <$3"); j=40; i= f(j); query << group << i<< j; c= d_oql_execute(query, result); if (result.cardinality()) result.insert_element ( new Person); …

71 Aspects Bases de Données m Exemple en Java avec O2: OQLQuery query = new OQLQuery (select p from Person p where age > $1); query.bind(40); Iterator it = query.iterate(); Person p; while (it.hasNext()) { p = (Person) it.next(); p.display(); } Note : pour obtenir une collection plutôt qu'un itérateur DBag bag = (DBag) query.execute()

72 Aspects Bases de Données ê Axiom query_program ::={define_query;} query define_query ::=define identifier as query

73 Aspects Bases de Données ê Basic query ::= nil query ::= true query ::= false query ::= integer_literal query ::= float_literal query ::= character_literal query ::= string_literal query ::= entry_name query ::= query_name query ::= bind_argument 1 query ::= from_variable_name query ::= (query)

74 Aspects Bases de Données ê Simple Expression query ::= query + query 1 query ::= query - query query ::= query * query query ::= query / query query ::= - query query ::= query mod query query ::= abs (query) query ::= query || query

75 Aspects Bases de Données ê Comparison query ::= query comparison_operator query query ::= query like string_literal comparison_operator ::= = comparison_operator ::= != comparison_operator ::= > comparison_operator ::= < comparison_operator ::= >= comparison_operator ::= <= ê Boolean Expression query ::= not query query ::= query and query query ::= query or query

76 Aspects Bases de Données ê Constructor query ::= type_name ( [query ] ) query ::= type_name (identifier:query {, identifier: query}) query ::= struct (identifier: query {, identifier: query}) query ::= set ( [query {, query} ]) query ::= bag ( [query {,query} ]) query ::= list ( [query {,query} ]) query ::= (query, query {, query}) query ::= [ list ](query.. query) query ::= array ( [query {,query} ])

77 Aspects Bases de Données ê Accessor query ::= query dot attribute_name query ::= query dot relationship_name query ::= query dot operation_name query ::= query dot operation_name( query {,query} ) dot ::=. | -> query ::= * query query ::= query [query] query ::= query [query:query] query ::= first (query) query ::= last (query) query ::= function_name( [ query {,query} ] )

78 Aspects Bases de Données ê Collection Expression query ::= for all identifier in query: query query ::= exists identifier in query: query query ::= exists(query) query ::= unique(query) query ::= query in query query ::= query comparison_operator quantifier query quantifier ::= some quantifier ::= any quantifier ::= all

79 Aspects Bases de Données query ::= count (query) query ::= count (*) query ::= sum (query) query ::= min (query) query ::= max (query) query ::= avg (query) ê Select Expression query ::= select [ distinct ] projection_attributes from variable_declaration {, variable_declaration} [where query ] [group by partition_attributes ] [having query ] [order by sort_criterion {, sort_criterion} ]

80 Aspects Bases de Données projection_attributes ::= projection {, projection} projection_attributes ::= * projection ::= query projection ::= identifier: query projection ::= query as identifier variable_declaration ::= query [ [ as ] identifier ] partition_attributes ::= projection {, projection} sort_criterion ::= query [ordering ] ordering ::= asc ordering ::= desc

81 Aspects Bases de Données ê Set Expression query ::= query intersect query query ::= query union query query ::= query except query ê Conversion query ::= listtoset (query) query ::= element (query) query ::= distinct(e) query ::= flatten (query) query ::= (class_name) query

82 Aspects Bases de Données ê Operator Priorities. () []. -> not - (unary) + (unary) i n * / mod intersect + - union except | | = < some < any < all (etc... for all comparison operators) = ! = l i k e and exists for all or

83 Aspects Bases de Données.. :, (identifier) this is the cast operator order having group by where from select

84 ODMG 3.0 m Objectifs ê fournir des standards permettant d'écrire des applications portables, i.e. qui puissent fonctionner sur un ou plusieurs SGBDO F le schéma, le couplage aux langages de programmation, la manipulation de données et le langage de requêtes doivent être standards ê si possible, le standard devra faciliter l'interopérabilité entre SGBDO

85 ODMG 3.0 m Les composants majeurs ê Modèle objet = modèle objet de l'OMG + relations ê Langages de spécifications objet F ODF Object Definition Language = IDL + relations F OIF Object Interchange Format: échange d'objets inter bases, support de documentation… ê Langage de requêtes: OQL ê OML Couplage aux langages de programmation (C++, Smalltalk, Java)

86 ODMG 3.0 m Modèle objet établit une distinction entre Litéral et Objet ê Litéral F Types atomiques: int, real, string F Constructeurs de type Ý énumération enum Ý structures struct, union Ý collections génériques : set, bag, list, array Chaque litéral est « caractérisé » par sa valeur L1 et L2 sont égaux si leurs valeurs sont égales ê Objet F définition de l interface chaque objet est identifié par son identité O1 et O2 sont égaux si leurs identifiants sont égaux

87 ODMG 3.0 Built-in Types Object_typeLiteral_type Atomic_objectCollection_objectStructured_object SetBagListArrayDictionnary DateTimeTimestampInterval

88 ODMG 3.0 m Interface = spécification d un type ê super (Héritages simple et multiple) ê extent, clés candidates ê attributs attribute ; ê associations et associations inverses relationship inverse :: ; ê méthodes ( :, …) raise ( ); : in, out, inout m Classe ê interface + une implantation particulière du type dans un des LMD disponibles

89 ODMG 3.0 m Exemple interface Employee { attribute int numemp; attribute string name; attribute float basesalary; attribute Date birthday; attribute Struct Addr { string street, string city, int zip } address; attribute enum TypeEmp { worker,manager} typeEmp; attribute Set phones; relationship Dept dept inverse Dept::members; float salary(); } interface Dept { attribute string name; attribute Struct Employee::Addr address; relationship Set members inverse Employee::dept float totsalary() raise(Uncalculable); }

90 ODMG 3.0 m Modèle objet ê Une base stocke des objets, qui peuvent être partagés par différents utilisateurs et applications. Elle repose sur un schéma, défini en ODL, et contient des instances des types définis dans ce schéma. m Eléments clés ê Propriétés: attributs et relations ê Opérations: méthodes. Exceptions. ê Héritage multiple ê Extensions et clés ê Nommage d'objets, durée de vie et identité ê Littéraux atomiques, structurés et ensemblistes ê Classes de collections


Télécharger ppt "Systèmes de Gestion de Bases de Données Orientés Objet Philippe SALVAN"

Présentations similaires


Annonces Google