0% ont trouvé ce document utile (0 vote)
74 vues86 pages

Chap 2

Transféré par

Nawress Jedidi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
74 vues86 pages

Chap 2

Transféré par

Nawress Jedidi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Évolution des SGBD

Modèle Objet-Relationnel (OR)


Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Bases de données avancées


4ème année ingénieur en informatique

Chapitre 2: Bases de données Objet -Relationnel

Dr. Bochra RABBOUCH


(E-mail: [Link]@[Link])

EPI Digital School


Université de Sousse
AU:2022/2023

1 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Le modèle Objet-Relationnel (OR)

Pré-requis
Modèle relationnel (structure, contraintes, SQL2, PL/SQL)

Objectifs
Maı̂trise des concepts de base en Base de Données
Relationnelle Objet.
Maı̂trise des concepts des types abstraits de données ainsi que
les méthodes.
Maı̂trise des notions de SQL3.

2 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Plan

1 Évolution des SGBD


2 Modèle Objet-Relationnel (OR)
3 Fondements du modèle Objet-Relationnel
Types Abstraits de Données
Création de tables d’Objets
Les références
Méthodes
Héritage
4 Passage du niveau conceptuel au niveau relationnel-objet
5 Etude de cas

3 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Évolution des SGBD

1 1960’: 1ère génération des SGBD: Les paradigmes hiérarchie


et réseau
Introduire, entre le système d’exploitation et les applications,
une couche de logiciel spécialisée dans la gestion de données
structurées. L’un des premiers systèmes de grande ampleur à
implanter une telle couche fut le système IMS avec le langage
DL/1 (data language one), basé sur un modèle hiérarchique
pour la représentation des données.
le Database Task Group (fondé par Charles Bachman) définit
la norme CODASYL, qui s’appuie sur une structuration des
informations en réseaux.

4 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Évolution des SGBD

2 1970’: 2èe génération des SGBD : SGBD relationnel : Ted


Codd proposa d’utiliser le modèle relationnel pour la
représentation des données. Dans ce modèle ensembliste,
l’information est organisée en plusieurs tables ou relations
homogènes qui peuvent être interrogées et combinées grâce à
des opérateurs ensemblistes. Le succès du modèle relationnel
dans les SGBD modernes tient à sa simplicité (on n’est pas
obligé de connaı̂tre les détails d’implémentation pour
interroger la base), ses fondements logiques et son efficacité;
Les recherches et mises à jour sont effectuées à l’aide d’un
langage non procédural standardisé appelé SQL (Structured
Query Language).

5 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Évolution des SGBD

3 1980’: La 3ème génération des SGBD SGBDOO: Meilleur


représentation du réel au niveau logique ainsi que la
réutilisation
1986: Premier SGBD Orienté Objet
1993: Apparition de la norme ODMG (Object Database
Management Group) pour les SGBDOO ([Link])
1998: Apparition de la norme UML pour conception
d’applications OO
1999: Apparition de la norme SQL3 pour SGBD
relationnel-objet

6 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Évolution des SGBD


Forces du modèle relationnel
une modélisation des données simple à l’aide de tables qui
répond aux exigences du problème réel
Domaines de représentation de données diversifiés:
numériques, alphanumériques, dates, opérations sur les
dates,...
Bonne adaptation aux architectures client-serveur de données
Approche formellement définie (normalisation)
Optimisation de requêtes (algèbre, réécriture, modèle de
coûts)
langage standard (SQL 2), déclaratif
La gestion de transactions (concurrence, fiabilité) intégrée, le
relationnel s’est imposé dans l’industrie. 7 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Evolution des SGBD


Faiblesses du modèle relationnel
les règles de modélisation imposées pour structurer proprement les
données s’avèrent trop restrictives
il est courant d’avoir affaire à des modèles de données qui ne sont
pas en première forme normale (Non first Normal Form) pour
représenter des listes de valeurs .
Il ne permet pas dans de nombreux cas de représenter les données
complexes auxquelles nous faisons face (tables imbriqués).
Les objets complexes sont représentés sur plusieurs tables, ce qui
nécessite de nombreuses opérations de jointure (très lentes).
Impossible d’intégrer des opérations sur les données (définition de
méthodes).
→ L’objet répond à ces faiblesses. D’où l’intérêt d’une intégration 8 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Plan

1 Évolution des SGBD


2 Modèle Objet-Relationnel (OR)
3 Fondements du modèle Objet-Relationnel
Types Abstraits de Données
Création de tables d’Objets
Les références
Méthodes
Héritage
4 Passage du niveau conceptuel au niveau relationnel-objet
5 Etude de cas

