100
05/05/2009 1 Module: Bas es de données Orientées Objet (volume 1) BELASLA El Mehdi [email protected] EMSI 2008/2009

Cours+BDOO

Embed Size (px)

Citation preview

Page 1: Cours+BDOO

05/05/2009 1

Module: Bases de données Orientées Objet

(volume 1)

BELASLA El [email protected]

EMSI 2008/2009

Page 2: Cours+BDOO

205/05/2009

Objectifs du cours

n Apprendre le concept BDOOn Apprendre la manipulation des SGBDOO¨Orienté Objet pure (ODL, OQL..)¨Le relationnel objet (SQL3)

Page 3: Cours+BDOO

305/05/2009

Structure du cours

n Cours magistral n Travaux dirigés n TPsn projet

Page 4: Cours+BDOO

405/05/2009

Plan général du cours

n Introduction à l’Orienté Objetn Problématique des BDs relationnels n Définition des SGBDOn Le standard ODMG ¨ ODL¨ OQL

n L’objet-relationnel¨ SQL3

Page 6: Cours+BDOO

605/05/2009

Définition d ’un objet

n Un objet comme un ensemble comportant :¨ des attributs

n Propriétés de l’objet¨ des méthodes

n Comportements ou op érations ¨ un identifiant (OID)

n Un objet correspondant à un objet réel (matériel ou abstrait). Les valeurs des attributs d éfinissent l'état de l'objet.

Page 7: Cours+BDOO

705/05/2009

Etat d’un objetn 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 caractérisée par :

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

n L’état d’un objet change pendant sa vie¨ L’état d’un objet à un moment donn é est la

conséquence des comportements pass és¨ Exemple :

n Ancienne immatriculation de Ma voiture : « 888 YZ 03 »

Page 8: Cours+BDOO

805/05/2009

Comportement d ’un objetn Actions et réactions possibles

¨ Ensemble d’opérations / méthodesn Exemple de méthodes

¨ démarrer, rouler, stopper, ajouter_essence

n Stimulation¨ Demander à un objet d’effectuer une méthode par un envoi de

messagen Exemple:

Ok = ma_voiture.démarrer()Vol = ma_voiture.ajouter_essence(15)

n Evolution de l ’état¨ L’état d’un objet dépend des opérations effectuées par les différents

appels de méthodes.¨ Certaines opérations dépendent de l ’état courant

n Exemple:¨ La méthode ma_voiture.démarrer() ne fonctionnera seulement

si ma_voiture.volume_essence > 0

Page 9: Cours+BDOO

905/05/2009

Identité d’un objet

n Caractérise l’existence propre de l ’objet¨ Identification de l’objet de manière

n non ambiguën indépendante de son état

Deux objets dont toutes les valeurs

d’attributs sont identiques n’ont pas

la même identité

Page 10: Cours+BDOO

1005/05/2009

Représentation d ’un objet

n Selon le formalisme UML

Ma_voiture

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

Démarrer()Ajouter_essence(entier v)Roulerstopper

Attributs

Méthodes

Nom de l ’objet

Page 11: Cours+BDOO

1105/05/2009

Liens entre les objets

n Pour pouvoir envoyer un message à un objet, il faut le «connaitre»¨ Ex : L’objet Le_conducteur connaît l’objet Ma_voiture¨ Connaître un objet revient à avoir une référence qui

lui correspond

Page 12: Cours+BDOO

1205/05/2009

Représentation des classes d’objets

Page 13: Cours+BDOO

1305/05/2009

L'apport des modèles objetsn Identité d'objets¨ introduction de pointeurs ¨ possibilité de chaînage

n Encapsulation des données¨ possibilité d'isoler les données par des opérations¨ facilite l'évolution des structures de données

n Héritage d'opérations et de structures¨ facilite la réutilisation des types de données¨ permet l'adaptation à son application

n Possibilité d'opérations abstraites (polymorphisme)¨ simplifie la vie du développeur

Page 15: Cours+BDOO

1505/05/2009

Définitionsn Bases de Données : Ensemble structur é de données

enregistrées sur un support disque pour sati sfaire les requêtes de plusieurs utilisateurs « en temps opportun »

n Système de Gestion de Bases de Données (SGBD) : progiciel d ’usage général permettant la gestion de bases de données

Page 16: Cours+BDOO

1605/05/2009

Fonctions d ’un SGBD

n Persistance des donn ées sur disquen Partage des donn ées (gestion des conf lits d ’accès)n Intégrité (respect de contraintes de coh érence)n sûreté de fonctionnement (reprises apr ès panne)n confidentialité (attribution de droits d ’accès)n archivage sur support externes (back -up)

Page 17: Cours+BDOO

1705/05/2009

Schéma général

Administration

