0% ont trouvé ce document utile (0 vote)
294 vues41 pages

Bases de données orientées objet sous Oracle

Ce document décrit les bases de données orientées objet sous Oracle. Il explique ce qu'est un SGBD, les avantages d'un SGBD objet, la création de types d'objets, l'utilisation de types dans des tables, l'insertion et l'interrogation de données. Le document aborde également le stockage de fichiers dans une base de données Oracle et l'utilisation d'OID.

Transféré par

jacqueline gbedevi
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
294 vues41 pages

Bases de données orientées objet sous Oracle

Ce document décrit les bases de données orientées objet sous Oracle. Il explique ce qu'est un SGBD, les avantages d'un SGBD objet, la création de types d'objets, l'utilisation de types dans des tables, l'insertion et l'interrogation de données. Le document aborde également le stockage de fichiers dans une base de données Oracle et l'utilisation d'OID.

Transféré par

jacqueline gbedevi
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd

ORIENTE OBJET SOUS ORACLE

1
GROUPE 4
AKUE Daryl
MOUMOUNI Roocky

CHARGE DU COURS: MR APEKE


2
C’EST QUOI UN SGBD?
L'acronyme SGBD, pour Système de Gestion de Base de Données,
désigne un logiciel informatique permettant le stockage, la consultation,
la mise à jour, la structuration ou encore le partage d'informations dans
une base de données. Il garantit en outre la confidentialité et la pérennité
de ces données. En effet, il n'y a d'intermédiaire ni entre l'informaticien
et les données, ni entre l'utilisateur et les données. 

3
EN QUOI CONSISTE UN SGBD?
Le système de gestion de base de donnée (SGBD):
Dans la pratique, un SGBD peut être utilisé pour rechercher ou trier des
informations.
 Il simplifie la gestion des bases des données avec:
• Une representation intuitive(modèle relationnel en general)
• Un langage dédié (SQL)

4
EN QUOI CONSISTE UN SGBD?
Gère les aspects systèmes comme:
• La sécurité
• L’accès aux fichiers de données
• L’aspect multi-utilisateurs

5
POURQUOI UN SGBD OBJET?
Un SGBD objet car il est capable de traiter:
• Des éléments de structures complexe
• Des operations sur les elements
• Des pointeurs reliant les elements (pour de l’heritage par exemple).

6
LES BASES DE DONNÉES OBJET
Les types utilisés dans les BDO sont:
• Les types standards: INT…
• Les types classiques: VARCHAR, NUMBER…

7
LES BASES DE DONNÉES OBJET
Les types utilisateurs
Définis par le concepteur de la base utilisés comme des types standards
 On appelle aussi ces types utilisateurs des types objet car ils ont une
structure complexe et peuvent contenir des operations (méthodes).

8
CREATION DE TYPE OBJET

Create type Tadresse as object(


Num number,
Rue varchar(30),
Ville varchar(20)
);

9
UTILISATION D’UN TYPE DANS UNE
TABLE
CREATE TABLE employes
(
Num number primary key,
Dept number,
Salaire number,
Adr Tadresse,
Nom varchar(30) 10

);
INSERTION DANS UNE TABLE

INSERT INTO employes VALUES (1,15,30000,


Tadresse(2,’boulevard’,’LOME’),’AFI’);

11
STOCKAGE DE FICHIERS DANS UNE BASE
DE DONNEES ORACLE
• Le stockage de données dans la base de données ORACLE se fait grâce à un type de données
designé par le mot clé BLOB
• Un BLOB (Binary Large Object) est un type de données Oracle pouvant contenir jusqu'à 4 Go de
données. Les BLOB sont pratiques pour stocker des informations numérisées (par exemple,
images, audio, vidéo)

12
STOCKAGE DE FICHIERS DANS UNE BASE DE
DONNEES ORACLE(INSERTION D’UNE IMAGE)

• La première étape serait de créer un répertoire dans Oracle et de le mapper sur le dossier où
réside votre image. Créez le répertoire image_dir comme 'c:\image_dir'; Ensuite, vous devrez
utiliser une procédure pour insérer l'image dans votre table.
• créons d'abord une table pour contenir l'image.

13
STOCKAGE DE FICHIERS DANS UNE BASE DE
DONNEES ORACLE(INSERTION D’UNE IMAGE)

CREATE TABLE test_image


(
ID NUMBER,
image_filename VARCHAR2(50),
image BLOB
);

14
• Écrivons maintenant la procédure pour insérer l'image dans la table ci-dessus
STOCKAGE DE FICHIERS DANS UNE BASE DE
DONNEES ORACLE(INSERTION D’UNE IMAGE)