9 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Le modèle Objet-Relationnel (OR)


Le modèle objet-relationnel (OR) permet de tirer partie à la fois du
modèle relationnel et des concepts objet afin de combler les grosses
lacunes du modèle relationnel. La norme SQL2 a donc été étendue dans
SQL3 pour intégrer les concepts objets:
Objet complexe
Encapsulation simulée en créant un package PL/SQL.
Identifiant d’objet (OID - Object Identifier)
type abstrait de données (TAD)
Attributs complexes et multivalués (collections)
Tables imbriqués
Complétude et extensibilité
Héritage
10 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Le modèle Objet-Relationnel (OR)


l’objectif du OR est de faire cohabiter une base plate (en 3NF) avec
une base objet (non en 1NF) donc la relation reste un concept
fondamental. Il n’y a pas de notion de classe.
L’apport essentiel de l’objet-relationnel est sans doute le support
d’objets complexes au sein du modèle.
Ceci n’est pas inhérent à l’objet, mais plutôt hérité des premières
extensions tendant à faire disparaı̂tre la première forme normale du
relationnel.
On parle alors de base de données en non première forme normale
(Non First Normal Form NF 2 ).

Non première forme normale (Non First Normal Form - NF 2 )


Forme normale tolérant des domaines multivalués.
11 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Le modèle Objet-Relationnel (OR)


Modèle relationnel imbriqué (Nested Relational Model)
Modèle relationnel étendu par le fait qu’un domaine peut lui-même être
valué par des tables de même schéma.

Figure: Exemples de relations imbriquées


12 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Du modèle relationnel au modèle Objet-Relationnel


SQL3 = SQL2 pour bases de données relationnelles avec des
extensions
Oracle 8 est le premier serveur objet-relationnel d’Oracle
Concept de table quasi inchangé
hiérarchie d’héritage des types
Un nouveau constructeur de domaine : REF qui contient
l’identifiant unique de chaque Objet au sens Oracle
(enregistrement d’une table objet-relationnelle) (Syn.
pointeur)
OID (Object IDentifier) : représentant l’identifiant unique que
possède en Oracle 8 chaque objet (table, type, objet des
tables, ...).
13 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Du modèle relationnel au modèle Objet-Relationnel


Nouveau concept, TYPE, qui décrit :
les structures complexes et multivaluées
le format des objets
les méthodes
Les méthodes sont définies avec les procédures ou fonctions du
PL/SQL et la programmation orientée-objet est basée sur des types
objets (object types).
Un type objet est un type de données composé défini par
l’utilisateur, qui encapsule une structure de données ainsi que les
fonctions et procédures nécessaires à la manipulation des données.
Ces types objets fournissent
des modèles abstraits pour des objets du monde réel
l’encapsulation (”boı̂te noire”): Pour utiliser un type objet
dans un programme, il suffit de connaı̂tre ce qu’il fait et non
comment il le fait. 14 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Plan

1 Évolution des SGBD


2 Modèle Objet-Relationnel (OR)
3 Fondements du modèle Objet-Relationnel
Types Abstraits de Données
Création de tables d’Objets
Les références
Méthodes
Héritage
4 Passage du niveau conceptuel au niveau relationnel-objet
5 Etude de cas

15 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

La première nouveauté de SQL3 est l’apparition d’une


commande CREATE TYPE.
Au-delà des types classiques (numériques, caractères, date) de
SQL, il devient possible de créer des types dépendant de
l’application.
Les types crées sont réutilisés dans la définition des relations
et il est possible de leur associer des méthodes, qui sont des
procédures ou des fonctions.
L’objectif est de considérer un groupe de colonnes comme un
tout, comme une seule entité.

16 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Domaines usuels de SQL :


CHAR, VARCHAR, NUMBER, DATE..
Nouveaux domaines définis par l’utilisateur, propres à la BD,
pour décrire :
Type OBJECT, éventuellement avec OID
valeur complexe
objet (OID, valeur complexe)
Les collections
TYPE VARRAY : vecteur
TYPE nested TABLE : table insérée à la place d’une valeur

17 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données


Type OBJECT
CREATE [OR REPLACE] TYPE TNom AS OBJECT
(
element1,
element2
)
/

où un élément est


un attribut défini avec son nom et son type : nom attribut
type attribut
une méthode : mamethode member | static ... ,
Après la création d’un TAD, le / termine l’ordre SQL.
18 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données


Type OBJECT
Exemple: CREATE TYPE Tadresse AS OBJECT
(
rue VARCHAR2(50),
ville VARCHAR2(25),
code postal NUMBER(4)
);/
Ce type est ensuite exploité pour:
1 le réutiliser dans une relation

