Vous êtes sur la page 1sur 16

Bases de données Relationnelles Objets

Présenté par:
Amal HALFAOUI (Epse GHERNAOUT)
a_halfaoui@mail.univ-tlemcen.dz
amal.halfaoui@gmail.com
Manipulation des données dans une base de
donnée Relationnelle Objet

2 BDD RO 5/12/21
1 Type abstrait de données(TAD ou type Object)
A-Insertion dans une table objet
Exemple1
Create type Tvoiture as object
(modele varchar2(15),
annee date,
no integer)
 
Create table voitures of Tvoiture;
-- voitures est une table d’objets.
L’insertion des données peut se faire comme d’habitude en SQL :
Insert into voitures values (‘2ch’, ‘1975’, 128);

Exemple2
Il est obligatoire d’utiliser le constructeur de type de l’objet manipulé comme
attribut. Les commandes suivantes insèrent des objets (objet principal et objet
attribut).

3 BDD RO 5/12/21
1 Type abstrait de données(TAD ou type Object)
A-Insertion dans une table objet
Create type Tadresse as object
(num varchar2(15),
Rue varchar(),
Codepost integer)
 
Create type Tpersonne as object
(nom varchar2(15), prénom varchar2(15),
date_naissance date, adresse Tadresse)/
 
Create table personnes of Tpersonne;
 
Insert into personnes values ( Tpersonne( ‘DIB,‘amine, ’16-05-1963’, Tadresse(1, ‘rue
de paris ’, 13000) ));  

4 BDD RO 5/12/21
1 Type abstrait de données(TAD ou type Object)
b-selection
On utilise la notation pointée pour accéder à l’objet manipulé comme attribut d’un objet
principal
Exemple :
SELECT * FROM Personne;
→ indication d’un objet de type Tadressse....
 
SELECT p.nom, p.adresse.ville
FROM personne p
 
Résultat de la requête précédente
NOM ADRESSE.VILLE
-------------------- --------------------
entreprise 1 Paris
entreprise 2 Marseille
entreprise 3 Narbonne

5 BDD RO 5/12/21
1 Type abstrait de données(TAD ou type Object)
D-Update
• Sans utilisation de constructeur :
 
Modification du nom de la rue d’un client :
UPDATE personne p
SET p.adresse.rue=’15 rue de france’
WHERE (p.nom)=’Farid’;

• Avec utilisation de constructeur


UPDATE TClient p
SET p. adresse=TAdresse (’15 rue de france’, ‘Tlemcen’, ‘13000’, ‘Algerie’)
WHERE (p.nom)=’Farid’;
 
Note : l’utilisation d’un constructeur oblige à renseigner tous les champs
 

6 BDD RO 5/12/21
2 Type Varray
Exemple:
CREATE TYPE Tprénoms AS VARRAY(3) OF VARCHAR(20);
 
CREATE TABLE Personne (AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms
,
adrTadresse )
A- insertion
• Insertion d’une ligne entière (objet principal + VARRAY)
 
Il est nécessaire d’utiliser le constructeur de type pour les insertions.
INSERT INTO personne VALUES (11,’DIB’,Tprenoms(’Ahmed’, ’Farid’)) ;
 
INSERT INTO personne VALUES (14,’Krim’,Tprenoms()) ;
 

7 BDD RO 5/12/21
2 Type Varray
A- Sélection
Il n’est pas possible d’accéder directement à un élément d’un VARRAY. Un select
restitue le tableau dans son intégralité
 
Pour naviguer dans des collections, il faut désimbriquer (ou aplatir) la collection.
L’expression TABLE permet d’interroger une collection dans la clause FROM
comme une table.
Syntaxe
SELECT … FROM nom-table t , TABLE (t.attribut-multivalué) v …

exemple
Personnes dont un prénom est Amine :
SELECT p.nom FROM Personne p, TABLE(p.prénoms) pr
WHERE pr.COLUMN_VALUE = 'Amine'
ou
SELECT p.nom FROM Personne p
WHERE 'Amine ' IN (SELECT * FROM TABLE (p.prénoms))

