Cours BDOO
Cours BDOO
Cours BDOO
(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
05/05/2009
Structure du cours
Cours magistral n Travaux dirigs n TPs n projet
n
05/05/2009
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
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
Comportement d un objet
n
Stimulation
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
de l objet de manire
Deux objets dont toutes les valeurs d attributs sont identiques n ont pas la mme identit
05/05/2009
Reprsentation d un objet
n
Nom de l objet
Attributs
Mthodes
05/05/2009
10
: L objet Le_conducteur connat l objet Ma_voiture Connatre un objet revi ent avoir une rfrence qui lui correspond
05/05/2009
11
05/05/2009
12
Identit d'objets
possibilit d'isoler les donnes par des oprations facilite l'volution des structures de donnes
n
05/05/2009
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
Base de Donnes
05/05/2009 17
Langages
n
entits (ex : personne) avec leurs caractristiques associes (ex: nom, prnom, fonction ) liens entre les entits (ex : une personne travaille sur un projet)
n
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
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
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
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
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
dept
D1 D1 D1 D2 D2 D2 D3 D3
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
05/05/2009
23
Modle de donnes est trs simple et donc facile comprendre pour les utilisateurs.
des mthodes de conception de schmas (thorie de la normalisation) langages de manipulation de donnes (LMD) standardiss (SQL, ...).
05/05/2009
24
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
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
pas de hirarchie d'entits (modle " plat") pas d'hritage perte d'information smantique maintien de l'intgrit difficile
n
Difficult de la normalisation
Programmation di fficile
05/05/2009
27
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 conceptuelle distante du rel. La modlisation fournit de nombreuses relat ions, en rupture avec le rel, qui est plus simple.
29
05/05/2009
05/05/2009
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
05/05/2009
34
Nouveaux besoins
- Langages OO( Simula,Eiffel, Smalltalk, C++, )
principes :
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
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
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
Accidents
Accident Rapport Photo
24 Alami Rabat
Alami Rachdi
45 17
05/05/2009
38
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
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
05/05/2009
42
Approche SGBDO
n
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:
05/05/2009
Objets complexes Identit d'objet Encapsulation Types ou classes Hirarchies de types ou de classes Surcharge et rsolution tardive Compltude
05/05/2009
45
Extensibilit Manipulation de donnes Persistence Fiabilit Gestion de la mmoire secondaire Gestion de la concurrence
05/05/2009
46
Caractristiques Optionnelles
hritage multiple vrification et infrence de types rpartition transaction de conception gestion de versions
Caractristiques Ouvertes
05/05/2009
ODMG
Object Database Manage ment Group
05/05/2009
48
ODMG
www.odmg.org n
Composition
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
05/05/2009
49
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
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}
05/05/2009
52
05/05/2009
53
Types ODL
Distinction
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
Objet
chaque
n
05/05/2009
Dfinition d interface
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 )
mthodes
n n n
classe
05/05/2009
Dfinition d Interface
n
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
dfinition de l'interface
nom
exemples
void supprime_pi ce () raises (pice-inexistante) void modif_surface(new-surface) short calcule_surface()
57
05/05/2009
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
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
05/05/2009
61
Class Employ extends Utilisateur extent ( employs key codeMatricule) { attribute string codeMatricule; attribute enum CatEmp{bibliothcaire, commis}catgorieEmploy; };
05/05/2009 62
05/05/2009
63
Littral ODL
05/05/2009
64
Littral structur
n
module
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
relationship set<Exemplaire> lesExemplaires inverse Exemplaire::leLivre }; Class Exemplaire ( extent exemplaires key idExemplaire) { relationship Livre leLivre Livre::lesExemplaires inverse };
05/05/2009 68
Cration d'objets
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
b = STRUCT(nomCours:'BDA' , nomprof:'C. Parent' ,nomAssistant:'A. Osterwalder' , facult:'HEC' , tudiants:SET ('P. Rochat', 'A. Muller', 'N. Cullot', .))
05/05/2009
71
05/05/2009
72
05/05/2009
73
Gnralits
n n
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(); };
05/05/2009
Clause DISTINCT
n
05/05/2009
77
Constructeur STRUCT
n
quivalent
SELECT FROM WHERE l.titre,l.anneParution livres AS l l.anneParution > 1999
Slection d'objets de la BD
n
05/05/2009
Requte sa ns SELECT
n
05/05/2009
80
Expressions de chemins
n
05/05/2009
81
En cascade
unLivre.laCatgorie.leParent type du rsultat : Catgorie
05/05/2009
82
Les idExemplaire des livres de l'anne SELECT e.idExemplaire 2000 FROM livres AS l, l.lesExemplaires AS e
WHERE l.anneParution = 2000
83
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
05/05/2009
84
05/05/2009
85
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
05/05/2009
87
Constructeurs d'objets
n
05/05/2009
05/05/2009
89
05/05/2009
90
e1 op ALL e2
FOR ALL ele IN e2 : e1 op ele
05/05/2009 91
05/05/2009
92
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
Les livres tris par ordre descendant (DESC) de l anne de parution et par ordre ascendant (ASC) du ti tre
05/05/2009
94
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