CREATE TABLE Personne(


id pers NUMBER(3),
nom VARCHAR2(25),
adresse Tadresse
);/
→ Personne n’est pas une table d’objets. Il n’y a pas de
19 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données


Type OBJECT
2 Créer une table d’objets
CREATE TABLE Adresse of Tadresse;
→ Adresse est alors une table d’objets avec gestion des OID
associés.
3 Définir un autre TAD complexe :
CREATE TYPE Tpersonne AS OBJECT
(
nom VARCHAR2(25),
adresse Tadresse
); /
CREATE TABLE Opersonne OF Tpersonne ;
→ Opersonne est alors une table d’objets.
20 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type OBJECT
Pour connaı̂tre la description du TAD, il faudra utiliser les
vues systèmes : USER TYPES
SELECT type name, attributes, methods from USER TYPES;

Si l’on n’est pas propriétaire d’un TAD, il est nécessaire pour


l’utiliser d’avoir les privilèges :
GRANT execute ON nom tad TO utilisateur ;

21 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type OBJECT : Insertion


Comme pour les classes, un constructeur de même nom est
toujours associé à un TAD.
Pour insérer dans une table incluant un TAD, On utilise alors
un constructeur pour le sous-type construit.
INSERT INTO personne VALUES (10, ’Ben Ahmed’,
Tadresse(’10 rue les palmiers’,’Sousse’,4000) );
Pour insérer dans une table associée à un TAD
INSERT INTO Opersonne VALUES (’Ben Ahmed’,
Tadresse(’30 rue les palmiers’,’Sousse’,4000));

22 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type OBJECT : Interrogation


Pour accéder à la valeur de la ville de l’adresse, il faut soit
SELECT * FROM Opersonne;
indiquer les attributs des TAD avec leur chemin complet avec
notation pointée.
SELECT nom, [Link] FROM Opersonne p;
SELECT nom FROM Opersonne p WHERE [Link]
LIKE ’SOUSSE’ ;

23 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type OBJECT : Mise à jour


La même notation pointée est valable aussi pour toute mise à
jour ou suppression
UPDATE Opersonne p SET [Link] = ’Paris’ where
[Link] postal LIKE ’75%’;
Si une table d’objets utilise un TAD non imbriqu’, les ordres
UPDATE et DELETE respectent la même syntaxe que pour
des tables relationnelles.
Si le TAD n’appartient pas à l’utilisateur, il est nécessaire de
spécifier le nom du pro priétaire : nom [Link]

24 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données


Type VARRAY
Un tableau VARRAY est un tableau de taille limitée à longueur
variable. Il est représenté par une seule valeur de type n-uplet dans
la table. Il peut être utilisé pour construire des types object.
Syntaxe:
CREATE TYPE nom type AS VARRAY(nbmax) OF nom type2
nom type2 :
type usuel de SQL (CHAR, VARCHAR, NUMBER..)
type défini par l’utilisateur

CREATE TYPE Vtelephone AS VARRAY(3) OF VARCHAR2(6) /


CREATE TYPE TPersonne AS OBJECT(mat VARCHAR2(11),
nom VARCHAR2(20), tlph Vtelephone) /
CRATE TABLE Opersonne OF Tpersonne; 25 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type VARRAY
Un tableau de type VARRAY est stocké comme une unique
valeur. Pour insertion:
INSERT INTO TPersonne VALUES (’ALLDFGR123’, ’Ben
Ahmed’,tlph(’23456789’,’54678901’,’99887766’) );
Pour accéder au contenu du VARRAY, on peut :
utiliser la requête suivante : SELECT * FROM personne
utiliser un programme PL/SQL en utilisant une fonction count
et la notation tab(i) pour accéder au ième élément du tableau
utiliser la clause table : SELECT nom, q.* from TPersonne p,
table ([Link]) q;

26 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type TABLE imbriquée (nested TABLE)


Une table imbriquée est représentée sous la forme d’une
colonne dans la table d’origine.
une table imbriquée n’est pas une table d’objets. Un seul
niveau d’imbrication est possible.
Pour définir une table imbriquée :
créer le TAD représentant la structure d’un n-uplet de la table
imbriquée,
créer un TAD spécifiant la table imbriquée,
définir la table utilisant un attribut du type de la table
imbriquée.

27 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données


