Vous êtes sur la page 1sur 100

Module: Bas es de donnes Orientes Objet

(volume 1)

BELASLA El Mehdi
Belasla22@yahoo.fr

EMSI 2008/2009
05/05/2009 1

Objectifs du cours
Apprendre le concept BDOO n Apprendre la manipulation des SGBDOO
n
Orient

Objet pure (ODL, OQL..) Le relationnel objet (SQL3)

05/05/2009

Structure du cours
Cours magistral n Travaux dirigs n TPs n projet
n

05/05/2009

Plan gnral du cours


n n n n

Introduction l Orient Objet Problmatique des BDs relationnels Dfinition des SGBDO Le standard ODMG
ODL OQL

L objet-relationnel
SQL3

05/05/2009

L orient Objet

05/05/2009

Dfinition d un objet
n

Un objet comme un ensemble comportant : des attributs n Proprits de l objet des mthodes n Comportements ou op rations un identifiant (OID) Un objet correspondant un objet rel (matriel ou abstrait). Les valeurs des attributs d finissent l'tat de l'objet.

05/05/2009

Etat d un objet
n

Ensemble des valeurs des attributs de l objet un instant donn


Un

attribut est une information qui qualif ie l objet qui le contient. Chaque attribut prend une valeur dans un domaine de d finition donn . Exemple :
n

Pour un objet de type Voiture, Ma voiture est caractrise par :


Sa marque : Opel Sa couleur : Noir Sa masse : 800 Son immatriculation : 555 AB 69

L tat d un objet change pendant sa vie


L tat

d un objet un moment donn est la consquence des comportements pass s Exemple :


05/05/2009
n

Ancienne immatriculation de Ma voiture : 888 YZ 03

Comportement d un objet
n

Actions et ractions possibles

Ensemble d oprations / mthodes


n

Exemple de mthodes dmarrer, rouler, stopper, ajouter_essence

Stimulation

Demander un objet d effectuer une mthode par un envoi de message


n

Exemple: Ok = ma_voiture.dmarrer() Vol = ma_voiture.ajouter_essence(15)

Evolution de l tat

L tat d un objet dpend des oprations effectues par les diffrents appels de mthodes. Certaines oprations dpendent de l tat courant n Exemple: La mthode ma_voiture.dmarrer() ne fonctionnera seulement si ma_voiture.volume_essence > 0 05/05/2009

Identit d un objet
n

Caractrise l existence propre de l objet


Identification
n

de l objet de manire
Deux objets dont toutes les valeurs d attributs sont identiques n ont pas la mme identit

non ambigu n indpendante de son tat

05/05/2009

Reprsentation d un objet
n

Selon le formalisme UML


Ma_voiture Sa marque : Opel Sa couleur : Noir Sa masse : 800 Son immatriculation : 555 AB 69 Dmarrer() Ajouter_essence(entier v) Rouler stopper

Nom de l objet

Attributs

Mthodes

05/05/2009

10

Liens entre les objets


n

Pour pouvoir envoyer un message un objet, il faut le connaitre


Ex

: L objet Le_conducteur connat l objet Ma_voiture Connatre un objet revi ent avoir une rfrence qui lui correspond

05/05/2009

11

Reprsentation des classes d objets

05/05/2009

12

L'apport des mod les objets


n

Identit d'objets

introduction de pointeurs possibilit de chanage


n

Encapsulation des donnes

possibilit d'isoler les donnes par des oprations facilite l'volution des structures de donnes
n

Hritage d'oprations et de structures

facilite la rutilisation des types de donnes permet l'adaptation son application


n

Possibilit d'oprations abstraites (polymorphisme)

simplifie la vie du dveloppeur


13

05/05/2009

Problmatique des SGBDR

05/05/2009

14

Dfinitions
n

Bases de Donn es : Ensemble structur de donnes enregistres sur un support disque pour sati sfaire les requtes de plusieurs utilisateurs en temps opportun Systme de Gestion de Bases de Donn es (SGBD) : progiciel d usage gnral permettant la gestion de bases de donn es

05/05/2009

15

Fonctions d un SGBD
n n n n n n

Persistance des donn es sur disque Partage des donn es (gestion des conf lits d accs) Intgrit (respect de contraintes de coh rence) sret de fonctionnement (reprises apr s panne) confidentialit (attribution de droits d accs) archivage sur support externes (back -up)

05/05/2009

16

Schma gnral
Dfinir un schma des donnes Conception Administration Cration des usagers, des droits Maintenance Optimisation Requtes : insertions mises jour slections Utilisation Usagers (postes de travail) programmes

Langage de Dfinition Langage de Manipulation de Donnes de Donnes

