Chap 2
Chap 2
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
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
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
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
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
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
Plan
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
Plan
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
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
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
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;
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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; /
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))
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
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 :
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
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
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
SELECT [Link](2.0)
FROM Lines ll;
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
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
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
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
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
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
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
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
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
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;
/
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
Association 1:N
Association 1:N
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
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
Association N:N
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
Association N:N
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
Plan
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
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
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
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
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
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
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
86 / 85