Type TABLE imbriquée (nested TABLE)
Exemple1
CREATE TYPE Ttéléphones AS TABLE OF CHAR(10)/
CREATE TABLE Personne (AVS CHAR(11), nom
VARCHAR(20), tel Ttéléphones)
NESTED TABLE tel STORE AS TableTel
L’utilisateur doit donner un nom à la table qui contiendra les
téléphones de toutes les personnes
La clause nested crée une table avec une colonne TableTel qui
est une table imbriquée.
TableTel soit été créée avant, soit est créée automatiquement.
Les valeurs de cette colonne seront stockées dans la table
indiquée dans l’ordre nested. Oracle maintient les pointeurs
adéquats. 28 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type TABLE imbriquée (nested TABLE)


Exemple2
CREATE TYPE Tadresse AS OBJECT
(rue VARCHAR2(50),
ville VARCHAR2(25),
code postal NUMBER)/
CREATE TYPE NT adresse AS TABLE OF Tadresse; /
CREATE TABLE personne
( nom varchar2(25),
adresses NT adresse )
NESTED TABLE adresses STORE AS NT adresse tab ;
La clause nested crée une table avec une colonne adresses qui
est une table imbriquée.

29 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type TABLE imbriquée (nested TABLE)


Il est possible d’insérer des n-uplets dans une table imbriquée.
Il faut alors utiliser les constructeurs.
On insère les nouvelles valeurs dans la table imbriquée grâce
au mot-clé THE :
INSERT INTO THE (SELECT adresses FROM personne
WHERE nom=’Mlayah’) VALUES Tadresse(’place du
capitole’,’Toulouse’,31000));

30 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Type TABLE imbriquée (nested TABLE)


