0% ont trouvé ce document utile (0 vote)
68 vues5 pages

BDA Oriente Objet

Le document traite des bases de données orientées objet et des modèles objet-relationnels, soulignant leur capacité à gérer des données complexes et à réduire les pertes de performance. Il explique la création et la manipulation de types objets, ainsi que l'utilisation de collections imbriquées comme les tables imbriquées et les VARRAYS. Enfin, il aborde l'ajout de méthodes et de procédures aux objets dans un contexte objet-relationnel.

Transféré par

ameurchouihstdying
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)
68 vues5 pages

BDA Oriente Objet

Le document traite des bases de données orientées objet et des modèles objet-relationnels, soulignant leur capacité à gérer des données complexes et à réduire les pertes de performance. Il explique la création et la manipulation de types objets, ainsi que l'utilisation de collections imbriquées comme les tables imbriquées et les VARRAYS. Enfin, il aborde l'ajout de méthodes et de procédures aux objets dans un contexte objet-relationnel.

Transféré par

ameurchouihstdying
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

Base de données orientée objet

Buts du modèle Objet-Relationnel


Gérer des données complexes (temps, géo-référencement, multimédia, types
utilisateurs, etc.).

Rapprocher le modèle logique du modèle conceptuel.

Réduire les pertes de performance liées à la normalisation et aux jointures.

Modèle Relationnel
Il est relativement simple, formellement défini (car il se base sur
l’algèbre relationnel).

Très mal adapté au données non structurées et semi-structurées aussi. Dans


plusieurs situations on doit fragmenter les données et donc le modèle
logique devient différent du modèle conceptuel.

On peut utiliser soit le SQL2 soit le SQL3 pour manipuler des bases de
données relationnelles.

Objet-Relationnel
On utilise le SQL3.

La relation sera en deuxième forme normale.

Le concept central du OR est celui de type utilisateur, qui permet


d'injecter la notion d'objet dans le modèle relationnel.

Un modèle objet relationnel a les propriétées RICE.

Avec le modèle objet relationnel on aura:

Moins fragmentation de données lors de la création de la base de données.


On peut avoir une seule table qui contient plusieurs attributs complexe.

Moins de jointures.

Type utilisateur
Sous oracle on a deux type, les types par défaut et les types objet.

Les types objets ou les types utilisateurs peuvent etre créés par
l’utilisateur. Ils peuvent contenir des méthodes.

Le type objet (ou bien type utilisateur), peut etre utilisé pour

Définir un nouveau type qui sera par la suite une colonne dans une table.

Définir une table relationnel ou une table objet relationnel.

Création type objet


Type de données créé par le concepteur, il encapsule des données et des
opérations sur ces données.

Base de données orientée objet 1


Les types des attributs (ou des méthodes) d'un type peuvent également être
des types utilisateurs.

-- Création d'un type t_adresse


CREATE TYPE t_adresse AS OBJECT (
num NUMBER,
rue VARCHAR(30),
ville VARCHAR(20),
codepostal CHAR(5)
) [NOT FINAL];

-- Utilisation du type t_adresse lors de DDL d'une table


CREATE TABLE employes (
num NUMBER,
dept NUMBER,
salaire NUMBER,
adresse t_adresse, -- type objet
nom VARCHAR(30),
PRIMARY KEY num
) ;

Manipulation type objet


Pour l’insertion, on utilise le constructeur de l’objet.

INSERT INTO employes VALUES (1000, 15, 2000, t_adresse (2, ‘Oued Smar’,
‘Algiers’, ‘49000’), ‘toto’) ;

Pour l’intérrogation, il est conseillé de toujours utiliser les alias afin


d’éviter les erreurs.

L'accès aux objets se fait obligatoirement en préfixant le chemin d'accès


par l'alias de la table et non directement par le nom de la table.

SELECT [Link] FROM employes e ;


SELECT [Link] FROM employes e ;

Utilisation d’un type objet dans une table objet relationnelle


Un table objet relationnelle est une table qui contient des éléments de type
objet. Chaque élement est identifié par un OID.

Un objet tout seul n’a pas d’OID.

Cette table peut être vu de deux manières différentes, soit une table
avec une seule colonne de type objet ou bien une table relationnel à
plusieurs colonne.

Dans cette table, on a deux façons d’insertion alors.

Vision objet, directement avec le constructeur.

Vision relationnelle, sans constructeur, manière classique.

Des méthodes peuvent être associées à une table-objet.

-- Création table objet


-- On peut spécifier des contraintes sur la table. E.g quel attribut sera ID
CREATE TABLE adresses OF t_adresse

Base de données orientée objet 2


-- Insérer des objets dans la table objet
-- Lors de l'insertion, on va attribuer un OID à l'objet inséré
INSERT INTO adresses VALUES (t_adresse(2,‘Oued Smar’, ‘Algiers’, ‘49000’));
INSERT INTO adresses VALUES (2,‘Oued Smar’, ‘Algiers’, ‘49000’);