CREATE OR REPLACE PROCEDURE insert_image_file (p_id NUMBER, p_image_name IN


VARCHAR2)
IS
src_file BFILE;
dst_file BLOB;
lgh_file BINARY_INTEGER;
BEGIN
src_file := BFILENAME ('image_DIR', p_image_name);
15
STOCKAGE DE FICHIERS DANS UNE BASE DE
DONNEES ORACLE(INSERTION D’UNE IMAGE)
-- insert a NULL record to lock
INSERT INTO temp_image
(ID, image_name, image
)
VALUES (p_id, p_image_name, EMPTY_BLOB ()
)
NB: EMPTY_BLOB renvoie un localisateur LOB(Large Object) vide qui peut être utilisé pour initialiser une variable LOB ou,
dans une instruction INSERT ou UPDATE, pour initialiser une colonne ou un attribut LOB sur EMPTY. EMPTY signifie que le
LOB est initialisé, mais pas rempli de données.

RETURNING image
16
INTO dst_file;
STOCKAGE DE FICHIERS DANS UNE BASE DE
DONNEES ORACLE(INSERTION D’UNE IMAGE)
-- lock record
SELECT image
INTO dst_file
FROM temp_image
WHERE ID = p_id AND image_name = p_image_name
FOR UPDATE;

-- open the file


DBMS_LOB.fileopen (src_file, DBMS_LOB.file_readonly);
-- determine length
lgh_file := DBMS_LOB.getlength (src_file);
-- read the file
17
DBMS_LOB.loadfromfile (dst_file, src_file, lgh_file);
STOCKAGE DE FICHIERS DANS UNE BASE DE
DONNEES ORACLE(INSERTION D’UNE IMAGE)

-- update the blob field


UPDATE temp_image
SET image = dst_file
WHERE ID = p_id AND image_name = p_image_name;

-- close file
DBMS_LOB.fileclose (src_file);
END insert_image_file;
18
STOCKAGE DE FICHIERS DANS UNE BASE DE
DONNEES ORACLE(INSERTION D’UNE IMAGE)

• Il ne reste plus qu’à exécuter la procédure avec les parameter correspondants pour que le fichier
image soit inséré dans notre table :
EXECUTE insert_image_file(1,'test_image.jpg');

19
INTERROGATION D’UNE TABLE

SELECT [Link] FROM employes as e;


NB: on peut ne pas mettre as en faisant comme suit:
SELECT [Link] FROM employes e;

20
CREATION D’UNE TABLE D’OBJET

CREATE TABLE adresses OF Tadresse;

21
LES OID

OID(Object Identifier): Identifiants


Universels, représentés sous la forme d’une suite
alphanumérique. En accédant aux OID,
On obtient une relation de référence ou chaque
Reference correspond a un code assez long fait de
chiffre et de lettres.
22
LES OID

• Prenons un exemple simple. Supposons que vous ayez une table employe et une table
departement. Sans OID, vous devrez effectuer une jointure SQL traditionnelle pour voir les
informations sur le departement d'un employé :
• Select Emp_name,Dept_name,Dept_supervisor From employe E Join department D on
E.Dept_num = D.Dept_num
Where Dept_num = ‘3’;
• Comme nous le savons, effectuer une jointure SQL implique normalement la lecture de deux
index et cela consomme des E/S au sein d'[Link] alternative, définissons un OID et
stockons l'ID de la ligne de service directement dans la table des employés :
23
LES OID

• Comme nous le savons, effectuer une jointure SQL implique normalement la lecture de deux index
et cela consomme des E/S au sein d'Oracle. Comme alternative, définissons un OID et stockons l'ID
de la ligne de service directement dans la table des employés :
• Tout d'abord, nous créons un type d'objet appelé dept_type qui contient les définitions des colonnes
de département.
Create type dept_type as object
(
   dept_name  char(40),
   dept_supervisor  char(40)
)
24
LES OID

• Ensuite, nous définissons la table de département en utilisant ce type :


create table dept of dept_type;
• Maintenant,Nous créons le type objet employee_type. Notez que la colonne département est "fortement"
tapée. C'est-à-dire que la colonne département ne peut contenir que les OID appartenant aux objets
département. Oracle ne vous permettra pas d'insérer un OID pour une autre table dans cette colonne.
create type emp_type as object
(
   emp_name  char(40),
   department  ref(dept_type)
);
25
LES OID

• Enfin, nous définissons la table des employés :


create table employee of emp_type;
• Maintenant, au lieu de faire la jointure des tables employee et department(dept) pour obtenir les
informations sur le service, nous pouvons déréférencer l'OID du service et accéder directement à
la ligne du service :
Select Emp_name, Deref(department)
From Emp;

26
LES OID

• Il doit être clair que le déréférencement d'un OID sera beaucoup plus rapide que l'utilisation d'un
JOIN pour obtenir les informations du département. Dans de nombreux cas, le déréférencement
des OID entraînera une seule E/S, par opposition à plusieurs E/S pour un SQL JOIN.
• Notons que chaque type objet possède un OID par défaut. Ces IOD nous permettent à travers le
référencement à avoir accès à des données concernant plusieurs tables sans pour autant passer
par des jointures.
• Il est également à noter que les tables dans le système relationnel ne possèdent pas de mécanisme
d’OID. C’est pour cela que dans notre exemple précédent, nous avons défini des tables d’objet a
partir des type objet afin que le mécanisme OID leur soit directement associé.
27
IDENTIFIANTS ET RÉFÉRENCES BDOO