On peut également utiliser UPDATE THE pour modifier les
n-uplets de la table imbriquée
UPADTE THE (SELECT adresses from personne WHERE
nom = ’Mlayah’ nttab set [Link]=’Lyon’ where
[Link]=’Toulouse’;
La suppression d’une collection complète est possible :
UPDATE personne SET adresses = null WHERE nom =
’Mlayah’ ;

31 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données


Redéfinition d’un type s’il existe déjà
CREATE OR REPLACE nomType

Modification d’un type: ajout d’attribut


ALTER TYPE nomType
ADD ATTRIBUTE nomAttribut typeAttribut
[CASCADE];

Modification d’un type: ajout d’une méthode


ALTER TYPE nomType
ADD {MEMBER|STATIC} {PROCEDURE|FUNCTION} nom
[RETURN] type
[CASCADE];

CASCADE : propagation aux tables déjà construites à partir du type 32 / 85


Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Types Abstraits de Données

Suppression d’un type


DROP nomType [FORCE]

FORCE : Si le type a été déjà utilisé dans des tables.


Sinon, on doit d’abord effacer toutes les tables et les autres
types qui utilisent ce type

33 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Trois sortes de tables

Table du relationnel classique


ensemble de tuples en première forme normale (1FN)

CREATE TABLE Personne ( AVS CHAR(11) , nom


VARCHAR(20), prénom VARCHAR(20) , rue VARCHAR(20),
numéro VARCHAR(4) , localité VARCHAR(20), NPA CHAR(4) );

Table de valeurs structurées


ensemble de tuples en non première forme normale

CREATE TABLE Personne ( AVS CHAR(11) , nom


VARCHAR(20) , prénoms Tprénoms , adr Tadresse )

34 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Trois sortes de tables

Table d’objets(ensemble d’objets): Une table peut être définie


en référençant un type de données plutôt que par des
instructions LDD classiques.

CREATE TYPE Tpersonne AS OBJECT


( AVS CHAR(11), nom VARCHAR(20),
prénoms Tprénoms, adr Tadresse )
CREATE TABLE LesPersonnes OF Tpersonne

35 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Table Objet

On peut associer aux tables quelle que soit leur sorte les
contraintes usuelles de SQL :
PRIMARY KEY (colonne)
UNIQUE (colonne)
FOREIGN KEY (colonne) REFERENCES nom-table (colonne)
CHECK ( condition)

NB: On peut créer plusieurs tables d’objets de format Tpersonne.

36 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les références

Object IDentifier OID


Lors de l’insertion dans la table d’objet, se crée un objet (OID +
valeur), permanent, stocké dans la table objet.
chaque table objet (Lespersonnes par exemple) a une colonne
supplémentaire invisible, gérée par le SGBD qui contient l’OID de
chaque objet(enregistrement). Cette colonne est automatiquement
indexée et donc la recherche de l’objet de tel OID est plus rapide
Les enregistrements d’une table-objet peuvent être identifiés par des
OID qui sont en théorie des adresses logiques invariantes qui
permettent de chaı̂ner directement les objets entre eux, sans passer
par des valeurs nécessitant des jointures.
Les OID sont une alternative aux clés étrangères pour référencer des
enregistrements.

37 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les références

on peut utiliser des références pour désigner les lignes de


tables objets (pas possible pour les autres tables)
Si l’objet est de type T , Sa référence est REF (T )
un outil puissant car ils accèdent (de manière
unidirectionnelle...) facilement à la mémoire → performance.
La clause DEREF (OID) permet de récupérer la valeur de
l’objet identifié par l’OID.

38 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les références

Exemple
CREATE TYPE TPersonne AS OBJECT
(NSS NUMBER,
Nom VARCHAR(18),
Prenom VARCHAR(18),
conjoint REF TPersonne)/
CREATE TABLE LesPersonnes OF TPersonne; /

L’attribut conjoint pointera à un OID de type TPersonne.


On a crée une table d’objets de type Tpersonne.
La clause REF(variable-objet) donne en résultat l’OID d’un
objet.
39 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les références

Exemple2
INSERT INTO LesPersonnes(NSS,Nom,Prenom,Conjoint)
VALUES (17924457911, ’Riahi’, ’Slim’, SELECT REF(p) FROM
LesPersonnes p WHERE [Link]=’Meriem’ AND
[Link]=’Amer’);

40 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les références

Exemple2
La clause DEREF(OID) permet de récupérer la valeur de
l’objet identifié par l’OID.
La requête :
SELECT [Link], [Link] FROM LesPersonnes p;
donnera les noms des personnes et l’OID de leur conjoint. En
revanche, la requête :
SELECT [Link], DEREF([Link]) FROM LesPersonnes p;
donnera, pour chaque personne p, son nom, et la ”valeur” de
son conjoint (qui est un objet).
La clause VALUE(nomtable): retourne la valeur contenue
dans la ligne de la table.
41 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les références

Exemple2
CREATE TYPE administrateur type AS OBJECT (nadmin
VARCHAR2(5), age NUMBER, nom VARCHAR2(30))/
CREATE TYPE PC type AS OBJECT (nserie VARCHAR2(5),
adresseIP VARCHAR2(15), administre REF administrateur type)/
CREATE TABLE PC OF PC type(PRIMARY KEY (nserie))
CREATE TABLE admin OF administareur type (CONSTRAINT
pk admin PRIMARY KEY (nadmin))

Ces requêtes permettent d’associer à chaque PC son


administrateur par pointage vers l’objet voulu.

42 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les références
Les contraintes sur les références
le type REF administrateur type restreint le type référencé mais pas
la table référencée.
cette référence peut référencer une valeur de n’importe quelle
colonne de table qui a le type REF administrateur type
administre prend l’OID du type administrateur
la clause SCOPE Renforce l’intégrité référentielle en limitant la
portée de la référence à une table particulière (alors que REF seul
permet de pointer n’importe quel objet de ce type); elle peut être
ajoutée lors de la définition d’une table.
administre REF administrateur type
SCOPE IS administarteur;
administre référence une ligne de la table administrateur (pas une
ligne d’une autre table)
43 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les méthodes
Un objet est constitué par :
1 une spécification qui détermine l’interface publique du type, qui
contient
une structure de données (déclaration d’attributs)
la spécification des méthodes permettant leur manipulation →
(signature de la méthode)
CREATE TYPE nomtype AS OBJECT spécification
2 une implémentation (corps), qui contient
l’implémentation des méthodes définies par la spécification
CREATE TYPE BODY nomtype AS implémentation

44 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les méthodes
La signature d’une méthode est définie ainsi: Nom de la méthode,
les paramètres et leur type et s’il y a lieu, le type de la valeur
retournée.
Syntaxe
CRETAE [OR REPLACE] TYPE nom type AS OBJECT
(
att1 type1,
...
attn typen,
MEMBER FUNCTION | PROCEDURE signature methode 1,
STATIC FUNCTION | PROCEDURE signature methode 2
);
/
45 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les méthodes

Pour ajouter une signature à l’interface d’un type déjà crée


Ajout d’une méthode
ALTER TYPE nom type ADD MEMBER | STATIC FUNCTION |
PROCEDURE nom fonction proc (att IN|OUT type) [Return type]
CASCADE

Suppression d’une méthode


ALTER TYPE nom type DROP MEMBER | STATIC FUNCTION |
PROCEDURE nom fonction proc (att IN|OUT type) [Return type]
CASCADE

CASCADE propage les modifications aux autres types dérivés.

46 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les méthodes
Une méthode Oracle peut être une procédure ou une fonction PL/SQL
où le corps (body) est défini séparément de la définition de la classe. Le
corps des méthodes est défini par :

CREATE [OR REPLACE] TYPE BODY nom type


AS
MEMBER|STATIC nom methode IS
BEGIN
...
END nom methode;
END;
/

MEMBER pour les méthodes invoquées sur les instances du TAD.


STATIC pour les aux méthodes invoquées sur tout le TAD (un type
NOT INSTANTIABLE).
47 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Les méthodes

SELF
Lorsque l’on écrit une méthode on a généralement besoin d’utiliser
les attributs propres (voire d’ailleurs les autres méthode), de l’objet
particulier que l’on est en train de manipuler.
On utilise pour cela la syntaxe SELF qui permet de faire référence
à l’objet en cours.

Syntaxe
[Link] attribut
[Link] méthode(...)

48 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Récapitulatif: Création de type Objet

Définition d’un type pour représenter un point par ses


coordonnées. Analogie avec la définition d’un type structuré
ayant deux champs, x et y:

CREATE TYPE PointType AS OBJECT (


x NUMBER,
y NUMBER
);
/

49 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Récapitulatif: Création de type


Puis on définit un type pour les lignes géométriques (finies, c.
a.d. les segments), où on indique 2 points de la ligne et qui
inclut la déclaration d’une fonction length au type LineType,
qui produit la longueur d’une ligne et la multiplie par un
facteur (scale).

CREATE TYPE LineType AS OBJECT (


end1 PointType,
end2 PointType,
MEMBER FUNCTION length(scale IN NUMBER) RETURN
NUMBER
);
/
50 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Récapitulatif: code de la méthode


Le code de la méthode est donné a part, dans une instruction
CREATE TYPE BODY.
La variable spéciale SELF dans la définition de la méthode
indique la valeur courante.

CREATE TYPE BODY LineType AS


MEMBER FUNCTION length(scale NUMBER) RETURN
NUMBER IS
BEGIN
RETURN scale *
SQRT((SELF.end1.x-SELF.end2.x)*(SELF.end1.x-SELF.end2.x)+
(SELF.end1.y-SELF.end2.y)*(SELF.end1.y-SELF.end2.y) ); END
length; END; / 51 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Récapitulatif: création de table d’objets et insertion

CREATE TABLE lines OF LineType;

Pour ajouter une ligne dans la table objet, on utilise le


constructeur PointType :
Construction d’une ligne de la table Lines qui part du point
(0,0) et arrive au point (3,4)

INSERT INTO lines VALUES (PointType(0,0),PointType(3,4));

52 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Récapitulatif: Interrogation de données

Calcul du double de la longueur des chaque ligne :

SELECT [Link](2.0)
FROM Lines ll;

La requête utilise la méthode length.

53 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Récapitulatif Interrogation de données: Suite


Coordonnées de la première extrémité de chaque ligne :

SELECT ll.end1.x, ll.end1.y FROM Lines ll;

Seconde extrémité de chaque ligne, comme valeur de type


PointType :

SELECT ll.end2 FROM Lines1 ll;

54 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Exemple 2
Création d’objet
CREATE TYPE typCours AS OBJECT (
num NUMBER(2),
debut DATE,
MEMBER FUNCTION fin RETURN DATE
); /

Corps de la méthode
CREATE TYPE BODY typCours AS
MEMBER FUNCTION fin RETURN DATE IS
BEGIN
RETURN [Link] + 5;
END fin;END;
/ 55 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Exemple 2

Création de la table objet


CREATE TABLE tCours OF typCours (
num PRIMARY KEY
);

interrogation de données
SELECT [Link], [Link]() FROM tCours c;

56 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Héritage de types
En Oracle, à partir de la version 9, on peut créer des héritages
de types OBJECT → héritage de types et de méthodes (avec
possibilité de redéfinir le code des méthodes du sous types)
Le support de l’héritage de type objet facilite la réutilisation et
le polymorphisme.
Pour déclarer un type t pour lequel on va déclarer des
sous-type, il faut ajouter la clause NOT FINAL lorsque on
crée t.
Pour déclarer un sous-type t 0 d’un type non final t, il faut
utiliser le mot-clé UNDER.
un type t pour lequel on va déclarer un sous type, peut ne pas
avoir des instances de ce type, donc on utilise le mot-clé NOT
INSTANTIABLE
57 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Héritage de types

CREATE TYPE TPersonne AS OBJET


(NSS NUMBER,
Nom VARCHAR2(18),
Prenom VARCHAR2(18),
adresse VARCHAR2(200))
NOT FINAL
/

CREATE TYPE TEtudiant UNDER TPersonne


(Universite VARCHAR2(18),
cycle VARCHAR2(18))
/

58 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Héritage de types

CREATE TABLE lespersonnes OF TPersonne;


CREATE TABLE lesetudiants OF TEtudiant;

Attention: il n’y a pas inclusion de population entre


lesetudiants et lespersonnes. Les tables sont indépendantes les
unes les autres → Pas de hiérarchie de tables

59 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Héritage de types

lespersonnes peut contenir des objets de type TEtudiant et


TPersonne.

INSERT INTO lespersonnes VALUES(1111,’ahmed’,’ali’,sousse);

création d’un objet TPersonne et insertion dans la table


lespersonnes

INSERT INTO lespersonnes VALUES


(TEtudiant(2222,’rahma’,’abidi’, NULL, ’IHEC’,’licence’));

création d’un objet TEtudiant et insertion dans la table


lespersonnes
60 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Héritage de types

61 / 85
Évolution des SGBD Types Abstraits de Données
Modèle Objet-Relationnel (OR) Création de tables d’Objets
Fondements du modèle Objet-Relationnel Les références
Passage du niveau conceptuel au niveau relationnel-objet Méthodes
Etude de cas Héritage
References

Héritage de types

La clause VALUE (type) IS OF (nom-sous-type) teste si la


valeur appartient au sous-type.
Exemple: SELECT * FROM lespersonnes p where VALUE(p)
IS OF TEtudiant;
rend les objets de TPersonne qui sont de type TEtudiant

62 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Plan

1 Évolution des SGBD


2 Modèle Objet-Relationnel (OR)
3 Fondements du modèle Objet-Relationnel
Types Abstraits de Données
Création de tables d’Objets
Les références
Méthodes
Héritage
4 Passage du niveau conceptuel au niveau relationnel-objet
5 Etude de cas

63 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Passage du niveau conceptuel au niveau objet-relationnel


Le modèle relationnel objet offre de nouvelles possibilités de
représentation en comparaison avec le modèle relationnel
classe/entité

Chaque classe/entité donne lieu à une table relationnel objet.


La clé primaire de la table générée est l’identifiant de la
classe/entité.
On crée les types adéquats pour la création des tables objets
relationnels objets ainsi on crée les tables en ajoutant les
contraintes de clés primaires
64 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Passage du niveau conceptuel au niveau objet-relationnel

Création de type
CREATE TYPE FilmT AS OBJECT (
num charCHAR(13),
titre VARCHAR2(30),
debut DATE,
fin DATE,
MEMBER FUNCTION dureeTournage RETURN NUMBER);
/
65 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Passage du niveau conceptuel au niveau objet-relationnel

Corps de la méthode
CREATE TYPE BODY FilmT AS
MEMBER FUNCTION dureeTournage RETURN NUMBER)IS
BEGIN
RETURN
TO NUMBER(numtodsinterval([Link],[Link]),’minute’);
END dureeTournage; END;
/

