Escolar Documentos
Profissional Documentos
Cultura Documentos
2
Univers modliser
3
1966: SGBD IDMS & IMS
1970: invention du modle relationnel
1971: recommandations CODASYL
1981: Succs des projets Relationnels
1986: normalisation de SQL1
1990: extensions aux objets et rgles
1990: normes SQL2
1999: normes SQL3 (SQL 99)
20XX : SQL4 ? (Modle Relationnel Objet)
4
Le mapping MCD
vers MLD
La manipulation
de structures
ne peut tre relationnelles par
intgre au modle des langages
perte de
logique, elle doit objets
tre gre au smantique
niveau de
l'implmentation
physique Mthodes dcalage
?
Inc
Modle La 1NF est inapproprie
Relationnel Pb de modlisation
Questionnent
Modle R d'objets complexes
difficult exprimer des
Modle attributs multivalus
sur la
Normalisation plat :
la gestion
des donnes
Normalisation entrane la gense de alphanumri
structures de donnes complexes et ques Les types de donnes
trs fragmentes, qui peuvent disponibles sont
notamment poser des problmes de limits et non
performance ou d'volutivit extensibles
5
le modle logique relationnel a prouv sa puissance et sa fiabilit
au cours des 20 dernires annes,
Avec lavnement du Web au milieu des anne 90, les nouveaux besoins
de l'informatique industrielle ont vu l'mergence
7
Gestion de la persistance et de la coexistence des
objets en mmoire (pour leur manipulation
applicative) et sur disque (pour leur persistance)
complexe
Gestion de la concurrence (transactions) plus
difficile mettre en uvre
Interdpendance forte des objets entre eux
Gestion des pannes
Complexit des systmes (problme de fiabilit)
Problme de compatibilit avec les SGBDR
classiques
8
Les SGBD OO sont plus propres du point de vue objet et
les mieux adapts pour traiter les objets mais ils sont
absents du monde professionnel
9
Modle qui intgre des lments de structure complexe
(temps, multimdia, types utilisateurs, etc.)
10
Table Personnes
Nom {Prenoms} Date_naissance {Voitures}
prenom modele annee no
Ben Mohamed 16-05-1963 Kango 2003 128
Salah
Ali Mgane 2001 371
Ahmed
11
Type simple
Pointeurs
Tables imbriques
Dans une table relationnelle
Dans une table objet
Tables pr-dimensionnes
Manipulation des collections
12
13
CREATE TYPE <nom_type> AS OBJECT (
<attribut1> <type1>,
<attribut2> <type2>,
<attributn> <typen> );
14
15
16
17
18
19
Affichage
20
Mise jour et Suppression
21
22
Cration
CREATE TYPE <nom_type> AS OBJECT (
<attribut1> <type1>,
<attribut2> <type2>,
<attributn> <typen>, );
23
On peut ensuite utiliser ce type objet (ou type
utilisateur)
24
CREATE TYPE t_adresse AS OBJECT
( num NUMBER,
rue VARCHAR2(30),
ville VARCHAR2(20),
codepostal CHAR2(5)) ;
25
Dans une table relationnelle, on lutilise comme un type
prdfini standard.
26
Une table objet relationnelle est une table qui contient des
lments de type objet.
Chaque lment est identifi par un numro appel OID (Object
Identifier).
Exemple avec le type t_adresse
CREATE TABLE adresses OF t_adressse ;
Remarque
On peut crire des contraintes comme en relationnel standard
lors de la cration de la table,
on peut dfinir des cls, etc.
Cas3
CREATE TABLE adresses OF t_adresse (ville DEFAULT Tunis) ;
27
On a une relation dont chaque lment est un objet de type t_adresse.
On peut voir la relation de deux manires diffrentes :
- vision objet
- vision relationnelle
28
Insertion dans une table relationnelle
On utilise le constructeur dobjet
INSERT INTO employes t_adresse pour crire ladresse
VALUES ( 1000, 15, 2000,
t_adresse (2, Rue les orangers,Tunis,1002),
BenFoulen) ;
29
Manipulation : slection cas2
. . . . .
31
Manipulation : interrogation cas3
. . .
32
Manipulation : interrogation cas3
33
Manipulation : interrogation cas3
Interrogation dans une table objet relationnelle
-- a est un alias de table et REF est un mot cl pour rcuprer les OID
Remarque
Dans le cas dune table relationnelle standard utilisant des types objets, on
naura pas dOID pour les n-uplets donc pas de SELECT REF() ou de
SELECT VALUE()
34
Reprsentation UML
35
Reprsentation UML
adresse
36
Exemple de manipulation
UPDATE personne e
SET e.adresse.ville = Tunis',
e.nom = BenFOULEN
WHERE e.nom = BenFOULEN;
37
Recommandation sous Oracle
Faux:
SELECT employeur.activity
FROM Cadre;
Faux:
SELECT Cadre.Employeur.activity
FROM Cadre;
Correct:
SELECT cc.Employeur.activity
FROM Cadre cc;
38