•Création des usagers, des droits•Maintenance•Optimisation

Base de Données

Définir un schéma des

données

Conception Utilisation

•Usagers (postes de travail)•programmes

Requêtes :• insertions• mises à jour• sélections

Système de Gestion de Bases de Données

Langage de Définition de Données

Langage de Manipulation de Données

Page 18: Cours+BDOO

1805/05/2009

Langagesn Le Langage de Définition de Données permet de définir la

structure des informations ( métabase):¨ entités (ex : personne) avec leurs caractéristiques associées (ex:

nom, prénom, fonction…)¨ liens entre les entités (ex : une personne travaille sur un projet)

n Le Langage de Manipulation de Donn ées permet d ’adresser des requêtes à la base :¨ insertion de nouvelles entités (ex : embauche d ’un employé),

destruction¨ mise à jour de caractéristiques (ex : changement de fonction)¨ sélection (ex : trouver les personnes dont la fonction est

« ingénieur »)

Page 19: Cours+BDOO

1905/05/2009

Historique des SGBDn Modèle hiérarchiques : données

représentées sous forme d ’une arborescence

n Modèle réseau : représentation sous forme d ’un graphe quelconque

n Modèle relationnel : représentation sous forme de tables

n Modèles orienté objet (représentation sous forme d ’objets) et relationnel-objet(hybridation entre relationnel et objet)

Recherche?

1960

1970

1980

Produits

1970

1980

1990

Page 20: Cours+BDOO

2005/05/2009

Le modèle hiérarchiqueLa base de donn ées est une arborescence. Une donn ée

est soit un nœud, soit une feuille

Problèmes majeurs :n Obligation d ’utiliser la structure d ’arbre pour accéder aux donnéesn redondance des données

Département : recherche

Département : projets

Département : production

Employés : JeanEricLuc

Employés : LouisNicolasAlexandre

Employés : JacquesMichel

Centre : Paris

Centre : Rouen

Centre : Rouen

Page 21: Cours+BDOO

2105/05/2009

Le modèle réseauUne donnée est un nœud d ’un graphe quelconque

Département : recherche

Département : projets

Département : production

Employés : JeanEricLuc

Employés : LouisNicolasAlexandre

Employés : JacquesMichel

Centre : Paris

Centre : Rouen

Centre : Rouen

n Insuffisance du modèle réseau :n Trop grande complexité du graphen une requête se traduit par un programme de parcours complexes

Départements

Employés Centres

Page 22: Cours+BDOO

2205/05/2009

Le modèle relationnelReprésentation par des tables ind épendantes

n Simplicité : description par des tables indépendantesn autonomie : chaque table est un point d ’entrée de la basen puissance de l ’expression des requêtes (requêtes déclaratives)

Table des Départements

ID nom centreD1 Recherche C2D2 Projets C1D3 Production C1

Table des Employés

deptnomJean D1 Éric D1 Luc D1 Louis D2 Nicolas D2 Alexandre D2 Jacques D3 Michel D3

Table des CentresID nomC1 Paris C2 Rouen

Page 23: Cours+BDOO

2305/05/2009

ProductionProjetsMichel

JacquesAlexandre

NicolasLouis

MichelEric

Le modèle orienté objet

Représentation par des graphes d ’objets

Employé

nom

Jean

Département

nom

Centre

nom

Recherche

RouenParis

EmbaucherMuter ()

Déménager ()

Créer ()

Page 24: Cours+BDOO

2405/05/2009

Avantages des SGBD relationnels

n Modèle de données est très simple et donc facile àcomprendre pour les utilisateurs.

n Le modèle repose sur une base formellement définie _ définir :¨ des méthodes de conception de schémas (théorie de la

normalisation)¨ langages de manipulation de données (LMD) standardisés

(SQL, ...).

Page 25: Cours+BDOO

2505/05/2009

Avantages des SGBD relationnels n La modélisation normalisée

¨ décomposer les données en sous-ensembles indivisibles et les relier par DF _ niveau le plus fin,# redondances et fusions.

n Formes Normales1 ère forme normale : Une relation est en première forme normale si tout attribut est élémentaire et non répétitif.

2 ième forme normale : Une relation est en deuxième forme normale si elle est en première forme normale et que tout attribut non-clé est en dépendance fonctionnelle de toute la clé.

3ième forme normale : Une relation est en troisième forme normale si elle est en seconde forme normale et que tout attribut non-clé n’est en dépendance fonctionnelle que de la clé primaire.

Page 26: Cours+BDOO

2605/05/2009

n SQL, langage assez " propre" (≠ Fortran, C)n Indépendance physiqu e (et un peu logique) : changer le