Création de la table objet


CREATE TABLE Film AS FilmT (
PRIMARY KEY (num));

66 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association 1:N

Solution 1: Définition d’une collection (VARRAY ou


NESTED TABLE) dans le type qui correspond à la classe
mère. Cette collection contient les attributs REF qui
référencent le type qui correspond à la classe fille.
Exemple:
EMPLOYE(Matricule,Nom)
DEPARTEMENT(NomDepart, Localisation,
EMPLOYES{REF EMPLOYE})
67 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association 1:N

Solution 2: Définition d’un attribut REF dans le type qui


correspond à la table fille afin de référencer le type de la classe
mère. Cette solution est adéquate à la solution dans un
modèle relationnel ou la référence REF est remplacée par la
notion de la clé étrangère.
L’ajout de la contrainte SCOPE est possible dans ce cas pour
ne référencer qu’une table bien définie issue du type référencé.
Exemple:
DEPARTEMENT(NomDepart, Localisation)
EMPLOYE(Matricule,Nom, REF DEPARTEMENT)
on peut ajouter SCOPE IS departement table 68 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association 1:N

Solution 3: Définition d’un troisième objet type qui contient


2 attributs REF pointant vers les deux types des deux tables
(fille et mère)
Exemple:
DEPARTEMENT(NomDepart, Localisation)
EMPLOYE(Matricule,Nom)
Appartient(REF DEPARETEMENT, REF EMPLOYE)

