Você está na página 1de 38

1 ING

Institut Suprieur dInformatique ISI - Tunis


Introduction
Quelques dates
Inconvnients du modle Relationnel
Rflexions sur le modle Objet
Avantages du modle Relationnel et du modle objet
SGBD OO versus SGBD RO
SQL3 : 1re Partie : Cration de Type

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

la ncessit de supporter des donnes complexes au sein de la base de


donnes sest amplifie

do BD Objet qui supporte :


des donnes gomtriques
Gographiques
Audiovisuels
donnes multimdia

La naissance du courant orient objet et


des langages associes (Java et C++ par exemple) ont donc
galement investi le champ des SGBD afin de proposer des
solutions pour tendre les concepts du relationnel et ainsi mieux
rpondre aux nouveaux besoins de modlisation
6
Le schma d'une BD objet contient plus de smantique,
il est plus proche des entits relles
L'hritage permet de mieux structurer le schma
La cration de ses propres types et l'intgration de mthodes permettent une
reprsentation plus directe du domaine
L'identification des objets permet de supprimer les cls artificielles souvent
introduites pour atteindre la 3NF et donc de simplifier le schma
Les principes d'encapsulation et d'abstraction du modle (notion interface)

Fond sur une thorie


rigoureuse et des principes Modle
simples
Mature, fiable, performant Objet
Indpendance programme et
donnes
SGBDR : les plus utiliss,
connus, matriss
SQL: une implmentation Modle
standard du modle
relationnel, avec des API pour Relationnel
la plupart des langages de
programmation Modle
Les SGBDR incluent des outils
performants de gestion de Objet
requtes, de
gnrateurs d'applications, Relationnel
d'administration,
d'optimisation, etc.

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

Les SGBD RO sont bass sur des SGBD robustes et


prouvs rpandus dans le monde professionnel.

Dans le monde professionnel, les concepteurs et les


utilisateurs de BD ne sont pas prts remettre en cause
leurs savoirs et redvelopper toutes leurs applications sur
de nouveaux systmes. Do on privilgie les SGBD RO.

9
Modle qui intgre des lments de structure complexe
(temps, multimdia, types utilisateurs, etc.)

Une relation sera en NF2 (Non First Normal Form) et pourra


contenir un attribut compos dune liste de valeurs ou de
plusieurs attributs.

Les types utiliss sont


les types standards existant dans les BD classiques :
VARCHAR, NUMBER
les types utilisateurs (types objet) : ils ont une structure
complexe et peuvent contenir des oprations
(mthodes).
dfinis par le concepteur de la base
utiliss comme des types standards

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

Ben Leila 29-02-1980 Twingo 1999 17


Abdallah
Fatma

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>, );

CREATE TYPE t_adresse AS OBJECT


( num NUMBER,
rue VARCHAR2(30),
ville VARCHAR2(20),
codepostal CHAR2(5)) ;

23
On peut ensuite utiliser ce type objet (ou type
utilisateur)

soit pour dfinir dautres types objet qui


contiennent cette structure.(voir cas1)

soit pour dfinir une table relationnelle standard


.(voir cas2)

soit pour dfinir une table relationnelle objet (ou


table objet relationnelle) (voir cas3)

24
CREATE TYPE t_adresse AS OBJECT
( num NUMBER,
rue VARCHAR2(30),
ville VARCHAR2(20),
codepostal CHAR2(5)) ;

CREATE TYPE t_personne AS OBJECT


( nom VARCHAR2(30),
prenom VARCHAR2(30),
Cas1
adresse t_adresse ) ;

25
Dans une table relationnelle, on lutilise comme un type
prdfini standard.

CREATE TABLE employes


( num NUMBER,
Cas2
dept NUMBER,
salaire NUMBER,
adresse t_adresse, --type objet
nom VARCHAR(30),
PRIMARY KEY num --dfinir des contraintes habituelles sur la table
) ;

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

Exemple dobjet de type t_adresse

t_adresse (2, rue les orangers, Tunis, 1082)