type de stockage => no pb !n Optimisations nombreusesn Gestion de la conf identialité...n Modèle standardn Parallélismen Puissance des entrepri ses leaders (ORACLE, DB2 …)

Avantages des SGBD relationnels

Page 27: Cours+BDOO

2705/05/2009

limitations du mod èle relationnel

n Prise en compte de la s émantique difficile¨ pas de hiérarchie d'entités (modèle "à plat")¨ pas d'héritage¨ perte d'information sémantique¨ maintien de l'intégrité difficile

n Difficulté de la normalisation¨ éclatement en une multitude de relations¨ multiplicité des opérations de jointure

n Programmation di fficile¨ plongement de SQL dans un autre langage

Page 28: Cours+BDOO

2805/05/2009

Limites des SGBD relationnels

n Modèle de données :¨ trop simple¨ Ne permet pas de repr ésenter facilement les objets du

monde réel (plus complexes qu'une relation).

n Dans les schémas, les objets du monde réel sont éclatés en plusieurs relations, _ multiplie les jointures dans les requêtes des utilisateurs.

Page 29: Cours+BDOO

2905/05/2009

Représentation complexe du réel avec le relationnel

n Représentation conceptuelle distante du réel. La modélisation fournit de nombreuses relat ions, en rupture avec le réel, qui est plus simple.

1 Entité génère 2 tables ??

Page 30: Cours+BDOO

3005/05/2009

Limites des SGBDR : Exemplen On désire conserver dans BD g éographique (réseau routier).

n Pour définir le réseau routier, on part de points d'intersection qui sont les points ou plusieurs routes se croisent ou qui correspondent à un changement de caractéristiques d'une route. Un point d'intersection est caractérisée par ses coordonnées géographiques (latitude et longitude).

n On considère alors des segments de route qu i sont des tronçons de route situées entre deux points d'intersection. Outre ses points d'origine et de destination, une information de catégorie (deux bandes, quatre bandes, . . .) caractérise chaque segment.

n Une route est désignée par un identifiant (N4, S22, P602, . . .) et est décrite par un ensemble de segments. De plus pour chaque route onconserve la désignation de l'autorité (région, commune, . . .) qui la gère.

Page 31: Cours+BDOO

3105/05/2009

n Un schéma 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)

n Il faut noter que l'usage des identi fiants permet par exemple d'avoir deux segments de route entre les mêmes points, ou de repr ésenter sans Ambiguïté qu'un même segment f ait partie de plusieurs routes.

Limites des SGBD relationnels

Page 32: Cours+BDOO

3205/05/2009

Limites des SGBD relationnels

autorite3 LS#3 R#3 autorite2 LS#2 R#2

autorite1 LS#1 R#1

AUTORITE

ID LISTE SEG ID R

cat3 P#32 P#31 SEG#3 cat2 P#22 P#21 SEG#2 cat1 P#12 P#11 SEG#1

CATEGORIE ID P2 ID P1 ID SEG

POINTS

long3 lat3 P#3 long2 lat2 P#2 long1 lat1 P#1

LONGITUDE LATITUDE ID P

SEGMENTS

ROUTES

5 SEG#2 LS#2 SEG#2 LS#4 SEG#2 LS#3 SEG#1 LS#2 SEG#1 LS#1 SEG#1 LS#

ID SEGID LISTE SEG

Page 33: Cours+BDOO

3305/05/2009

Limites des SGBDR

n Constats :¨ les bases de donn ées sont relationnelles¨ les grands constructeurs de SGBD -R sont riches et

puissants¨ le modèle relationnel est tr ès limité car :

n il n'existe pas de constructeurs de typesn le nombre de types pr é-definis est très faible

¨ les nouvelles applicati ons (en particulier multim édia) exigent plus de souplesse

Page 34: Cours+BDOO

3405/05/2009

Il est nécessaire d'avoir la possibilité de décrire des objets complexes (complex Objects) dans une base de données.

Un objet complexe est un objet qui n'est pas caractérisé par une seule valeur, mais bien par un ensemble structuré de valeurs..

Limites des SGBD relationnels conclusion

Page 35: Cours+BDOO

3505/05/2009

- Langages OO( Simula,Eiffel, Smalltalk, C++,…)

_ accroître la productivité ( logiciels structurés, extensibles, réutilisables et de maintenance aisée..).

principes : ¨ les objets (2 parties): valeur / opérations (méthodes: manipuler

les objets)n Valeur cachée(accès et MAJ par méthodes). n Maintenance facile des logiciels.

¨ l'héritage, qui permet à une classe d'objets d'avoir les mêmes propriétés (structure de données et méthodes) qu'une autre classe sans avoir à les redéfinir_ étendre et réutiliser facilement des logiciels.

Nouveaux besoins

Page 36: Cours+BDOO

3605/05/2009

