THE
Soit la séquence d'instructions suivante utilisant la clause THE :
1
INSERT INTO tIntervenant (pknom, prenom, bureau, ltelephones, lspecialites)
2
VALUES (
3
'Dumas',
4
'Leonard',
5
typBureau('R','C',123),
6
typListeTelephones(0344234423),
7
typListeSpecialites()
8
);
9
10
INSERT INTO THE (SELECT i.ltelephones FROM tIntervenant i WHERE i.pknom='Dumas')
11
VALUES (0666666666);
12
13
INSERT INTO THE (SELECT i.lspecialites FROM tIntervenant i WHERE i.pknom='Dumas')
14
VALUES (typSpecialite('BD','SGBDR'));
1
DELETE THE (SELECT i.ltelephones FROM tIntervenant i WHERE i.pknom='Dumas') nt
2
WHERE nt.COLUMN_VALUE=0344234423;
1
UPDATE THE (SELECT i.lspecialites FROM tIntervenant i WHERE i.pknom='Dumas') nt
2
SET nt.technologie='SGBDRO'
3
WHERE nt.domaine='BD';
Question
Rétro-concevez le modèle RO permettant les instructions précédentes.
Indice
Rappel : Extension THE
Solution
1
Type typBureau : <centre:char, batiment:char, numero:int>
2
Type typListeTelephones : collection de <entier>
3
Type typSpecialite : <domaine:char, specialite:char>
4
Type typListeSpecialites : collection de <typSpecialite>
5
tIntervenant (#nom:char, prenom:char, bureau:typBureau, ltelephones:typListeTelephones, lspecialites:typListeSpecialites)
1
CREATE OR REPLACE TYPE typBureau AS OBJECT (
2
centre char(2),
3
batiment char(1),
4
numero number(3)
5
);
6
/
7
8
CREATE OR REPLACE TYPE typListeTelephones AS TABLE OF number(10);
9
/
10
11
CREATE OR REPLACE TYPE typSpecialite AS OBJECT (
12
domaine varchar2(15),
13
technologie varchar2(15)
14
);
15
/
16
17
CREATE OR REPLACE TYPE typListeSpecialites AS TABLE OF typSpecialite;
18
/
19
20
CREATE TABLE tIntervenant (
21
pknom varchar2(20) PRIMARY KEY,
22
prenom varchar2(20) NOT NULL,
23
bureau typBureau,
24
ltelephones typListeTelephones,
25
lspecialites typListeSpecialites
26
)
27
NESTED TABLE ltelephones STORE AS tIntervenant_nt1,
28
NESTED TABLE lspecialites STORE AS tIntervenant_nt2;
Il est possible de créer un type typIntervenant
sous-jacent à la table tIntervenant
pour que tIntervenant
soit une table-objet. Mais ce n'est pas nécessaire ici.
Question
Rétro-concevez le modèle UML associé.
Question
Que renvoie l'instruction suivante :
1
SELECT i.pknom, s.*, t.*
2
FROM tIntervenant i, TABLE(i.lspecialites) s, TABLE(i.ltelephones) t
3
WHERE i.pknom='Dumas'
Indice
Vous dessinerez un tableau avec les entêtes de colonne adéquates.
Solution
1
PKNOM DOMAINE TECHNOLOGIE COLUMN_VALUE
2
-------------------- --------------- --------------- ------------
3
Dumas BD SGBDRO 666666666
Question
Changer le numéro de téléphone de Dumas avec la valeur de votre choix.
Solution
1
UPDATE THE (SELECT i.ltelephones FROM tIntervenant i WHERE i.pknom='Dumas') nt
2
SET nt.COLUMN_VALUE=1111111111;
Le WHERE n'est pas strictement indispensable, étant donné que la base ne contient que Dumas
pour le moment ; mais logiquement il est nécessaire pour assurer un fonctionnement correct dans tous les cas.