Systme de Gestion de Bases de Donnes

Base de Donnes
05/05/2009 17

Langages
n

Le Langage de D finition de Donn es permet de dfinir la structure des informations ( mtabase):

entits (ex : personne) avec leurs caractristiques associes (ex: nom, prnom, fonction ) liens entre les entits (ex : une personne travaille sur un projet)
n

Le Langage de Manipulation de Donn es permet d adresser des requtes la base :

insertion de nouvelles entits (ex : embauche d un employ), destruction mise jour de caractristiques (ex : changement de fonction) slection (ex : trouver les personnes dont la fonction est ingnieur )
05/05/2009 18

Historique des SGBD


Recherche ? 1960 1970 1980
n

n n n

Modle hirarchiques : donnes reprsentes sous forme d une arborescence Modle rseau : reprsentation sous forme d un graphe quelconque Modle relationnel : reprsentation sous forme de tables Modles orient objet (reprsentation sous forme d objets) et relationnel-objet (hybridation entre relationnel et objet)

Produits

1970 1980 1990

05/05/2009

19

Le modle hirarchique
La base de donn es est une arborescence. Une donn e est soit un n ud, soit une feuille
Dpartement : recherche Dpartement : projets Dpartement : production

Employs : Jean Eric Luc Centre : Paris

Employs : Louis Nicolas Alexandre Centre : Rouen

Employs : Jacques Michel

Centre : Rouen

Problmes majeurs : n Obligation d utiliser la structure d arbre pour ac cder aux donnes n redondance des donnes
05/05/2009

20

Le modle rseau
Une donne est un n ud d un graphe quelconque
Dpartements Dpartement : recherche Employs : Jean Eric Luc Centre : Paris Employs
n n n

Dpartement : projets Employs : Louis Nicolas Alexandre Centre : Rouen

Dpartement : production Employs : Jacques Michel Centre : Rouen Centres

Insuffisance du modle rseau : Trop grande complexit du graphe 05/05/2009 une requte se traduit par un programm e de parcours complexes

21

Le modle relationnel
Reprsentation par des tables ind pendantes
Table des Employs nom
Jean ric Luc Louis Nicolas Alexandre Jacques Michel
n n n

Table des Dpartements ID nom centre


C2 C1 C1 D1 Recherche D2 Projets D3 Production

dept
D1 D1 D1 D2 D2 D2 D3 D3

Table des Centres nom ID


C1 C2 Paris Rouen

Simplicit : description par des tables indpendantes autonomie : chaque table est un point d entre de la base puissance de l expression des requtes (requtes dclaratives)
05/05/2009 22

Le modle orient objet


Reprsentation par des graphes d objets
Employ nom Michel Jacque Alexandre s Nicolas Louis Michel Eric Jean Embaucher Muter () Dpartement Production Projets Dmnager () Recherche nom

Centre nom Crer () Rouen Paris

05/05/2009

23

Avantages des SGBD relationnels


n

Modle de donnes est trs simple et donc facile comprendre pour les utilisateurs.

Le modle repose sur une base formellement dfinie _ dfinir :

des mthodes de conception de schmas (thorie de la normalisation) langages de manipulation de donnes (LMD) standardiss (SQL, ...).

05/05/2009

24

Avantages des SGBD relationnels


n

La modlisation normalise

dcomposer les donnes en sous-ensembles indivisibles et les relier par DF _ niveau le plus fin,# redondances et fusions.

Formes Normales
1 re forme normale : Une relation est en premire forme normale si tout attribut est lmentaire et non rptitif. 2 ime forme normale : Une relation est en deuxime forme normale si elle est en premire forme normale et que tout attribut non-cl est en dpendance fonctionnelle de toute la cl. 3ime forme normale : Une relation est en troisime forme normale si elle est en seconde forme normale et que tout attribut non-cl n est en dpendance fonctionnelle que de la cl primaire.
05/05/2009 25

Avantages des SGBD relationnels


n n n n n n n

SQL, langage assez " propre" ( Fortran, C) Indpendance physiqu e (et un peu logique) : changer le type de stockage => no pb ! Optimisations nombreuses Gestion de la conf identialit... Modle standard Paralllisme Puissance des entrepri ses leaders (ORACLE, DB2 )

05/05/2009

26

limitations du mod le relationnel


n

Prise en compte de la s mantique difficile

pas de hirarchie d'entits (modle " plat") pas d'hritage perte d'information smantique maintien de l'intgrit difficile
n

Difficult de la normalisation

clatement en une multitude de relations multiplicit des oprations de jointure


n

Programmation di fficile

plongement de SQL da ns un autre langage