Les références sont des pointeurs vers un objet ligne,


matérialisées par le type SQL: REF, elles ne peuvent
être déclarées dans un type ou dans une table
relationnelles.

28
IDENTIFIANTS ET RÉFÉRENCES BDOO

Les références sont pratiques dans le sens où, pointant


directement sur un objet ligne d’une table objet, elles
ne nécessitent pas de jointure
dans la requête SQL.

29
REPRESENTATION REFERENCE

Exemple table employés


num dept salaire adresse Nom
1 15 2000 ABC1234 Toto
6 13 1000 XYZ9999 Titi
9 12 3000 XYZ9999 tata

30
REPRESENTATION REFERENCE

Type objet Tadresse

num rue ville


ABC12345 2 Bd Lavoisier LOME
XYZ9999 10 Bd foch LOME

31
REPRESENTATION REFERENCE
Type objet Tadresse
 Pas de changement pour l’interrogation des
relations.
 Par contre, en terme de representation, un objet est
conservé en un seul exemplaire dans une autre
table et non pas a l’intérieur de chaque n-uplets qui
l’utilise.
32
EXEMPLE DE CREATION DE
REFERENCES
CREATE TYPE Tville AS OBJECT(
Nom varchar(10),
Population number
);
CREATE TABLE pays(
Nom varchar(30),
-- creation de la reference --
Capital REF Tville,
Population number
33
);
EXEMPLE DE CREATION DE
REFERENCES
Ou en créant un autre type d’objet: CREATE TABLE pays of Tpays;

CREATE TYPE Tpays AS OBJECT(


Nom varchar(30),
Capital REF Tville,
Population number
);
CREATE TABLE pays of Tpays;
CREATE TABLE pays of Tville;
NB: un objet tout seul n’a pas de OID, c’est un objet d’une table relationnelle qui 34

possède un OID.
EXEMPLE DE MODIFICATION D’UNE
REFERENCE
UPDATE pays
SET capitale = (SELECT REF(v)
FROM ville v
WHERE [Link]=‘Paris’
)
WHERE nom=‘FRANCE’;

35
FONCTION DEREF
La function DEREF renvoie un objet a partir de sa référence.
SELECT DEREF ([Link])
FROM pays p;
---le resultat est Tville(‘paris’,2 000 000), Tville(‘ROME’,700 000)
SELECT DEREF (REF(v)) FROM ville v
--- on obtient les objets de la table villes

36
HERITAGE
Il permet de spécialiser un type via la clause NOT FINAL :
create type nom_type as object
(...)
not final
ou
alter type nom_type not final ;

NB : NOT FINAL est un mot clé obligatoirequi indique objet possède


37
des sous-types. Par défaut c’est FINAL
HERITAGE
Il est alors possible de créer des sous-types via la
clause UNDER :
create type sous_type UNDER super_type
( attribut_specialise_1 type_att1,
...
attribut_specialise_n type_attn,
) 38
HERITAGE
/
Il y a héritage des attributs et des méthodes. La surcharge des méthodes est possible.
Dans
le cas de la généralisation, il est possible de déclarer un type comme NOT
INSTANTIABLE.
create type super_type as object(...) not instantiable not final
/
La table créée au niveau du super-type stocke des sous-types et des super-types. Par
exemple, si on considère le type Personne et le sous-type Etudiant, on peut insérer des
étudiants / La table créée au niveau du super-type stocke des sous-types et des super-
types. Par exemple, si on considère le type Personne et le sous-type Etudiant, on peut 39

insérer des étudiants dans Personne. Dans Personne.


HERITAGE
Pour accéder a certains n-uplets d’un type specifique, on utilise TREAT :
select TREAT(value(p) as TEtudiant).num from OPersonne p ;
L’héritage est également possible sur les vues objet grace a la clause UNDER
nom_vue.

40
CONCLUSION

• Le type de base de données le plus approprié à retenir dépend fortement de la nature du projet.
Lorsque l’on travaille déjà avec des langages de programmation orientés objet, comme par
exemple Java, une base de données objet est avantageuse. Les objets du code source peuvent
simplement être repris dans la base de données. Si l’on opte pour une base de données
relationnelle, ce qui n’est pas si rare, les objets complexes sont difficiles à intégrer à
l’architecture des tables. En outre , Dans le modèle de base de données objet :
• Les ensembles de données complexes s’enregistrent et s’interrogent rapidement et simplement.
• Les identifiants des objets sont attribués automatiquement.
• On a bonne compatibilité avec les langages de programmation orientés objet.
41

Vous aimerez peut-être aussi