69 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association 1:N

Solution 4: La classe fille se dissout et se modélise comme


une NESTED TABLE dans la classe mère
Exemple:
DEPARTEMENT(NomDepart, Localisation,
EMPLOYE{Matricule, nom})
Ici, une contrainte d’unicité (CONSTRAINT UNIQUE) doit
figurer pour le champs de la clé primaire de la table fille.

70 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association 1:1

Solution: Tout comme dans le modèle relationnel, un des


deux types qui décrivent les deux tables définira le pointeur
REF de l’autre type dans ses attributs.
Il existe toujours deux solutions selon que l’on choisit l’une ou
l’autre relation pour accueillir la clé étrangère (REF). Selon le
contexte, un des deux choix peut être plus pertinent.
Exemple:
SERVICE(nomService, localisation, REF EMPOYE)
EMPLOYE(Matricule, nom)
REF Employe désigne le directeur du service
71 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association N:N

Solution 1: Chacun des deux types correspondants aux deux


tables, définit un attribut REF afin qu’il prend référence du
type opposé.
Exemple:
UNITE(NumUnité, localisation, REF PRODUIT)
PRODUIT(CodePro, Description, REF UNITE)

72 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association N:N

Solution 2: Définition d’un troisième objet type qui contient


2 attributs REF pointant vers les deux types des deux tables.
Si l’association contient des attributs, ils seront intégrés dans
le troisième type de la table association.
Exemple:
UNITE(NumUnité, localisation)
PRODUIT(CodePro, Description)
FABRIQUE(REF PRODUIT, REF UNITE)
73 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association N:N