Deux solutions (1)

n abandonner le modèle relationnel et construire un nouveau modèle "objet" de BD.

n Commercialisation SGBD lente (créneaux spécialisés).

n Passage des SGBDR passer brutalement à des modèles objets : raisons économiques compréhensibles.

Page 37: Cours+BDOO

3705/05/2009

Deux solutions (2)

§ Étendre le modèle relationnel modèle _ objet-relationnel (relationnel -objet").

§ Modèle relationnel compatible avec les " règles" objet.

§ 3 extensions p/r mod èle relationnel standard :

¨ Introduction des objets, via leur identifiant (oid : objectidentifier)

¨ Incorporation de structures complexes TAD: les types abstraits de données

¨ Modélisation des associations

Page 38: Cours+BDOO

3805/05/2009

Exemple de table et objet

24 RabatAlamiConducteur Age

45Alami17Rachdi

Rapport

134

219

Photo

037

Accident

Police Nom Adresse Conducteurs Accidents

Page 39: Cours+BDOO

3905/05/2009

SGBD Relationnel / Object

Et autres …DB2-InformixSybase

Oracle 8i, 9i, 10 j

Page 40: Cours+BDOO

4005/05/2009

SGBDO 1ère BD, Gemstone (1983) élaborée à partir de Smalltalk. Variété de BD "orientées objet" dans le domaine expérimentalet 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)

Page 41: Cours+BDOO

4105/05/2009

§ R : Réutilisabilité. Concepts d'abstraction ou d'encapsulation sont pri vilégiés : l'héritage et le polymorphisme.

n I : Identité Physique . Un objet n'a d'existence que s'il est identifiable (matérialisée par un OID) invariant dans la vie de l'objet.

n C : Construction d'objets complexes et typage extensible.

n E : Encapsulation . un objet comme une "bo îte" dont l'intérieur n'est connu que par les services qu' elle offre .

Propriété RICE (Miranda)

Page 42: Cours+BDOO

4205/05/2009

Bibliographien [Connolly, 2002]

Connolly T., Begg C. (2002)Database Systems, A Practical Approach to Design, Implementation and ManagementAddison Wesley Chapitre 27Version française aux Editions Reynald Goulet:Systèmes de bases de données,Approche pratique de la conception, de l'implémentation et de l'administration: chapitre 28

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

n [Gardarin, 1999] Gardarin, G. (1999): chapitres 11 et 12Bases de Données Objet et RelationnelEyrolles, 1999

n [Godin, 2003] Godin, R.Systèmes de gestion de bases de données par l’exemple. Montréal, Canada: Loze-Dion.Chapitre 16

Page 43: Cours+BDOO

4305/05/2009

Approche SGBDO

n Adopter une approche tout objet¨ de l ’analyse à l ’implémentation puis au stockage

n Penser et gérer des objets¨ de l ’interface utilisateur au langage de programmation

n Développer de nouveaux syst èmes¨ « oublier » les systèmes relationnels¨ manipuler, stocker et gérer des objets

n Définir les exigences pour de tels syst ème¨ le manifeste des SGBDO

n Proposer un standard¨ Le standard de l ’ODMG

Page 44: Cours+BDOO

4405/05/2009

Definition Système de Gestion de Bases de Donn ées Objet (SGBDO)n système regroupant:

¨ fonctionnalités d'un SGBD¨ intégration des concepts objet

n pour la modélisation¨ objets complexes¨ conception homogène: données et programmes¨ concepts de classes et d'héritage

n d'un point de vue syst ème¨ stockage efficace pour tous types de données¨ recherche¨ gestion de transaction

Page 45: Cours+BDOO

4505/05/2009

Le Manifeste des SGBDOCaractéristiques obligatoiresn Objets complexesn Identité d'objetn Encapsulation n Types ou classesn Hiérarchies de types ou de classesn Surcharge et résolution tardiven Complétude

Page 46: Cours+BDOO

4605/05/2009

Le Manifeste des SGBDOCaractéristiques obligatoiresn Extensibilitén Manipulation de données n Persistence n Fiabilitén Gestion de la mémoire secondaire n Gestion de la concurrence

Page 47: Cours+BDOO

4705/05/2009

Manifeste des SGBDOAutres caractéristiquesn Caractéristiques Optionnelles¨ héritage multiple¨ vérification et inférence de types¨ répartition¨ transaction de conception¨ gestion de versions

n Caractéristiques Ouvertes¨ paradigme de programmation¨ système de représentation¨ système de types¨ uniformité du système

Page 48: Cours+BDOO

05/05/2009 48

ODMGObject Database Manage ment Group

Page 49: Cours+BDOO

4905/05/2009

ODMGwww.odmg.org

n Composition¨ Président: Rick Cattell, SUN

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

