Académique Documents
Professionnel Documents
Culture Documents
Objet et Objet-relationnel
Introduction Bases de donnes objet Le modle objet-relationnel
Dfinitions
BDO = base de donnes dont les lments sont des objets (avec identit et oprations) schma BDO = graphe de classes des objets de la base SGBDO = SGBD supportant langages objet (C++, Smalltalk, Java, etc.) objets structurs et non structurs objets volumineux (multimdias) objets complexes (avec associations inter-objets) composants et appel doprations hritage et surcharge dopration
5
Objet
Un objet est constitu - de donnes - doprations applicables ces donnes On distingue linterface (description des oprations applicables lobjet) de limplmentation (structure de donnes physiques et procdures qui ralisent les oprations) Lutilisateur ne voit que linterface. Les donnes sont encapsules.
Objet complexe
Les objets complexes sont construits partir dobjets atomiques et de constructeurs. Les objets atomiques sont les entiers, les rels, les boolens, les chanes de caractres, les images, etc. Les constructeurs sont le n-uplet, lensemble, la liste, et le tableau. Lutilisation des constructeurs est indpendante du type des objets (orthogonalit du systme de types)
7
Identit dobjet
Chaque objet a une identit indpendante de sa valeur. Identit et galit sont deux concepts diffrents. Lidentit dobjet permet :
Le partage dobjet La reprsentation dobjets cycliques (graphe de composition) Le maintien automatique de la contrainte rfrentielle La mise jour des valeurs sans changer lidentit Plusieurs niveaux de comparaison (galit superficielle et galit profonde)
8
Types et classes
Un type/classe dcrit les proprits communes dun ensemble dobjets : - proprits structurelles (donnes) - proprits de comportement (mthodes) Un type/classe a deux parties : spcification (mthodes) et implmentation (structure de donnes et implmentation des mthodes) Les types ou les classes permettent une abstraction des informations et de leur reprsentation. Ce sont les concepts utiliss pour dcrire le schma de la base. Cest aussi un mcanisme de vrification de la justesse des programmes.
9
Hritage et sous-typage
On peut factoriser des classes ayant des proprits communes (structure et /ou mthodes). Une sous-classe hrite des proprits (donnes et mthodes) de sa super-classe. Elle est spcialise en ajoutant des attributs propres et des mthodes propres.
Ex: classe Personne (nom : string, datenais : Date) classe Etudiant inherits Personne (cursus : string)
10
Hritage
Lhritage permet dviter la rptition de code en facilitant la r-utilisation. Il rend le code plus simple en plaant chaque procdure son niveau dabstraction optimal. Il fournit une description compacte et bien structure du schma. Un schma de base de donnes objet : ensemble de classes organises en hirarchie.
11
Redfinition et Surcharge
Redfinition : Une mthode spcifie dans une super-classe peut tre redfinie, (avec le mme nom) avec un code diffrent au niveau dune sous-classe. Surcharge : Possibilit de dfinir plusieurs codes pour une mme opration dune classe. Le code appropri est slectionn selon le type des paramtres fournis lors dun appel. Ex. Un objet peut avoir plusieurs mthodes afficher, selon quil sagit dafficher un formulaire, une carte, une image, etc.
12
Persistance
Un objet persistant est un objet stock dans la base, dont la dure de vie est suprieure au programme qui le cre. Une donne est rendu persistante par une commande explicite (LP) ou par un mode automatique (BD):
attachement une racine de persistance attachement un type de donnes
Les noms du schma servent de points dentre la base de donnes (les relations en relationnel, les noms de classe, ou des objets nomms en BDOO)
13
ODMG
Dfinit les standards pour les BDO (modle, ODL, OQL) Adaptation du modle objet de l'OMG Interfaces d'accs un SGBDO avec les LPO ODL OQL
OML
C++ Java Smalltalk
SGBDO
14
Le Modle
Extension du modle de l'OMG l'OMG a propos un modle standard pour les objets le modle est support par le langage IDL (def. interface) les BD objets ncessitent des adaptations/extensions instances de classes collections associations persistance transactions Un candidat pour un profil BD de l'OMG
15
Exemple
identificateur
Martin Nom = Martin Date-nais = 11-12-66 Adresse = 12 rue du Bac Majadresse Age majnom
17
Les objets collections Support de collections homognes : Set<t>, Bag<t>, List <t>, Array<t>, Dictionary<t,v> hritent d'une interface commune collection :
Cardinalit, existence dun ordre, tester si la collection est vide ou non, si un lment appartient la collection, si les dupliqus sont autoriss. Insertion, suppression dun lment Cration dun itrateur (unidirectionnel ou bi-directionnel) et des oprations associes.
Les Attributs
Une proprit permettant de mmoriser un litral ou un objet Peut tre vue comme deux fonctions : Set_value Get_value Proprits: son nom type de ses valeurs lgales Un attribut n'est pas forcment implment.
19
Associations binaires, bi-directionnelles de cardinalit (1:1), (1:N), (N:M). Oprations: Add_member, Remove_member Traverse, Create_iterator_for
20
Exemple
Interface tudiants { ... Relationship list<cours> suivre inverse cours::est_suivi_par; }; Interface cours { ... Relationship set<tudiants> est_suivi_par inverse tudiants: :suivre;}; Le SGBDO est responsable du maintien de l'intgrit Rfrence dans les deux sens si inverse dclar Ce n'est pas le cas pour un attribut valu par un objet attribut suivre list<cours> pas de chemin inverse, pas d'intgrit rfrentielle
21
Les Oprations
Reprsentent le comportement du type Proprits: nom de l'opration nom et type des arguments (in) nom et type des paramtres retourns (out) nom des conditions d'erreurs (raises)
22
*
1
extend s
has Object
*
Property
Attribute attr_name attr_type set_value get_value Traversal path path_name to_cardinality to_type traverse creator_iterator
Le langage OQL
24
Caractristiques
Langage de requtes fonctionnel - composition dexpressions - manipulation des types des langages de programmation objet - appel doprations avec mises jour Fonctionnalits - select avec expressions de chemins - oprateurs ensemblistes : union, intersect, except - quantificateurs : for all, exists - agrgats : count, sum, min, max, avg - autres : order by, group by, define
25
Schma
Class Personne { String nom; Date datenais; Set <ref <Personne>> parents inverse enfants; List <ref<Personne>> enfants inverse parents; Ref <Appartement> habite inverse est-habite-par; Int age();} Class Employe : Personne { float salaire; } Class Appartement { int numero; ref <Batiment> batiment inverse appartements; ref <Personne> est-habite-par inverse habite; } Class Batiment { Adresse adresse; List <ref>Appartement>> appartements inverse batiment; }
27
Exemples de requtes
Racines de persistance : extensions des classes set <Personne> lespersonnes; set <Employe> lesemployes; set <Appartement> lesappartements; nommer un objet : martin est le nom dun objet dsignant lemploy qui sappelle Martin. Select e From e in lesemployes Where e.salaire > 2000 /* Employs dont le salaire est suprieur 2000 */ Select p from p in lespersonnes b in (select distinct a.batiment from a in lesappartements) Where p.nom = b.adresse.rue /*Personnes qui habitent dans une rue qui porte leur nom*/
28
L'objet-relationnel
Relationnel (tables, attributs, domaine, cl) + Objet (collections, identifiants, hritage, mthodes, types utilisateurs, polymorphisme) Extension du modle relationnel attributs multivalus : structure, liste, tableau, ensemble, ... hritage sur relations et types domaine type abstrait de donnes (structure cache + mthodes) identit d'objets Extension de SQL dfinition des types complexes avec hritage appels de mthodes en rsultat et qualification imbrication des appels de mthodes surcharge d'oprateurs
29
Accidents
Accident Rapport Photo
24
Paul
Paris
Paul Robert
45 17
Objet Police
30
Les concepts
Extensibilit des types de donnes Dfinition de types abstraits Possibilit de types avec ou sans OID Support dobjets complexes Constructeurs de types (tuples, set, list, ) Utilisation de rfrence (OID) Hritage Dfinition de sous-types Dfinition de sous-tables
31
Types objet
Create type <nom-type> as Object ( (<nom-attribut> [ref] <type>, )+ (<declaration-methodes>,)* );
Types ensemblistes : Table (ensemble avec doublons) Varray (collection ordonne avec doublons)
Create type <nom-type> as (Table | Varray(<longueur>) ) of <type>;
33
Types abstraits
create type numsecu varchar2(15) ; create type employe as Object ( nom varchar2(10), nss numsecu, datenais Date) ; create type Employes as Table of employe; create type Nouveaux-employes as Varray (10) of employe ;
34
Mthodes
Fonctions ou procdures associes un type dobjet. Modlisent le comportement dun objet Ecrites en PL/SQL ou JAVA, et sont stockes dans la base. Dclaration : Member function <nom-fonction> [(<nom-para> in <type>, )] return <type-resultat> Member procedure <nom-proc> [(<nom-para> in <type>, )] Le corps de la mthode est dfini dans la classe du receveur. Create type body <type-objet> as <declaration-methode> is <declaration var-locales> begin <corps de la methode> end;
35
Exemple
create type employe as Object ( nom varchar2(10), nss numsecu, datenais Date, member function age return Number) ; create type body employe as member function age return Number is begin return sysdate datenais; end age; end;
36
Sous-typage et hritage
(non implment dans Oracle) create type personne (nom varchar2(10), adresse varchar2(30), datenais date) ; create type employ under personne (affectation varchar2(10), repos jour-ouvr); create type tudiant under personne (universit varchar2(20) no-tudiant integer) ; create table personnes of personne (primary key (nom)) ; create table employs under personnes of employ ;
37
Langage de requte
Standard SQL tendu lobjet-relationnel :
SELECT [distinct] FROM [WHERE ]
La clause SELECT peut contenir, une variable, un attribut, un nom de fonction, un chemin (notation pointe). Les clauses FROM et WHERE peuvent contenir des requtes imbriques.
38
Exemples
create type adrs table of adr; create type employ as object (nom varchar2(10), adresses adrs); create table employs of employ;
select nom from employs e where "paris" in select ville from e.adresses;
39
Objets
create type employ as object (nom varchar2 (10), affectation site) ; create type elts table of employ ; create type site as object (nom varchar2(10), budget number, chef ref employ, emps elts); create table employs of employ ; create table sites of site ; select nom % noms des employs affects Dupont from employs where affectation.chef.nom = "dupont" ;
40
Appel de fonctions
SELECT r.name FROM emp j, emp r WHERE j.name = 'Joe' and distance(j.location,r.location) < 1 ;
Appel d'oprateurs
SELECT r.name FROM emp, emp r WHERE emp.name = 'Joe' and contained(r.location, circle(emp.location,1)) ;
41
Conclusion
Deux approches diffrentes :
les SGBD objet mettent en commun les fonctionnalits des bases de donnes et celles des langages de programmation (objet), les SGBDBD objet-relationnel compltent le modle relationnel avec un systme de types plus riche
Et complmentaires
Les SGBD objet sont mieux adapts aux applications o lobjet a une position centrale : applications manipulant des objets structurs et non structurs, ayant des associations complexes, faisant appel des sources de donnes htrognes, etc. Les SGBD objet-relationnel sont optimiss pour grer des applications manipulant de trs grandes collections de donnes, ncessitant de nombreuses transactions (relativement courtes), ayant besoin des fonctionnalits traditionnelles des SGBDR en gnral.
42