Solution 3: Une des deux classes se dissout et se modélise


comme une NESTED TABLE dans l’autre classe.
Exemple:
UNITE(NumUnité, Localisation, PRODUIT{CodePro,
Description})

74 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Association N:N

Solution 4: Les deux classes deviennent deux objets types et


la classe association devient une NESTED TABLE dans l’une
des deux objets types (la plus adéquate selon le scénario). La
NESTED TABLE contient le REF de la classe opposée ainsi
les attributs de l’association s’il existent.
Exemple:
UNITE(NumUnité, Localisation)
PRODUIT({CodePro}, Description, Fabrique{REF unité,
dateFabr})
75 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Plan

1 Évolution des SGBD


2 Modèle Objet-Relationnel (OR)
3 Fondements du modèle Objet-Relationnel
Types Abstraits de Données
Création de tables d’Objets
Les références
Méthodes
Héritage
4 Passage du niveau conceptuel au niveau relationnel-objet
5 Etude de cas

76 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

77 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

A partir de ce modèle conceptuel, on constate qu’on aura besoin


de 4 types
TYPE personne type
TYPE conducteur type
TYPE voiture type
TYPE conduit type

78 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

TYPE personne type


CREATE OR REPLACE TYPE Personne type AS OBJECT
(
nom varchar(20),
ddn date,
MEMBER FUNCTION age RETURN number
)
NOT FINAL;
/

79 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

BODY TYPE personne type


CREATE OR REPLACE TYPE BODY Personne type IS
MEMBER FUNCTION age RETURN number
IS
BEGIN
RETURN ROUND(months between(SYSDATE, ddn)/12);
END age;
END;
/

80 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

TYPE conducteur type


CREATE OR REPLACE TYPE Conducteur type UNDER
Personne type
(
typePermis char(1),
datePermis date
);
/

81 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

TYPE voiture type


CREATE OR REPLACE TYPE voiture type AS OBJECT (
type varchar(20),
marque varchar(20),
nbPortes number,
puissance number,
proprietaire REF Personne type
);
/

82 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

TYPE conduit type


CREATE type conduit type ( voiture REF voiture type, conducteur
REF conducteur type
);
/

83 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

Table personne
CREATE TABLE Personne OF personne type
(
PRIMARY KEY (nom)
);

Table conducteur
CREATE TABLE Conducteur OF Conducteur type
(
PRIMARY KEY (nom),
CHECK (typePermis IN (’A’,’B’,’E’))
);

84 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Etude de cas

Table voiture
CREATE TABLE Voiture OF voiture type ( PRIMARY KEY (type,
marque), Proprietaire references personne, SCOPE FOR
proprietaire IS Personne );

Table conduit
CREATE TABLE conduit of conduit type ( voiture REFerences
Voiture, conducteur REFerences Conducteur, SCOPE FOR voiture
IS Voiture, SCOPE FOR conducteur IS Conducteur );

85 / 85
Évolution des SGBD
Modèle Objet-Relationnel (OR)
Fondements du modèle Objet-Relationnel
Passage du niveau conceptuel au niveau relationnel-objet
Etude de cas
References

Bases de données, J-L Hainaut, Dunod, 2012

Programmer objet avec Oracle, Vuibert, 2004

86 / 85

Vous aimerez peut-être aussi