8 BDD RO 5/12/21
3 Type Table
A- Insertion
Prenons l’exemple personne et voiture
Create type tvoiture
Crate type tvoitures as table tvoiture
Create type tpersonne (..,voitures tvoitures,….)
• Insertion sans initialisation (valeur NULL) dans la table imbriquée
La commande insert sans le constructeur de type de la nested table, ne permet de
stocker aucun élément dans la table imbriquée
Insert avec initialisation sans insertion de valeurs dans la table imbriquée
La commande insert avec le constructeur de type de la nested table stocke un objet
dans la table et initialise à vide la table imbriquée associée.
/* insertion dans la table adresse -nested table vide*/
INSERT INTO personne VALUES ( 1, ‘personne 1', voitures() ------- insertion
d’une table imbriquée vide
)

9 BDD RO 5/12/21
3 Type Table
A- Insertion
• Insert avec initialisation et insertion de valeurs dans la table imbriquée
La commande insert suivante, avec le constructeur de type de la nested table stocke
un objet dans la table et initialise la table imbriquée associée avec des
enregistrements.
INSERT INTO personneVALUES (
3,
‘personne3’,
Tvoitures( voiture(31,13-5258-202),
voiture (32,14-5464-201),
voiture (33,12-581-555))
)

10 BDD RO 5/12/21
3 Type Table
b- Insertion dans la table imbriquée
La commande INSERT INTO THE (SELECT ...) ou INSERT INTO
TABLE(SELECT ...) stocke un enregistrement dans la table imbriquée
désignée par THE ou Table. Le select après le THE, ou table doit retourner un
seul objet, ce qui permet de sélectionner la table imbriquée associée. Ces
commandes ne peuvent être utilisées que si la table imbriquée a été initialisée.

Exemple
INSERT INTO THE ( SELECT voitures FROM
personnes WHERE num =3 ) VALUES ( 12,14-4555-45 ) ;

ou
INSERT INTO Table( SELECT voitures FROM
personnes WHERE num =3 ) VALUES ( 12,14-4555-45 ) ;

11 BDD RO 5/12/21
b- modification dans la table imbriquée
Update Table( SELECT voitures FROM personnes WHERE num =3 ) t
Set t.matricule = ‘14-45-45555’
Where t.num=32;

b- suppression dans la table imbriquée


Delete from Table( SELECT voitures FROM personnes WHERE num
=3 ) t
Where t.num=32;

12 BDD RO 5/12/21
3 Type Table
b- Interrogation
On utilise TABLE comme l’interrogation des VARRAY
select v.no,p.nom
from personness p, table(p.voitures) v
where p.nom='zey';
OU
select v.no
from table(select p.voitures from personness p where p.nom = 'zey') v;

OU
select v.no
from the (select p.voitures from personness p where p.nom = 'zey') v;

13 BDD RO 5/12/21
4 Type Ref
A- Insertion dans la table contenant le pointeur
1. Insert sans affectation de pointeur
Les commandes suivantes insèrent des objets dans la table personne avec initialisation
du pointeur voiture à NULL.
INSERT INTO personne VALUES (11,’mm’, ‘mimi’,NULL);

2. Insert avec affectation de pointeur


 Dans ce cas, on doit remplir la table voiture pour pouvoir la référencer dans la table
voiture.
Exemple :
 
Insert into voiture values (33, ‘Clio’, 2009) ;
Insert into voiture values (44, ‘I10’, 2014) ;
 
Puis on insère des objets dans la table personne. Chaque objet inséré est rattaché à la
voiture sur lequel il pointe.  
Insert into personne values (32, ’ss’,’sisi’, (SELECT REF(v) FROM VOITURE v
WHERE v.NUM = 33));

14 BDD RO 5/12/21
4 Type Ref
b-Update
1. Affectation ou modification d’un pointeur
 
La commande UPDATE suivie de SELECT REF permet de rattacher un objet d’une
table à celui sur lequel il pointe.
UPDATE personne p
SET p.voiture= (SELECT REF(v) FROM VOITURE v WHERE v.NUM = 33)
WHERE v.num=11 ---- il avait null pour l’attribut voiture

c. Suppression de pointeur
 
La suppression d’un pointeur est mise en œuvre par l’affectation de la valeur NULL
au pointeur.
UPDATE personne p
SET p.voiture=NULL
WHERE p.num=32

15 BDD RO 5/12/21
4 Type Ref
D- Select
 
Quelles sont les personnes qui ont une voiture de modele clio
SELECT p.nom, p.voiture.modele
FROM personne p
where p.voiture.modele=’clio’

16 BDD RO 5/12/21

Vous aimerez peut-être aussi