Syntaxe
<constructeur de type> ( <valeurs des diffrents champs du type t_adresse>)

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) ;

INSERT INTO employes


VALUES (2000, 12, 1000,
t_adresse (10, Rue les fruits,Menzah,1004),
BenSalah) ;

INSERT INTO employes


VALUES (3000, 12, 1100,
t_adresse (10, Rue les pommes,Menhah,1004),
BenMrad) ;

29
Manipulation : slection cas2

Interrogation dans une table relationnelle

SELECT * FROM employes ; -- Rsultat


num dept salaire adresse (num,rue,ville,cp) nom

1000 15 2000 t_adresse (2, Rue les orangers,Tunis,1082) BenFoulen

2000 12 1000 t_adresse (10, Rue les fruits,Menzah,1004) BenSalah

. . . . .

SELECT e.adresse FROM employes e; -- Rsultat


Alias
adresse (num,rue,ville,cp)
obligatoire
t_adresse (2, Rue les orangers,Tunis,1082)

SELECT e.adresse.num FROM employes e; -- Rsultat


adresse.num
2 30
Manipulation : insertion cas3

Les deux requtes sont quivalentes :


Insertion dans une table objet relationnelle on insre un n-uplet
un OID lui est attribu lors de
linsertion

On a deux manires dinsrer des n-uplets :

soit avec le constructeur de type (vision objet)

INSERT INTO adresses


VALUES (t_adresse(30, rue jasmins, Ariana, 1004)) ;
-- on insre un objet avec constructeur de type et valeurs des champs du type objet

soit en prcisant chacun des champs (vision relationnelle)

INSERT INTO adresses


VALUES (30, rue jasmins, Ariana, 1004) ;
-- on prcise les valeurs des diffrents attributs de la table relationnelle

31
Manipulation : interrogation cas3

Interrogation dans une table objet relationnelle

1/ On peut accder aux valeurs comme dans le cas du relationnel standard

SELECT * FROM adresses ;


SELECT a.num, a.rue, a.ville, a.cp FROM adresses a ;

- - a est un alias de table

Quobtient on comme relations avec cette requte ?


En accdant aux valeurs des attributs
num rue ville cp
30 rue jasmins Ariana 1004

. . .

32
Manipulation : interrogation cas3

Interrogation dans une table objet relationnelle

2/ On peut accder aux objets.

SELECT VALUE(a) FROM adresse a ;


- - a est un alias de table et VALUE est un mot cl pour rcuprer les objets

Quobtient on comme relations avec cette requte ?


En accdant aux objets

VALUE (a) (num, rue, ville, cp)


t_adresse(30, rue jasmins, Ariana, 1004)
..

33
Manipulation : interrogation cas3
Interrogation dans une table objet relationnelle

3/ On peut accder aux OID

SELECT REF(a) FROM adresse a ;

-- a est un alias de table et REF est un mot cl pour rcuprer les OID

Quobtient on comme relations avec cette requte ?

En accdant aux OID; On obtient une relation de rfrence o chaque


rfrence correspond un code assez long fait de chiffres et de lettres.

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

CREATE TYPE t_adresse AS OBJECT


( num NUMBER,
rue VARCHAR2(30),
ville VARCHAR2(20),
codepostal CHAR2(5)) ;

CREATE TABLE adresse OF t_adresse;

35
Reprsentation UML

adresse

CREATE TYPE t_adresse AS OBJECT


(num NUMBER,
rue VARCHAR2(30),
ville VARCHAR2(20),
codepostal CHAR2(5)) ;

CREATE TYPE t_personne AS OBJECT


( nom VARCHAR2(30),
prenom VARCHAR2(30),
adresse t_adresse ) ;

CREATE TABLE personne OF t_personne;

36
Exemple de manipulation

SELECT * FROM personne;

SELECT e.adresse.rue FROM personne e;

UPDATE personne e
SET e.adresse.ville = Tunis',
e.nom = BenFOULEN
WHERE e.nom = BenFOULEN;

DELETE FROM personne e


WHERE e.adresse. codepostal = 1004;

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

Você também pode gostar