-- Accéder aux objets de la table objet. Tout comme le cas relationnel


SELECT * FROM adresses ;
SELECT [Link], [Link], [Link], [Link] FROM adresses a;

-- Pour avoir les objets


SELECT VALUE(a) FROM adresse a;

-- Pour avoir les OIDs


SELECT REF(a) FROM adresse a ;

-- DEREF qui renvoie un objet à partir de sa référence


SELECT DEREF([Link]) FROM pays p;
SELECT DEREF(REF(v)) FROM villes v;

Simulation d’héritage
Comme déjà mentioné, le but du modèle relationnel est d’introduire les
notions de POO. Voici comme on simule l’héritage entre deux type objet.

-- Classe mère
CREATE TYPE t_personne AS OBJECT(
nom VARCHAR(30), prenom VARCHAR(30), datenaiss DATE
);

-- Classe fille
CREATE TYPE t_etudiant AS OBJECT (
num_ine VARCHAR(10), pers REF t_personne
);

-- Ensuite, si on veut intérroger la table t_etudiant, on peut faire comme ceci


SELECT T.num_ine, [Link], [Link] FROM t_etudiant T;

Collections Imbriquées
On a deux types de collections imbriquées.

Table imbriquées ou Nested Tables.

VARRAYS.

Table imbriquée
Collection illimitée, non ordonnée d’éléments de même type.

On peut pas la manipuler comme une table normale, et on aura pas son schéma
dans SGBD.

Sous Oracle, il ne peut y avoir qu’un seul niveau. C’est à dire, on peut pas
avoir des tables imbriquées dans des tables imbriquées.

Voici comment on manipule les tables imbriquées.

-- Création d'un objet t_employe et une table objet t_employes


CREATE TYPE t_employe AS OBJECT(
num_insee VARCHAR(20),
nom VARCHAR(30),
age NUMBER
);

Base de données orientée objet 3


CREATE TYPE t_employes AS TABLE OF t_employe;

-- Création de la table principale departements


CREATE TABLE departements (
num_dep NUMBER,
budget NUMBER,
employes t_employes
)
NESTED TABLE employes STORE AS tab_emp;

-- Insertion directe dans la table principale


INSERT INTO departements VALUES ( 1, 200,
t_employes(t_employe(12345, ‘Med’, 25), t_employe(2222, ‘ALi’, 28)));

-- Insertion dans une table imbriquée


-- On utilise le mot clé THE
INSERT INTO THE (SELECT employes FROM departements WHERE num_dep = 1)
VALUES(t_employe (789, ‘Omar’, 20) ) ;

VARRAYS
Collection limitée, ordonnée d’éléments de même type.

Permet d’avoir plusieurs niveaux d’imbrication.

Manipulation d’un VARRAY.

Dans une requête SQL, on manipule le VARRAY entier.

Dans un bloc PL/SQL, on manipule des éléments particuliers du VARRAY.

Voici comment on manipule les VARRAY.

-- Création d'un VARRAY qui contient 2 élements


CREATE TYPE tvadresses AS VARRAY(2) OF t_adresse ;

-- Table principale
CREATE TABLE etudiants (
id VARCHAR(10),
nom VARCHAR(30),
adresses tvadresses
) ;

-- Insertion d'un VARRAY qui contient un seul élement


INSERT INTO etudiants VALUES (12345,‘Dihia’, tvadresses(t_adresse(9,‘pointe
pescade’, ‘Alger’,16000))) ;

-- Insertion d'un VARRAY qui contient deux élements, un parmis eux est nul
INSERT INTO etudiants VALUES (9999,‘Dalia’, tvadresses(t_adresse(23,‘miramar’, ‘Alger’,16000), null));

-- Aucun VARRAY n’est créé


INSERT INTO etudiants VALUES (2340, ‘Amr’, null);

-- Mise à jour de tout le VARRAY


-- On écrase!
UPDATE etudiants
SET adresses = tvadresses(t_adresse(9,‘pointe pescade’,‘Alger’, t_adresse(25,‘Saint eugene’ ,‘Alger’, 16000))
WHERE nom = ‘Dihia’ ;

-- Mise à jour d'un seul élement du VARRAY >> PL/SQL


DECLARE
lesadr tvadresses;
BEGIN
SELECT adresses INTO lesadr FROM etudiants WHERE id = 9999 ;
-- Modification de la deuxième valeur
lesadr(2) := tadresse(‘bab el oued’, ‘Alger’) ;
-- Mise à jour de la relation
UPDATE etudiants SET adresses = lesadr WHERE id = 9999 ;

Base de données orientée objet 4


COMMIT;
END ;

Méthodes et procédures
Comme c’est du objet relationnel, on peut ajouter des méthodes et des
procédures sur les objets.

Revoir l’exemple du cours.

Base de données orientée objet 5

Vous aimerez peut-être aussi