Vous êtes sur la page 1sur 42

BDR Master dInformatique (SAR)

Cours 3- Objet et objet-relationnel Anne Doucet


Anne.Doucet@lip6.fr
1

Objet et Objet-relationnel
Introduction Bases de donnes objet Le modle objet-relationnel

Insuffisances du modle relationnel


Oprations spares des donnes procdures stockes non intgres dans le modle Limites du modle de donnes 1re forme normale de Codd inadapt aux objets complexes (documents structurs) introduction de BLOB Dysfonctionnement des langages Mauvais support des applications non standards CAO, CFAO BD Gographiques BD techniques

L'apport des modles objets


Identit d'objets introduction de pointeurs invariants possibilit de chanage Encapsulation des donnes possibilit d'isoler les donnes par des oprations facilite l'volution des structures de donnes Hritage d'oprations et de structures facilite la rutilisation des types de donnes permet l'adaptation son application Possibilit d'oprations abstraites (polymorphisme) simplifie la vie du dveloppeur
4

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

Les Objets : Instances


Identifis par des OID : grs par le SGBD OO pour distinguer les objets permettent de retrouver les objets, reste invariant peuvent tre nomms par les utilisateurs Persistants ou temporaires : les objets persistants sont les objets BD, les autres restant en mmoire Peuvent tre simples ou composs : atomiques, collections, structurs Hritage dun type racine : proprits communes : cration, verrouillage, comparaison, copie, suppression
16

Exemple

identificateur

Martin Nom = Martin Date-nais = 11-12-66 Adresse = 12 rue du Bac Majadresse Age majnom

Valeur Oprations (mthodes)

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.

Chaque collection a une interface spcifique


Hirarchie de Types
18

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

Les Associations (Relationships)


Suit Etudiants Est_suivi_par Fonction de traverse Cours

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

Mta-modle du modle ODMG


Class Instantiate 1 key_list extent_name super_class support

*
1

extend s

Operation signature invoke return return_abnormally

has Object

*
Property
Attribute attr_name attr_type set_value get_value Traversal path path_name to_cardinality to_type traverse creator_iterator

OID has_name? names class create delete exits same_has?

Relationship define 1 add_member remove_member 23

+ Type, littraux, interface, ....

Le langage OQL

Permettre un accs facile une base objet


via un langage interactif autonome par intgration dans un des langages de lODMG (C++, Smalltalk, Java)

Offrir un accs non procdural


permettre des optimisations automatiques (ordonnancement, index,) garder une syntaxe proche de SQL

Rester conforme au modle de l'ODMG


application d'oprateurs aux collections extensions ou imbriques permettre de crer des rsultats littraux, objets, collections,

Permettre des mises jour limites via les mthodes

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

Forme des Requtes


Forme gnrale d'une requte Expressions fonctionnelles mixes avec un bloc select tendu Select [<type rsultat>] (<expression> [, <expression>] ...) From x in <collection> [, y in <collection>]... Where <formule> Type rsultat automatiquement infr par le SGBD toute collection est possible (bag par dfaut) il est possible de crer des objets en rsultat Syntaxe trs libre, fort contrle de type
26

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

Exemple de table et objet


Police Nom Adresse Conducteurs
Conducteur Age

Accidents
Accident Rapport Photo

24

Paul

Paris

Paul Robert

45 17

134 219 037

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

Le modle SQL3 (ANSI99)


Extension objet du relationnel, inspir de C++ type = type abstrait de donne avec fonctions fonction associe une base, une table ou un type crite en SQL, SQL3 PSM (Persistent Stored Module) ou langage externe (C, C++, Java, etc.) collection = constructeur de type table, tuple, set, list, bag, array sous-typage et hritage objet = instance de type rfrence par un OID (dfaut) association = contrainte d'intgrit inter-classe
32

Types (SQL3 Oracle)


Types atomiques
Varchar2(<longueur>) Number(<longueur>) Date

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;

% noms des employs parisiens

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

L'appel de fonctions et oprateurs

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