n But¨ Définir un standard permettant la portabilité des schémas de

base et des programmes développés sur des SGBDs-OO différentsn un standard ODMG-93 (94)n et son evolution ODMG-II (Mars 1997)

Page 50: Cours+BDOO

5005/05/2009

Les standards ODMG -93 et ODMG-II

Définition¨ Spécification

n ODL - Object Definition Languagen OIF - Object Interchange Format

¨Manipulationn Non-Procédural

¨ OQL - Object Query Languagen Procédural

¨ OML - Object Manipulation Language§ extensions (binding) Pers istance et Transaction§ langages généraux : C++, Smal ltalk puis Java (06/97)

n Imbrication des langages

Page 52: Cours+BDOO

5205/05/2009

Exemple UMLPersonne

nom : Stringprénom : String

setNomPrénom(n : String, p : String)

Mem bretéléphoneRésidence : String$ nbMaxPrêts : Integer = 5$ duréeMaxPrêts : Integer = 7

nbRetards() : Integer

PrêtEnCours

retour(date : Date)

PrêtArchivédateRetour : Date

{dateRetour >= datePrêt}

{s tatut = "prêté" ss i PrêtEnCours de l 'Exemplaire est non vide}

{Le nombre de PrêtEnCours d'un Membre <= nbMaxPrêts}

Employé{UNIQUE : codeMatricule}codeMatricule : StringcatégorieEmployé : enum(bibliothécaire, commis)

catégorieUtil isateur

Catégorie{UNIQUE: code}code : Stringdescripteur : String

0..1

*

parent 0..1

enfant

*

Auteur

Editeur{UNIQUE: nomEditeur}nomEditeur : Stringville : String

Livre{UNIQUE: ISBN}ISBN : Stringtitre : StringannéeParution : TypeDonnéesAnnée

nbExemplairesDisponibles() : Integer

*1

*1

1..*1..* 1. .*1..*

1

1..*

1

1..*

Exemplaire{UNIQUE: idExem plaire}idExem plaire : StringdateAchat : Datestatut : enum(prêté, disponible, retiré)1..*

11..*

1

PrêtdatePrêt : Date

getEm prunteur() : Util isateurgetExemplaire() : Exem plaire

1

*

1

*

Uti lisateur{UNIQUE :idUtil isateur}idUti lisateur : StringmotPasse : String

setMotPasse(m : String)nbPrêtsEnCours() : Integer

*1 *1

{ordonné}

{Il ne peut y avoir plus d'un PrêtEnCours pour un même Exemplaire}

{disjointe, complète}{dis jointe, complète}

{chevauchante, complète}

TypeDonnéesAnnée{Integer > 0 }

<<datatype>>

Page 53: Cours+BDOO

05/05/2009 53

ODLObject definition language

Page 54: Cours+BDOO

5405/05/2009

Types ODL ¨ Distinction entre Lit éral et Objet

n Litéral¨ Types atomiques

n int, real, string¨ Constructeurs de type

n énumération enumn structures struct, unionn collections génériques : set, bag, list, array

¨ chaque litéral est « caractérisé » par sa valeurn L1 et L2 sont égaux si leurs valeurs sont égales

n Objet¨ chaque objet est identifi é par son identité

n O1 et O2 sont égaux si leurs identifiants sont égaux

Page 55: Cours+BDOO

5505/05/2009

Définition d ’interface n interface = spécification d ’un type

¨ super (Héritages simple et multiple)¨ extent, clés candidates¨ attributs

n attribute <type> <nomattr>;¨ associations et associations inverses

n relationship <type> <nomasso>n inverse <nom-d-interface>::<nomasso>;

¨ méthodesn <type-retourné> <nommeth> (<type-paramêtre> : <type>, …)n raise (<type-d-exception>);n <type-paramêtre> : in, out, inout

n classe¨ interface + une implantation particulière du type

n dans un des LMD disponibles

Page 56: Cours+BDOO

5605/05/2009

Interface Personne{

attribute string nom;attribute string prénom;void setNomPrénom(in string n; in string p);

};

Définition d ’Interface

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

n Pas d ’extent (non instantiable)n Attribut/association¨ équivalent lecteur/modif ieur¨ non hérité par interface

Page 57: Cours+BDOO

5705/05/2009

Définition des méthodes n définition de l'interface¨ nom de la méthode¨ paramètres¨ conditions d'exceptions¨ corps de la méthode

n exemplesvoid supprime_pièce () raises (pièce-inexistante)void modif_surface(new-surface)short calcule_surface()

Page 58: Cours+BDOO

5805/05/2009

Définition des associations

n Associations binaires¨ entre deux types¨ de cardinalité 1:1, 1:N, N:M¨ définition du lien inverse

n Exemple

interface Propriétaires{....relationship Set<Appartement>Possède inverse Appartement::Prop;...

Page 59: Cours+BDOO

5905/05/2009

Exemple interface

interface Employee {attribute int numemp; attribute string name;attribute float basesalary; attribute Date birthday;attribute Struct Addr { string street, string city, intzip} 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::deptfloat totsalary() raise(Uncalculable);

}

Page 60: Cours+BDOO

6005/05/2009

Classe et interface ODL

Class Livre( extent livres key ISBN){

attribute string ISBN;attribute string titre;attribute integer annéeParution;relationship set<Exemplaire> lesExemplaires

inverse Exemplaire::leLivrerelationship list<Auteur> lesAuteurs

inverse Auteur::lesLivresinteger nbExemplairesDisponibles();

};

Page 61: Cours+BDOO

6105/05/2009

Clésn Clé = groupe d ’attributs

n Clés candidates¨ spécification de plusieurs clés candidates

interface Person ( key numemp){attribute string numemp;attribute string numss;attribute string name;attribute date_t birthdayattribute Addr addr;

}

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

Page 62: Cours+BDOO

6205/05/2009

Héritage d'interface (:) et de classe (extends)

Class Utilisateur : Personne( extent utilisateurs key idUtilisateur){

attribute string nom;attribute string prénom;attribute string idUtilisateur;attribute string motPasse;relationship set<Prêt> lesPrêts

inverse Prêt::lUtilisateurvoid setMotPasse(in String m);integer nbPrêtsEnCours();

};

Class Employé extends Utilisateur( extent employés key codeMatricule){

attribute string codeMatricule;attribute enum CatEmp{bibliothécaire, commis}catégorieEmployé;

};

Page 63: Cours+BDOO

6305/05/2009

Héritage d'interface (:) et de cl asse (extends)

interface Person {attribute string name;attribute date_t birthdayattribute Addr addr;

}interface Employee : Person {

attribute int basesalary;float salary();

}interface Manager : Employee {

attribute int bonus;float salary();

}

Page 65: Cours+BDOO

6505/05/2009

Littéral structurén typedef : Définition de types litéraux

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

n module¨ regroupement dans le même 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; ... };};

Page 66: Cours+BDOO

6605/05/2009

Littéral structuré

Class Membre( extent membre

key noMembre){

struct typeDonnéesAdresse{integer noCivique;integer numéroAppartement;string nomRue;string nomVille;string nomProvince;string nomPays;string codePostal;

};attribute integer noMembre;attribute string nom;attribute string prénom;attribute adresse typeDonnéesAdresse;

};

Membre{UNIQUE : noMembre}noMembre : Integernom : Stringprénom : Stringadresse : typeDonnéesAdresse

typeDonnéesAdressenuméroCivique : IntegernuméroAppartement : IntegernomRue : StringnomVille : StringnomProvince : StringnomPays : StringcodePostal : String

<<datatype>>

Page 67: Cours+BDOO

6705/05/2009

Collections ODLClass Livre( extent livres key ISBN){

…attribut set<Exemplaire> lesExemplaires…

};

Class Exemplaire( extent exemplaires key idExemplaire){

…attribut Livre leLivre…

};

Page 68: Cours+BDOO

6805/05/2009

Association en ODL ( relationship)Class Livre( extent livres key ISBN){

…relationship set<Exemplaire> lesExemplaires

inverse Exemplaire::leLivre…

};

Class Exemplaire( extent exemplaires key idExemplaire){

…relationship Livre leLivre

inverse Livre::lesExemplaires…

};

Page 69: Cours+BDOO

6905/05/2009

Spécification de la signature des opérations

Class Utilisateur : Personne( extent utilisateurs key idUtilisateur){

attribute string nom;attribute string prénom;attribute string idUtilisateur;attribute string motPasse;relationship set<Prêt> lesPrêts

inverse Prêt::lUtilisateurvoid setMotPasse(in String m);integer nbPrêtsEnCours();

};

Page 70: Cours+BDOO

7005/05/2009

Manipulation d'objets et valeurs structuréesn Création d'objets

¨ via la méthode associée à chaque classe

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

LesCours)

n Création de valeurs structur ées d'un type existant dans le schéma (TYPEDEF)a = Tadresse(rue:'chemin des oiseaux' ,

numéro:'10A' ,ville:'Morges' , NPA: 1033)