05/05/2009

27

Limites des SGBD relationnels


n

Modle de donnes :
trop

simple Ne permet pas de repr senter facilement les objets du monde rel (plus complexes qu'une relation).
n

Dans les schmas, les objets du monde rel sont clats en plusieurs relations, _ multiplie les jointures dans les requtes des utilisateurs.

05/05/2009

28

Reprsentation complexe du r el avec le relationnel


n

Reprsentation conceptuelle distante du rel. La modlisation fournit de nombreuses relat ions, en rupture avec le rel, qui est plus simple.

1 Entit gnre 2 tables ??


05/05/2009

29

Limites des SGBDR : Exemple


n
n

On dsire conserver dans BD g ographique (rseau routier).


Pour dfinir le rseau routier, on part de p oints d'intersection qui sont les points ou plusieurs routes se croisent ou qui correspondent un changement de caractristiques d'une route. Un point d'intersection est caractrise par ses coordonnes gographiques (latitude et longitude). On considre alors des segments de route qu i sont des tronons de route situes entre deux points d'intersection. Outre ses points d'origine et de destination, une information de catgorie (deux bandes, quatre bandes, . . .) caractrise chaque segment. Une route est dsigne par un identifiant (N4, S22, P602, . . .) et est dcrite par un ensemble de segments. De plus pour chaque route on conserve la dsignation de l'autorit (rgion, commune, . . .) qui la gre.
30

05/05/2009

Limites des SGBD relationnels


n

Un schma possible serait :


POINTS (ID P, LATITUDE, LONGIT UDE) SEGMENTS (ID SEG, ID P1, ID P2, CAT EGORIE) ROUTES (ID R, ID LISTE SEG, AUTORITE) LISTES SEGMENTS (ID LISTE SEG, ID SEG) Il faut noter que l'usage des identi fiants permet par exemple d'avoir deux segments de route entre les mmes points, ou de repr senter sans Ambi gut qu'un mme segment f ait partie de plusieurs routes.
31

05/05/2009

Limites des SGBD relationnels


POINTS ID P P#1 P#2 P#3 ROUTES ID R R#1 R#2 R#3 ID LISTE SEG LS#1 LS#2 LS#3 AUTORIT E autorite1 autorite2 autorite3 ID LISTE SEG 1 LS# 1 LS# 1 LS# 2 LS# 2 LS# 2 LS#
05/05/2009

SEGMENTS LONGITU DE long1 long2 long3

LATITUDE lat1 lat2 lat3

ID SEG SEG#1 SEG#2 SEG#3

ID P1 P#11 P#21 P#31

ID P2 P#12 P#22 P#32

CATEGORIE cat1 cat2 cat3

ID SEG 1 SEG# 2 SEG# 3 SEG# 4 SEG# 2 SEG# 5 SEG#


32

Limites des SGBDR


n

Constats :
les

bases de donn es sont relationnelles les grands constructeurs de SGBD -R sont riches et puissants le modle relationnel est tr s limit car : n il n'existe pas de constructeurs de types n le nombre de types pr -definis est trs faible les nouvelles applicati ons (en particulier multim dia) exigent plus de souplesse

05/05/2009

33

Limites des SGBD relationnels


conclusion
Il est ncessaire d'avoir la possibilit de dcrire des objets complexes (complex Objects) dans une base de donnes. Un objet complexe est un objet qui n'est pas caractris par une seule valeur, mais bien par un ensemble structur de valeurs..

05/05/2009

34

Nouveaux besoins
- Langages OO( Simula,Eiffel, Smalltalk, C++, )

_ accrotre la productivit ( logiciels structurs, extensibles,


rutilisables et de maintenance aise..).

principes :

les objets (2 parties): valeur / oprations (mthodes: manipuler les objets)


n n

Valeur cache(accs et MAJ par m thodes). Maintenance facile des logiciels.

l'hritage, qui permet une classe d'objets d'avoir les mmes proprits (structure de donnes et mthodes) qu'une autre classe sans avoir les redfinir_ tendre et rutiliser facilement des logiciels.
35

05/05/2009

Deux solutions (1)


n

abandonner le modle relationnel et construire un nouveau modle "objet" de BD. Commercialisation SGBD lente (crneaux spcialiss). Passage des SGBDR passer brutalement des modles objets : raisons conomiques comprhensibles.

05/05/2009

36

Deux solutions (2)



tendre le mod le relationnel mod le _ objet-relationnel (relationnel -objet"). Modle relationnel compatible avec les " rgles" objet. 3 extensions p/r mod le relationnel standard :

Introduction des objets, via leur identifiant (oid : object identifier) Incorporation de structures complexes TAD: les types abstraits de donnes Modlisation des associations
37

05/05/2009

Exemple de table et objet


Police Nom Adresse Conducteurs
Conducteur Age

Accidents
Accident Rapport Photo

24 Alami Rabat

Alami Rachdi

45 17

134 219 037

05/05/2009

38

SGBD Relationnel / Object


Oracle 8i, 9i, 10 j Sybase DB2-Informix Et autres

05/05/2009

39

SGBDO

1re BD, Gemstone (1983) labore partir de Smalltalk. Varit de BD "orientes objet" dans le domaine exprimental et dans le commerce. Produits commerciaux:

O2 (O2 Technology) Gemstone/OPAL ( Servio Logic) Ontos (Ontologic) Statice (Symbolics) Gbase (Object Databases) Vision (Innovative Systems) Objectstore (Object Design) Objectivity/DB (Objectivity) Versant (Versant Object Technology) Orion (Itasca Systems) Illustra (Illustra Inc.) SQLX (UniSQL)
05/05/2009 40

Proprit RICE (Miranda )


R : Rutilisabilit. Concepts d'abstraction ou
d'encapsulation sont pri vilgis : l'hritage et le polymorphisme.
n

I : Identit Physique . Un objet n'a d'existence que s'il


est identifiable (matrialise par un OID) invariant dans la vie de l'objet.

C : Construction d'objets complexes et typage


extensible.

E : Encapsulation . un objet comme une "bo te" dont


l'intrieur n'est connu que par les services qu' elle offre .
41

05/05/2009

Bibliographie
n

[Connolly, 2002]
Connolly T., Begg C. (2002) Database Systems, A Practical Approach to Design, Implementation and Management Addison Wesley Chapitre 27 Version franaise aux Editions Reynald Goulet: Systmes de bases de donnes, Approche pratique de la conception, de l'implmentation et de l'administration: chapitre 28

[Cattell, 2000]
Cattell R. et al. (2000) Object Database Standard: ODMG 3.0 Morgan Kaufmann

[Gardarin, 1999] Gardarin, G. (1999): chapitres 11 et 12


Bases de Donnes Objet et Relationnel Eyrolles, 1999

[Godin, 2003] Godin, R.


Systmes de gestion de bases de donnes par l exemple. Montral, Canada: Loze-Dion. Chapitre 16

05/05/2009

42

Approche SGBDO
n

Adopter une approche tout objet


de l analyse l implmentation puis au stockage


n

Penser et grer des objets

de l interface utilisateur au langage de programm ation

Dvelopper de nouveaux syst mes


oublier les systmes relationnels manipuler, stocker et grer des objets

Dfinir les exigences pour de tels syst me

le manifeste des SGBDO

Proposer un standard

Le standard de l ODMG
43

05/05/2009

Definition
Systme de Gestion de Bases de Donn es Objet (SGBDO) n systme regroupant:

fonctionnalits d'un SGBD intgration des concepts objet

pour la mod lisation


objets complexes conception homogne: donnes et programmes concepts de classes et d'hritage

d'un point de vue syst me


stockage efficace pour tous types de donnes recherche gestion de transaction


44

05/05/2009

Le Manifeste des SGBDO Caractristiques obligatoires


n n n n n n n

Objets complexes Identit d'objet Encapsulation Types ou classes Hirarchies de types ou de classes Surcharge et rsolution tardive Compltude

05/05/2009

45

Le Manifeste des SGBDO Caractristiques obligatoires


n n n n n n

Extensibilit Manipulation de donnes Persistence Fiabilit Gestion de la mmoire secondaire Gestion de la concurrence

05/05/2009

46

Manifeste des SGBDO Autres caractristiques


n

Caractristiques Optionnelles

hritage multiple vrification et infrence de types rpartition transaction de conception gestion de versions

Caractristiques Ouvertes

paradigme de programmation systme de reprsentation systme de types uniformit du systme


47

05/05/2009

ODMG
Object Database Manage ment Group

05/05/2009

48

ODMG
www.odmg.org n

Composition

Prsident: Rick Cattell, SUN

Membres

GemStone Systems, IBEX Computing SA, Object Design, Objectivity, O2 Technology, POET Software, UniSQL, Versant Object Technology
n

But

Dfinir un standard permettant la portabilit des schmas de base et des programm es dvelopps sur des SGBDs-OO diffrents
n n

un standard ODMG-93 (94) et son evolution ODMG-II (Mars 1997)

05/05/2009

49

Les standards ODMG -93 et ODMG-II


Dfinition
Spcification
n n

ODL - Object Definition Language OIF - Object Interchange Format Non-Procdural

Manipulation
n

OQL - Object Query Language OML - Object Manipulation Language extensions (binding) Pers istance et Transaction langages gnraux : C++, Smal ltalk puis Java (06/97)

Procdural

Imbrication des langages


50

05/05/2009

Architecture

05/05/2009

51

Exemple UML
Personne nom : String prnom : Stri ng s etNomPrnom(n : String, p : String) Uti lisateur {UNIQU E :idU tilis ateur} idU tilis ateur : String motPas s e : Stri ng 1 {chevauchante, com plte} s etMotPas s e(m : String) nbPrts EnCours () : Integer catgorieUtilis ateur {dis jointe, complte} {disjointe, complte} {Le nombre de PrtEnCours d'un Membre <= nbMaxPrts} Prt datePrt : Date * getEm prunteur() : Utilisateur getExemplaire() : Exem plaire * {s tatut = "prt" s s i PrtEn Cours de l'Exemplaire es t non vi de} {dateRetour >= datePrt}

Mem bre Employ tlphoneRs idence : String PrtArchiv {UNIQUE : codeMatricul e} $ nbMaxPrts : Integer = 5 codeMatricule : String dateRetour : Date catgorieEmploy : enum(bibliothcaire, commis ) $ dureMaxPrts : Integer = 7 nbRetards () : Integer Livre {UN IQUE: ISBN} ISBN : String titre : String 1 anneParution : TypeDonnes Anne

PrtEnCours retour(date : Date) 1 Exemplaire {UN IQU E: i dExem plaire} idExem plaire : String dateAchat : Date 1..* s tatut : enum(prt, dis ponible, retir)

{ordonn} Auteur

1..*

1..*

1..* nbExemplaires Dis ponibles () : Integer Editeur {UN IQUE: nomEditeur} 1 nomEditeur : String ville : String

1
Catgorie {U NIQU E: code} code : String des cripteur : String parent 0..1

*
enfant *

{Il ne peut y avoir plus d'un PrtEnC ours pour un mme Exemplaire}

<<datatype>> TypeDonnes Anne {Integer > 0 }

05/05/2009

52

ODL Object definition language

05/05/2009

53

Types ODL
Distinction

entre Lit ral et Objet

Litral
Types
n

atomiques de type

int, real, string numration enum structures struct, union collections gnriques : set, bag, list, array

Constructeurs
n n n

chaque
n

litral est caractris par sa valeur

L1 et L2 sont gaux si leurs valeurs sont gales

Objet
chaque
n

objet est identifi par son identit


54

O1 et O2 sont gaux si leurs identifiants sont gaux

05/05/2009

Dfinition d interface
n

interface = spcification d un type

super (Hritages simple et multiple) extent, cls candidates attributs


n

attribute <type> <nomattr>; relationship <type> <nomasso> inverse <nom-d-interface>::<nomasso>; <type-retourn> <nommeth> (<type-paramtre> : <type>, raise (<type-d-exception>); <type-paramtre> : in, out, inout )

associations et associations inverses


n n

mthodes
n n n

classe

interface + une implantation particulire du type


n

dans un des LMD disponibles


55

05/05/2009

Dfinition d Interface
n

Description de la structure et du comportement mais pas de l extension

Interface Personne { attribute string nom; attribute string prnom; void setNomPrnom(in string n; in string p); }; n Pas d extent (non instantiable)

Attribut/association
quivalent

lecteur/modif ieur non hrit par interface


05/05/2009 56

Dfinition des m thodes


n

dfinition de l'interface
nom

de la m thode paramtres conditions d'exceptions corps de la m thode


n

exemples
void supprime_pi ce () raises (pice-inexistante) void modif_surface(new-surface) short calcule_surface()
57

05/05/2009

Dfinition des associations


n

Associations binaires

entre deux types de cardinalit 1:1, 1:N, N:M dfinition du lien inverse
n

Exemple
interface Propritaires {.... relationship Set<Appartement> Possde inverse Appartement::Pro p; ...

05/05/2009

58

Exemple interface
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<string> phones; relationship Dept dept inverse Dept::members; float salary(); } interface Dept { attribute string name; attribute Struct Employee::Addr address; relationship Set<Employee> members inverse Employee::dept float totsalary() raise(Uncalculable); 59 } 05/05/2009

Classe et interface ODL


Class Livre ( extent livres ISBN) key { attribute string ISBN; attribute string titre; anneParution; attribute integer relationship set<Exemplaire> lesExemplaires inverse Exemplaire::leLivre relationship list<Auteur> lesAuteurs inverse Auteur::lesLivres integer nbExemplairesDisponibles(); };
05/05/2009 60

Cls
n

Cl = groupe d attributs
interface Person ( key numemp){ attribute string numemp; attribute string numss; attribute string name; attribute date_t birthday attribute Addr addr; }

Cls candidates

spcification de plusieurs cls candidates


interface Person ( key numemp; (numss); (name,birthday) ) { } interface Enseignement( key (filiere,intitule);(salle,heure) ) {

05/05/2009

61

Hritage d'interface (:) et de classe (extends)


Class Utilisateur : Personne extent ( utilisateurs key idUtilisateur) { attribute string nom; attribute string prnom; attribute string idUtilisateur; attribute string motPasse; relationship set<Prt> lesPrts inverse Prt::lUtilisateur void setMotPasse(in String m); integer nbPrtsEnCours(); };

Class Employ extends Utilisateur extent ( employs key codeMatricule) { attribute string codeMatricule; attribute enum CatEmp{bibliothcaire, commis}catgorieEmploy; };
05/05/2009 62

Hritage d'interface (:) et de cl asse (extends)


interface Person { attribute string name; attribute date_t birthday attribute Addr addr; } interface Employee : Person { attribute int basesalary; float salary(); } interface Manager : Employee { attribute int bonus; float salary(); }

05/05/2009

63

Littral ODL

05/05/2009

64

Littral structur
n

typedef : Dfinition de types litraux


typedef int Franc, Euro; typedef struct { string street, string city, int zip } Addr ; typedef enum Couleur {rouge, rose, blanc};

module

regroupement dans le mme espace de nom


module DRH { typedef struct { ... } Addr ; interface Person { ; Addr addr; ... }; }; module Marketing { typedef struct { ... } Addr ; interface Customer { ; Addr deliv_addr; Addr bill_addr; ... }; };

05/05/2009

65

Littral structur
Class Membre extent ( membre key noMembre) { struct typeDonnesAdresse{ integer noCivique; integer numroAppartement; string nomRue; string nomVille; string nomProvince; string nomPays; string codePostal; }; attribute integer noMembre; attribute string nom; attribute string prnom; attribute adresse typeDonnesAdresse; };
05/05/2009

Membre {UNIQUE : noMembre} noMembre : Integer nom : String prnom : String adresse : typeDonnesAdresse

<<dat atype>> typeDonnesAdresse numroCivique : Int eger numroAppartement : Integer nomRue : String nomVille : String nomProvince : String nomPays : String codePostal : String

66

Collections ODL
Class Livre extent ( key { livres ISBN)

attribut set<Exemplaire> lesExemplaires }; Class Exemplaire extent ( exemplaires key idExemplaire) { attribut Livre leLivre };
05/05/2009 67

Association en ODL ( relationship)


Class Livre ( extent key { livres ISBN)

relationship set<Exemplaire> lesExemplaires inverse Exemplaire::leLivre }; Class Exemplaire ( extent exemplaires key idExemplaire) { relationship Livre leLivre Livre::lesExemplaires inverse };
05/05/2009 68

Spcification de la signature des oprations


Class Utilisateur : Personne extent ( utilisateurs key idUtilisateur) { attribute string nom; attribute string prnom; attribute string idUtilisateur; attribute string motPasse; relationship set<Prt> lesPrts inverse Prt::lUtilisateur void setMotPasse(in String m); integer nbPrtsEnCours(); };
05/05/2009 69

Manipulation d'objets et valeur s structures


n

Cration d'objets

via la mthode associe chaque classe

Declare bda Cours bda = Cours(nomC:'BDA' , cycle:2) 1. cre un objet permanent de format Cours 2. rend l'oid (dans la variable bda) 3. si une population existe (EXTENT...) y range l'objet (dans LesCours)
n

Cration de valeurs structur es d'un type existant dans le schma (TYPEDEF)


a = Tadresse(rue:'chemin des oiseaux' , numro:'10A' ,ville:'Morges' , NPA: 1033)
05/05/2009 70

Manipulation d objets et valeurs structures


n

Cration de valeurs structures d'un type nouveau


via

les constructeurs ST RUCT, SET, LIST ...

b = STRUCT(nomCours:'BDA' , nomprof:'C. Parent' ,nomAssistant:'A. Osterwalder' , facult:'HEC' , tudiants:SET ('P. Rochat', 'A. Muller', 'N. Cullot', .))

05/05/2009

71

Exercice : Cration de structure de BD PermaForm

05/05/2009

72

OQL Object Query language

05/05/2009

73

Gnralits
n n

OQL s'appuie sur ODMG/ODL OQL est proche de SQL 92 avec en + :


objets complexes identit path expressions polymorphisme invocation d'oprations "late binding"

05/05/2009

74

Gnralits
n n n n n n

Gestion de sets, bags, lists, arrays, structures Rsultat d'une requte = type ODL => possibilit d'imbrication de requtes simplicit d'utilisation langage dclaratif smantique formelle dfinie simplement OQL peut tre appel dans un programme et rciproquement OQL peut faire appel des programmes externes

05/05/2009

75

SELECT de base
Class Livre ( extent livres key ISBN) { attribute string ISBN; attribute string titre; attribute integer anneParution; relationship set<Exemplaire> lesExemplaires inverse Exemplaire::leLivre; relationship list<Auteur> lesAuteurs inverse Auteur::lesLivres; relationship Editeur lEditeur inverse Editeur::lesLivres; relationship Catgorie laCatgorie inverse Catgorie::lesLivres; integer nbExemplairesDisponibles(); };

Le titre des livres parus aprs 1999


SELECT FROM WHERE l.titre livres AS l l.anneParution > 1999
76

05/05/2009

type du rsultat : litteral bag<String>

Clause DISTINCT
n

Le titre et l'anne des livres parus aprs 1999 sans doublons


SELECT FROM WHERE DISTINCT l.titre, l.anneParution livres l l.anneParution > 1999

type du rsultat : litteral set<struct<titre:String,anneParution integer>>

05/05/2009

77

Constructeur STRUCT
n

Le titre et l'anneParution des livres parus aprs 1999


SELECT FROM WHERE STRUCT(titre:l.titre, anneParution:l.anneParution) livres AS l l.anneParution > 1999

type du rsultat : litteral bag<struct<titre:String,anneParution:integer>>

quivalent
SELECT FROM WHERE l.titre,l.anneParution livres AS l l.anneParution > 1999

type du rsultat : litteral bag<struct<titre:String,anneParution:integer>>


05/05/2009 78

Slection d'objets de la BD
n

Collection de rfrences aux objets de la classe Livre parus aprs 1999


SELECT FROM WHERE l livres l l.anneParution > 1999

type du rsultat : litteral bag<Livres>

Peut ensuite manipuler les objets persistants


79

05/05/2009

Requte sa ns SELECT
n

Collection des livres

livres type du rsultat : set<Livres>

05/05/2009

80

Expressions de chemins
n

Le titre de l objet unLivre (type Livre)


unLivre.titre type du rsultat : String

Exemple avec une op ration


unLivre.nbExemplaires() type du rsultat : litteral integer

05/05/2009

81

Expressions de chemins (suite)


n

Naviguer une associ ation


unLivre.lesExemplaires type du rsultat : set<Exemplaire>

En cascade
unLivre.laCatgorie.leParent type du rsultat : Catgorie

05/05/2009

82

Navigation travers une collection


n

Les idExemplaires d'un livre


SELECT FROM e.idExemplaire unLivre.lesExemplaires AS e type du rsultat : litteral bag<String>

Les idExemplaire des livres de l'anne SELECT e.idExemplaire 2000 FROM livres AS l, l.lesExemplaires AS e
WHERE l.anneParution = 2000

type du rsultat : litteral bag<String> 05/05/2009

83

Navigation travers une collection (suite)


n

Le ISBN des l ivres actuellement emprunts par le membre dont l e SELECT p.lExemplaire.leLivre.ISBN idUtilisateur = unId m, m.lesPrts AS FROM membres AS
WHERE

p m.idUtilisateur = "unID" AND P IN prtsEnCours

type du rsultat : litteral bag<String>

05/05/2009

84

SELECT enchss dans le FROM


n

les idExemplaire des livres de l'an 2000


SELECT e.idExemplaire FROM (SELECT l.lesExemplaires FROM livres AS l WHERE l.anneParution = 2000) AS l2k, l2k.lesExemplaires AS e type du rsultat : litteral bag<String>

05/05/2009

85

SELECT enchss dans la spcification du rsultat d'un SELECT


n

Les ISBN des l ivres de l'an 2000 accompagns de leurs exemplaires emprunts

SELECT STRUCT(ISBN: l.ISBN, emprunts:(SELECT e FROM l.lesExemplaires AS e WHERE e.statut = "prt")) FROM livres AS l WHERE l.anneParution = 2000 type du rsultat : litteral bag<STRUCT<ISBN:String,emprunts:set<Exemplaire>>
05/05/2009 86

Extraction de l'lment d'un si ngleton (ELEMENT)


n

Retourner l objet de la classe Livre qui correspond au ISBN = 111-11111-11


element( SELECT l FROM livres AS l WHERE l.ISBN = "111-11111-11" )

05/05/2009

87

Constructeurs d'objets
n

Le constructeur suivant construit un objet de la classe Exemplaire


Exemplaire( idExemplaire : "A1E2F", dateAchat : date "2000-04-25", statut : "disponible", leLivre : element( SELECT l FROM livres AS l WHERE l.ISBN = "111-11111-11"), LesPrts : set())
Class Exemplaire ( extent exemplaires key idExemplaire) { attribute string idExemplaire; attribute date dateAchat; attribute enum statut {prt,disponible,retir}; relationship Livre leLivre inverse Livre::lesExemplaires relationship set<Prt> lesPrts inverse Prt::lExemplaire 88 };

05/05/2009

Comparaison par identit ou par valeur


n

Le = compare les OID des objets

05/05/2009

89

Quantificateurs FOR ALL et EXISTS


n

Les livres dont tous les exemplaires sont emprunts


SELECT FROM WHERE l livres AS l FOR ALL e IN l.lesExemplaires : e.statut = "prt"

type du rsultat : litteral set<Livre>

Les livres dont au moi ns un exemplaire est emprunt


SELECT FROM WHERE l livres AS l EXISTS e IN l.lesExemplaires : e.statut = "prt"

05/05/2009

type du rsultat : litteral set<Livre>

90

Quantificateurs SOME, ANY et ALL


e1 op {SOME|ANY} e2
EXISTS ele IN e2 : e1 op ele

e1 op ALL e2
FOR ALL ele IN e2 : e1 op ele
05/05/2009 91

16.3.15 Fonctions de groupe


n

Le nombre moye n d exemplaires disponibles par livre


AVG (SELECT FROM l.nbExemplairesDisponibles() livres AS l)

05/05/2009

92

Partition avec GROUP BY


n

Le nombre d exemplaires disponibles par annes de parution pour les annes o le SELECT anne, nombre dpasse 100 nombreDisponibles :
SUM(SELECT l.nbExemplairesDisponible() FROM partition) FROM livres AS l GROUP BY anne : l.anneParution HAVING SUM(SELECT l.nbExemplairesDisponible() FROM partition) > 100 type du rsultat : litteral bag<struct<anne : integer, nombreDisponibles : integer>>

05/05/2009

93

Tri avec ORDER BY


n

SELECT FROM ORDER

Les livres tris par ordre descendant (DESC) de l anne de parution et par ordre ascendant (ASC) du ti tre

l livres AS l BY l.anneParution DESC, l.titre ASC

type du rsultat : litteral set<Livre>

05/05/2009

94

Diagramme pour la structure des donnes de FormaPerm

05/05/2009

95

Syntaxe ODMG
Class Personne ( Extent Personnes ) { Attribute String nom; Attribute list String prenom; Attribute String adresse; Void Afficher() }

05/05/2009

96

Syntaxe ODMG
Class Etudiant : Personne ( Extent Etudiants Key nE ) { Attribute integer nE; Attribute date dateN ; Attribute List Struct Etude {Integer anne; String diplme }etudes; Relationship List<CoursObtenu> cours-obtenus Inverse CoursObtenu::tudiant ; Relationship Set Cours cours-suivis Inverse Cours::tudiants ; Void afficher() ; Void inscrire (Cours nvcours ) ; Void aobtenu (Cours nvcours , Float note , Integer anne ) ; Integer age() }
05/05/2009 97

Syntaxe ODMG
Class CoursObtenu { Attribute Integer anne; Attribute float note ; Relationship Cours cours Inverse Cours::russi ; Relationship Etudiant tudiant Inverse Etudiant::cours-obtenus }

05/05/2009

98

Syntaxe ODMG
Class Enseignant : Personne ( Extent Enseignants ) { Attribute integer tl; Attribute Enum ( "prof", "Assist" ) statut ; Attribute Struct RensBq {String banque ; String agence ; Integer compte } rens.banc; Relationship Set Cours cours-assurs Inverse Cours::prof ; Void afficher() ; Void assure (Cours nvcours ) ; Void nassureplus (Cours oldcours ) }

05/05/2009

99

Syntaxe ODMG
Class Cours ( Extent LesCours Key nomC ) { Attribute String nomC ; Attribute Integer cycle ; Relationship Enseignant prof Inverse Enseignant::cours-assurs ; Relationship Set Etudiant tudiants Inverse Etudiant::cours-suivis ; Relationship Set Cours a-prrequis Inverse Cours::est-prrequis ; Relationship Set Cours est-prrequis Inverse Cours::a-prrequis ; Void Afficher() ; Integer nb-inscrits() }
05/05/2009 100