Page 71: Cours+BDOO

7105/05/2009

Manipulation d ’objets et valeurs structurées n Création de valeurs structurées 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', ….))

Page 72: Cours+BDOO

7205/05/2009

Exercice : Création de structure de BD PermaForm

Page 74: Cours+BDOO

7405/05/2009

Généralités

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

¨ objets complexes¨ identité¨ path expressions¨ polymorphisme¨ invocation d'opérations¨ "late binding"

Page 75: Cours+BDOO

7505/05/2009

Généralités

n Gestion de sets, bags, lists, arrays, structuresn Résultat d'une requête = type ODL => possibilit é

d'imbrication de requêtesn simplicité d'utilisationn langage déclaratifn sémantique formelle définie simplementn OQL peut être appel é dans un programme et

réciproquement OQL peut faire appel à des programmes externes

Page 76: Cours+BDOO

7605/05/2009

SELECT de base

n Le titre des livres parus après 1999SELECT l.titre FROM livres AS l WHERE l.annéeParution > 1999 type du résultat : litteral bag<String>

Class Livre ( extent livres key ISBN) { attribute string ISBN; attribute string titre; attribute integer annéeParution; relationship set<Exemplaire> lesExemplaires inverse Exemplaire::leLivre; relationship list<Auteur> lesAuteurs inverse Auteur::lesLivres; relationship Editeur lEditeur inverse Editeur::lesLivres; relationship Catégorie laCatégorie inverse Catégorie::lesLivres; integer nbExemplairesDisponibles(); };

Page 77: Cours+BDOO

7705/05/2009

Clause DISTINCT

n Le titre et l'année des livres parus après 1999 sans doublons

SELECT DISTINCT l.titre, l.annéeParutionFROM livres lWHERE l.annéeParution > 1999

type du résultat :litteral set<struct<titre:String,annéeParution integer>>

Page 78: Cours+BDOO

7805/05/2009

Constructeur STRUCT

n Le titre et l'annéeParution des livres parus après 1999

n Équivalent à

SELECT STRUCT(titre:l.titre, annéeParution:l.annéeParution)FROM livres AS lWHERE l.annéeParution > 1999

type du résultat :litteral bag<struct<titre:String,annéeParution:integer>>

SELECT l.titre,l.annéeParutionFROM livres AS lWHERE l.annéeParution > 1999

type du résultat :litteral bag<struct<titre:String,annéeParution:integer>>

Page 79: Cours+BDOO

7905/05/2009

Sélection d'objets de la BD

n Collection de références aux objets de la classe Livre parus après 1999

n Peut ensuite manipuler les objets persistants

SELECT lFROM livres lWHERE l.annéeParution > 1999

type du résultat :litteral bag<Livres>

Page 80: Cours+BDOO

8005/05/2009

Requête sans SELECT

n Collection des livreslivres

type du résultat :set<Livres>

Page 81: Cours+BDOO

8105/05/2009

Expressions de chemins

n Le titre de l ’objet unLivre (type Livre)

n Exemple avec une opération

unLivre.titretype du résultat :String

unLivre.nbExemplaires()type du résultat :litteral integer

Page 82: Cours+BDOO

8205/05/2009

Expressions de chemins (suite)

n Naviguer une association

n En cascade

unLivre.lesExemplairestype du résultat :set<Exemplaire>

unLivre.laCatégorie.leParent

type du résultat :Catégorie

Page 83: Cours+BDOO

8305/05/2009

Navigation à travers une collectionn Les idExemplaires d'un livre

n Les idExemplaire des livres de l'année 2000

SELECT e.idExemplaireFROM unLivre.lesExemplaires AS e

type du résultat :litteral bag<String>

SELECT e.idExemplaireFROM livres AS l, l.lesExemplaires AS eWHERE l.annéeParution = 2000

type du résultat :litteral bag<String>

Page 84: Cours+BDOO

8405/05/2009

Navigation à travers une collection (suite)n Le ISBN des l ivres actuel lement

empruntés par le membre dont le idUtilisateur = ‘unId’SELECT p.lExemplaire.leLivre.ISBNFROM membres AS m, m.lesPrêts AS pWHERE m.idUtilisateur = "unID" AND

P IN prêtsEnCours

type du résultat :litteral bag<String>

Page 85: Cours+BDOO

8505/05/2009

SELECT enchâss é dans le FROMn les idExemplaire des livres de l'an 2000SELECT e.idExemplaireFROM (SELECT l.lesExemplaires FROM livres AS l WHERE l.annéeParution = 2000) AS l2k, l2k.lesExemplaires AS e

type du résultat :litteral bag<String>

Page 86: Cours+BDOO

8605/05/2009

SELECT enchâss é dans la spécification du résultat d'un SELECT

n Les ISBN des l ivres de l'an 2000 accompagnés de leurs exemplaires empruntés

SELECT STRUCT(ISBN: l.ISBN, emprunts:(SELECT e FROM l.lesExemplaires AS e WHERE e.statut = "prêté"))FROM livres AS lWHERE l.annéeParution = 2000

type du résultat :litteral bag<STRUCT<ISBN:String,emprunts:set<Exemplaire>>

Page 87: Cours+BDOO

8705/05/2009

Extraction de l'élément d'un singleton (ELEMENT)

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

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

)

Page 88: Cours+BDOO

8805/05/2009

Constructeurs d'objetsn Le constructeur suivant construit un objet de la classe Exemplaire

Class Exemplaire( extent exemplaires key idExemplaire){

attribute string idExemplaire;attribute date dateAchat;attribute enum statut {prêté,disponible,retiré};relationship Livre leLivre

inverse Livre::lesExemplairesrelationship set<Prêt> lesPrêts

inverse Prêt::lExemplaire};

Exemplaire(idExemplaire : "A1E2F",dateAchat : date "2000-04-25",statut : "disponible",leLivre : element( SELECT l FROM livres AS l WHERE l.ISBN = "111-11111-11"),LesPrêts : set())

Page 89: Cours+BDOO

8905/05/2009

Comparaison par identit é ou par valeurn Le = compare les OID des objets

Page 90: Cours+BDOO

9005/05/2009

Quantificateurs FOR ALL et EXISTSn Les livres dont tous les exemplaires sont

empruntés

n Les livres dont au moi ns un exemplaire est emprunt é

SELECT lFROM livres AS lWHERE FOR ALL e IN l.lesExemplaires : e.statut = "prêté"

type du résultat :litteral set<Livre>

SELECT lFROM livres AS lWHERE EXISTS e IN l.lesExemplaires : e.statut = "prêté"

type du résultat :litteral set<Livre>

Page 91: Cours+BDOO

9105/05/2009

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

Page 92: Cours+BDOO

9205/05/2009

16.3.15 Fonctions de groupe

n Le nombre moyen d’exemplaires disponibles par livreAVG (SELECT l.nbExemplairesDisponibles() FROM livres AS l)

Page 93: Cours+BDOO

9305/05/2009

Partition avec GROUP BY

n Le nombre d’exemplaires disponibles par années de parution pour les années où le nombre dépasse 100SELECT année,nombreDisponibles : SUM(SELECT l.nbExemplairesDisponible() FROM partition)FROM livres AS lGROUP BY année : l.annéeParutionHAVING SUM(SELECT l.nbExemplairesDisponible() FROM partition) > 100

type du résultat :litteral bag<struct<année : integer, nombreDisponibles : integer>>

Page 94: Cours+BDOO

9405/05/2009

Tri avec ORDER BY

n Les livres triés par ordre descendant (DESC) de l ’année de parution et par ordre ascendant (ASC) du ti treSELECT lFROM livres AS lORDER BY l.annéeParution DESC, l.titre ASC

type du résultat :litteral set<Livre>

Page 95: Cours+BDOO

9505/05/2009

Diagramme pour la structure des données de FormaPerm

Page 96: Cours+BDOO

9605/05/2009

Syntaxe ODMG

Class Personne( Extent Personnes )

{ Attribute String nom;Attribute list String prenom;Attribute String adresse;Void Afficher()

}

Page 97: Cours+BDOO

9705/05/2009

Syntaxe ODMGClass Etudiant : Personne( Extent Etudiants

Key n°E ){ Attribute integer n°E;Attribute date dateN ;Attribute List Struct Etude {Integer année; String diplôme }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 année ) ;Integer age()

}

Page 98: Cours+BDOO

9805/05/2009

Syntaxe ODMG

Class CoursObtenu{ Attribute Integer année;Attribute float note ;Relationship Cours cours

Inverse Cours::réussi ;Relationship Etudiant étudiant

Inverse Etudiant::cours-obtenus}

Page 99: Cours+BDOO

9905/05/2009

Syntaxe ODMGClass Enseignant : Personne( Extent Enseignants ){ Attribute integer tél;Attribute Enum ( "prof", "Assist" ) statut ;Attribute Struct RensBq {String banque ;

String agence ;Integer compte } rens.banc;

Relationship Set Cours cours-assurés Inverse Cours::prof ;

Void afficher() ;Void assure (Cours nvcours ) ;Void nassureplus (Cours oldcours )}

Page 100: Cours+BDOO

10005/05/2009

Syntaxe ODMGClass Cours( Extent LesCours

Key nomC ){ Attribute String nomC ;

Attribute Integer cycle ;Relationship Enseignant prof

Inverse Enseignant::cours-assurés ;Relationship Set Etudiant étudiants

Inverse Etudiant::cours-suivis ;Relationship Set Cours a-prérequis

Inverse Cours::est-prérequis ;Relationship Set Cours est-prérequis

Inverse Cours::a-prérequis ;Void Afficher() ;Integer nb-inscrits()

}