Les Objets dans SQL3 -...
-
Upload
nguyenkhanh -
Category
Documents
-
view
224 -
download
0
Transcript of Les Objets dans SQL3 -...
![Page 1: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/1.jpg)
Les Objets dans SQL3et dans Oracle et Informix
Didier DONSEZUniversité Joseph FourierIMA –IMAG/LSR/ADELE'LGLHU�'RQVH]#LPDJ�IU�'LGLHU�'RQVH]#LHHH�RUJ
KWWS���ZZZ�DGHOH�LPDJ�IU�aGRQVH]�FRXUV
![Page 2: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/2.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�2
Sommaire
n Abstract Data Typesn Litéraux et Objetsn Méthodes et Surchargen Héritage, Sous-Type et Sous-Tablen Conversionn Vue Objet-Relationnellen Extension de Typesn SQL3 et JDBC2.0
![Page 3: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/3.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�3
Motivations
n SQL3 étend le SQL aux concepts Objet.• Cependant la « relation » reste fondamentale
dans la manipulation des données
n Les SGBDs basés sur SQL3sont appelés 2EMHW�5HODWLRQQHOV
• Informix, Oracle, Sybase, IBM/DB2, CA-OpenIngres, PostGres ...
n Attention, peu respectent SQL3 !!!!
Oracle8+Informix9+
SQL3
![Page 4: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/4.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�4
Principe
n Typage fort• Type = Données + Méthodes
n La création de type ne crée pas d ’objets
n Les objets d ’un type sont persistants que lors ils sont insérés dans des tables déclarées (CREATE TABLE)
Oracle8+Informix9+
SQL3
![Page 5: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/5.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�5
Les Types Atomiques (SQL-92)
n Build-In Type• SQL-92
• DECIMAL, FLOAT, (NUMBER), … VARCHAR, DATE
n LOB Long OBject
• CLOB (Character LOB)• BLOB (Binary LOB)
• Chaîne d ’octetsLe noyau du SGBD ne connaît pas la structure du BLOBUsage : Stockage Multimédia (MPEG2, MP3, …)
• BFILE• Stockage externe
SGF Multimédia (QoS, …)
Oracle8+Informix9+
SQL3
![Page 6: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/6.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�6
UDT - User Defined Type
n Type Distinct• Type atomique avec typage fort
• Conversion implicite et explicite, Fonction de conversion
n ADT Abstract Data Type• Type complexe
• Attributs de type Atomique ou Complexe• Méthodes définies en PL/SQL ou un autre langage.
n 2 types d ’ADT• Type de Littéral
• typage des colonnes d ’une table
• Type d ’Objet• typage d ’un tuple-objet d ’une table
Oracle8+Informix9+
SQL3
![Page 7: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/7.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�7
Type Distinct
CREATE ',67,1&7�7<3( frfranc_t AS DOUBLE PRECISIONCREATE DISTINCT TYPE euro_t AS DOUBLE PRECISION
CREATE TABLE PrixProduit2 (descrprod VARCHAR(20),prixeuro euro_t,prixfrfranc frfranc_t
);
INSERT INTO PrixProduit2VALUES ( ’yaourt', 3.00::euro_t, 12.50::frfranc_t)
Oracle8+Informix9+
SQL3
![Page 8: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/8.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�8
ADT Litéral - Exemple 1
n Type de ColonneCREATE 7<3( codpostal_t ( dept NUMBER(2), ext NUMBER(3) );CREATE 7<3( adresse_t (
rue VARCHAR(20), ville VARCHAR(20), codpost codpostal_t);CREATE TABLEPerson( nom VARCHAR(20), adr DGUHVVHBW );INSERT INTOPersonVALUE ( ‘ Paul Dupont ’,
52:( ‘ 1 rue Danton ’, ’Paris ’,52:( 75, 1 )::FRGSRVWDOBW
)::DGUHVVHBW );SELECT p.nom, p.adrFROMPersonpWHERE p.adr.codpost.dept = 26;
SQL3
![Page 9: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/9.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�9
ADT Litéral - Exemple 2
n Type de ColonneCREATE 7<3( doublePrix_t (
eneuro euro_t,enfranc frfranc_t
);
CREATE TABLE Produit ( descr VARCHAR(20), prixGRXEOH3UL[BW);
SELECT p.descr, p.prix.eneuroFROM Produit pWHERE p.prix.enfranc > 10;
SQL3
![Page 10: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/10.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�10
ADT d ’Objet - Exemple 1
n Type d ’Objets (Ligne d ’une table)CREATE 52:�7<3( person_t (
nom VARCHAR(20),adr adresse_t
);
CREATE 7$%/( Person2)�SHUVRQBW (PRIMARY KEY nom);
SELECT p.nom, p.adrFROMPersonpWHERE p.adr.codpost.dept = 59;
SQL3
![Page 11: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/11.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�11
ADT d ’Objet - Exemple 2
n Type d ’Objets (Ligne d ’une table)CREATE 52:�7<3( produit_t (
descr VARCHAR(20),prix doublePrix_t
);
CREATE TABLE Produit 2)�SURGXLWBW (PRIMARY KEY descr);
SELECT p.descr, p.prix.eneuroFROM Produit pWHERE p.prix.enfranc > 10;
SQL3
![Page 12: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/12.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�12
ADT Oracle - Litéral et ObjetExemple 1
CREATE 7<3( person_t $6�2%-(&7 ( nom VARCHAR(20), adr adresse_t );
CREATE 7$%/( Person2) SHUVRQBW;
INSERT INTOPersonVALUE ( ‘Paul Dupont ’, DGUHVVHBW( ‘1 rue Danton ’, ’Paris ’, FRGSRVWDOBW( 75, 1 ) ) );
Instanciation de valeurs d ’ ADT
CREATE TABLEEmploye( empSHUVRQBW , sal frfranc_t );
SELECT e.emp.nom, e.emp.adr FROM Employe eWHERE e.empNOT IN (SELECT VALUE(p) FROM Personp);
Oracle8+
![Page 13: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/13.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�13
ADT Oracle - Litéral et ObjetExemple 2
CREATE 7<3( produit_t $6�2%-(&7 ( descr VARCHAR(20), prix doublePrix_t );
CREATE TABLE Produit 2)�SURGXLWBW;CREATE TABLETarifConcurrence(
concurrent VARCHAR(20), produit SURGXLWBW�);
SELECT p.descr, t.concurrentFROM Produit p, TarifConcurrence tWHERE p.prix.enfranc > t.produit.prix.enfranc
AND p.descr = t.produit.descr
Oracle8+
![Page 14: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/14.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�14
ADT Informix - Litéral et ObjetExemple 1
CREATE 52:�7<3( person_t $6�2%-(&7 ( nom VARCHAR(20), adr adresse_t );
CREATE 7$%/( Person2)�7<3( SHUVRQBW;INSERT INTOPersonVALUE ( ‘Paul Dupont ’,
52:( ‘1 rue Danton ’, ’Paris ’,52:( 75, 1 )::FRGSRVWDOBW�)::DGUHVVHBW );
Instanciation de valeurs d ’ ADT
CREATE TABLE Employe( empSHUVRQBW , sal frfranc_t );
SELECT e.emp.nom, e.emp.adrFROM Employe eWHERE e.empNOT IN (SELECT * FROM Person);
Informix9+
![Page 15: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/15.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�15
ADT Informix - Litéral et ObjetExemple 2
CREATE 52:�7<3( produit_t AS OBJECT ( descr VARCHAR(20), prix doublePrix_t );
CREATE TABLE Produit 2)�7<3(�SURGXLWBW;CREATE TABLETarifConcurrence(
concurrent VARCHAR(20), produit SURGXLWBW�);
SELECT p.descr, t.concurrentFROM Produit p, TarifConcurrence tWHERE p.prix.enfranc > t.produit.prix.enfranc
AND p.descr = t.produit.descr
Informix9+
![Page 16: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/16.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�16
Compléments sur les ADT
n Pas de récursion de type
n Pas de valeur par défaut des champs
n Aucune contrainte CHECK• Elles sont déclarées dans les tables
n Contrainte NOT NULL• autorisée
CREATE TYPEcodpostal_t (dept NUMBER(2) 127�18//, ext NUMBER(3) );
• obligatoire dans les collections
Oracle8+Informix9+
SQL3
![Page 17: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/17.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�17
Définition des Tables (i)
n Compatible SQL-92CREATE TABLE Employe(
numempINT, nom VARCHAR(20), sal DOUBLE PRECISION,35,0$5<�.(<�QXPHPS��&+(&.�VDO!�� );
n Utilisation de ConstructeursCREATE TABLEEmploye(
numempINT,pers ROW( nom VARCHAR(20), ville VARCHAR(20), dept NUMBER );postes LIST( ROW( intitule VARCHAR(10),
debut DATE NOT NULL, fin DATE) ),35,0$5<�.(<�QXPHPS��&+(&.�SHUV�GHSW %(7:((1���$1'����
);
Oracle8+Informix9+
SQL3
![Page 18: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/18.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�18
Définition des Tables (ii)
n Utilisation des types&5($7(�7$%/( Employe(
numempINT, pers person_t, sal frfranc_t35,0$5<�.(<�QXPHPS��&+(&.�VDO!��
);n Table d ’Objets
CREATE ROW TYPE employe_t( numempINT, pers person_t, sal frfranc_t );
&5($7(�7$%/( Employe2) employe_t( 35,0$5<�.(<�QXPHPS��&+(&.�VDO!�� );
&5($7(�7$%/( Employe2)�7<3( employe_t( 35,0$5<�.(<�QXPHPS��&+(&.�VDO!�� );
Oracle8+Informix9+
SQL3
Informix9+
Oracle8+SQL3
![Page 19: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/19.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�20
Constructeurs de Type
n Ligne ROW• plusieurs champs nommés de type différent• nombre fixe de champs
n Collections• plusieurs éléments de même type• avec/sans doublon, ordonné/sans ordre, fixé/variable
• SET• LIST• MULTISET• VARRAY• Table imbriquée (Nested Table)
n Référence REF• référence vers des objets de table• navigation par déréferenciation
Oracle8+Informix9+SQL3
Oracle8+SQL3
Oracle8+Oracle8+
Informix9+SQL3Informix9+SQL3Informix9+SQL3
![Page 20: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/20.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�21
Constructeur Ligne (ROW )Définition
n Structure• plusieurs champs nommés de type différent• nombre fixe de champs
CREATE TYPE person_t ( nom VARCHAR(20),adresse 52:(
rue VARCHAR(40),ville VARCHAR(20),52:(
dept NUMBER(2),ext NUMBER(3)
))
);
Oracle8+Informix9+
SQL3
![Page 21: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/21.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�22
Constructeur Ligne (ROW )Instanciation et Accès
n Instanciation
CREATE TABLE Person OF person_t;
INSERT INTO PersonVALUE( ‘Paul Dupont ’, 52:( ‘1 rue Danton ’, ’Paris ’, 52:( 75, 1 ) ) );
n Accès aux Champs• opérateur . (DOT)
SELECT p.nom, p.adresse.villeFROM PersonpWHERE p.nom LIKE ‘Pa% ’ AND p.adresse.codpostal.dept = 75;
Oracle8+Informix9+
SQL3
![Page 22: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/22.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�23
Constructeurs Collections
• plusieurs éléments de même type• avec/sans doublon, ordonné/sans ordre, fixé/variable
n Remarque:• une collection ne peut contenir de valeurs nulles• ROW(NULL, NULL, ROW (NULL,NULL)) est nulle• ROW(‘1av Foch ’, NULL,ROW (NULL,NULL)) n ’ est pas nulle
SET 9Collection Duplicata
(Doublon) Ordonné Variable Syst/Std
Informix9+SQL3
MULTISET 9 9LIST 9 9 9
Nested Table 9 9VARRAY 9 9
Informix9+SQL3
Informix9+SQL3
Oracle8+
Oracle8+fixé maisextensible
Oracle8+Informix9+
SQL3
![Page 23: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/23.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�24
Instanciation dans les Collections
CREATE TABLE CarnetAdresse( nom VARCHAR(20),adresse s LIST ( adresses_t ) NOT NULL,amis SET ( VARCHAR(20) ) NOT NULL
);
INSERT INTO CarnetAdresseVALUE (‘Paul Dupont’,LIST(
ROW(‘1 rue Danton’,‘Paris’, ROW(75,1)::codpostal_t)::adresse_t,ROW(NULL,‘Paris’, ROW(75,15)::codpostal_t)::adresse_t
),SET( ‘Pierre Durant ’, ‘Jacques Martin ’)
);
Informix9+SQL3
![Page 24: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/24.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�25
Opérations sur les Collections
n Opérateurs IN et NOT IN �HQ�64/�SELECT nom FROM CarnetAdresse WHERE ‘Jacques Martin’ ,1 (amis)
n Opérateur CARDINALITY�HQ�64/�SELECT nom, &$5',1$/,7<(adresses)FROM CarnetAdresse WHERE &$5',1$/,7<(adresses) > 1;
n Autres Opérations• SRVVLEOHV�PDLV�HQ�64/�3URFpGXUDO
Informix9+SQL3
![Page 25: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/25.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�26
VARRAY dans Oracle
• Ensemble ordonné et fixé d ’ éléments de même type• mais la taille peut être étendue (méthode EXTEND(N))
• .COUNT =< taille fixée du VARRAY(tailledéclaration)• autres méthodes ( (), .FIRST, .LAST)CREATE TYPElistAdresses_t $6�9$55$<��� OF adresse_t ;DECLAREadressesPaul listAdresses_t ;BEGIN
adressesPaul = listAdresses_t(adresse_t( ‘1 rue Danton ’, ‘Paris’, codpostal_t(75, 001) ),adresse_t( ‘8 rue LouisXVI ’, ‘Paris’, codpostal_t(75, 016) ) );
For i IN ����� adressesPaul�/$67 LOOPINSERT INTO CarnetAdresse(‘Paul Dupont’, adressesPaul(i) );
END LOOP; END;
Oracle8+
![Page 26: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/26.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�27
Tables Imbriquées (Nested Table)
• Ensemble non ordonné et variable �0XOWL6HW�d ’ éléments de même ADT Objet
CREATE TYPE projet_t $6�2%-(&7(numproj INT, nomproj VARCHAR(20), budget DEC(10,2) ) ;
CREATE TYPE projets_t $6�7$%/( OF projet_t ;
CREATE TABLE Departement (numdept INT, nomdept VARCHAR(20), SURMHWV�SURMHWVBW
) 1(67(' 7$%/( SURMHWV�6725(�$6 7DEOH'HV3URMHWV;• Aucune opération directe sur la table 7DEOH'HV3URMHWV
Oracle8+
!
![Page 27: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/27.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�28
Table Imbriquée - Manipulation (i)
n TABLE() : Flattened Subquery7$%/(� SELECT d.projets FROMDepartment d WHERE d.numdept = 600 �• le SELECT doit retourner un et un seul tuple collection• 7$%/(�� est anciennement nommé 7+(��
SELECT p.numproj, p.nomproj FROM7$%/(� SELECT d.projets FROMDepartment d WHERE d.numdept = 600 ��p
WHERE p.budget > 10000;INSERT INTO
7$%/(� SELECT d.projets FROMDepartment d WHERE d.numdept = 600 �VALUES (projet_t(110, ‘Téléportation’, 1000000));
UPDATE7$%/(� SELECT d.projets FROMDepartment d WHERE d.numdept = 600 �
SET budget = 500000 WHERE numproj = 110;
Oracle8+
![Page 28: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/28.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�30
Table Imbriquée - Manipulation (iii)
n Nested Cursors/LVWH�GHV�SURMHWV�GH�SOXV�G ¶�0��DYHF�OHV�GpSDUWHPHQWV�SELECT numdept, nomdept,
&85625�SELECT p.numproj, p.nomproj, p.budgetFROM 7$%/(�Department.projets) pWHERE p.budget > 1000000
)FROM Department ;
Department.projets : table projets dans le schéma DepartementTABLE(Department.projets) facilite la résolution de noms
Oracle8+
!
![Page 29: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/29.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�32
Instanciation des Collections
create type tel_t as object ( numvarchar2(10), poste varchar2(6) );create type listtel_t as varray(10) of tel_t;
n Constructeurinsert into ovPers values ( 1390120989, ‘Dupont’, ‘Jean’,
OLVWWHOBW( tel_t(‘0327141234’,’8520 ’), tel_t(‘0320445962’,NULL) ) );n Opérateur MULTISET( )
• permet l ’ instanciation d ’ une collection (VARRAY, NT) à partir d ’ une requête SELECTselect numss, nom, prenom,
cast(PXOWLVHW� select tel_t(numtel,numposte)fromTel t where t.numss=p.numss)
as listtel_t) fromPers p;
Oracle8+
![Page 30: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/30.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�33
Opérations sur les Collections (i)
• Remarque : Ce sont des méthodes !n En SQL
.EXISTS(i)• Teste si le ième élément existe
.COUNT()• Compte le nombre d’ éléments non vide (inférieur ou égal à LAST())
.LIMIT()• Retourne la taille maximale d’ un VARRAY (NULL pour une nested table)
Oracle8+
![Page 31: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/31.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�34
Opérations sur les Collections (ii)
n En PL/SQL(i)
• ième élément (peut être vide).FIRST(), .LAST()
• Indice du premier ou dernier élément (non vide).• NULL si la collection est vide
.NEXT(i), .PRIOR(i)• élément non vide suivant (précédent) l ’ élément i
.EXTEND, .EXTEND(n), .EXTEND(n,i)• étend de 1 ou n éléments, avec des copies de l ’ élément i
.DELETE• Supprime tous les éléments
.DELETE(i), .DELETE(i,j)• Supprime l’ élément i / Supprime les éléments i à j
.TRIM• supprime l’ élément à l’ indice LAST()
.TRIM(n)• supprime les n derniers éléments
Oracle8+
![Page 32: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/32.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�35
Exemple
n Soit une collection'(&/$5(�&�9$55$<����2)�180%(5�&� ���������������������
&�),567�� ���&�/$67�� ���&�/,0,7�� ���&�&2817�� �&�(;7(1'����
&� ��������������������18//�&�/$67�� ���&�/,0,7�� ���&�&2817�� �
&�(;7(1'������&� ��������������������18//����������&�/$67�� ����&�/,0,7�� ����&�&2817�� �
&�'(/(7(�����&�'(/(7(����&� ��18//�������18//�������18//����������&�),567�� ���&�1(;7��� ���&�35,25��� ���&�&2817�� �
&�75,0����&� ��18//����
Oracle8+
![Page 33: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/33.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�37
Exemple de parcours d ’une collection
DECLARE carnetAdressesDeJean listeadresses_t; i INTEGER;BEGINcarnetAdressesDeJean= listeadresses_t(
addresse_t(‘1 rue du Vignoble’, ‘Bordeaux’, 33000 ),addresse_t(‘6 av de la Cave’, ‘Reims’, 51000) );
i := carnetAdressesDeJean.FIRST;While i <= carnetAdressesDeJean.LAST loop
DBMS_OUTPUT.PUT( ' Adresse ' || i || ': ');DBMS_OUTPUT.PUT_LINE(carnetAdressesDeJean(i));i := carnetAdressesDeJean.NEXT(i);
end loop;For i IN 1.... carnetAdressesDeJean.LAST loop
INSERT INTOTabCarnetsAdresse( ‘Jean Dupont ’,carnetAdressesDeJean(i) );
end loop;END;
Oracle8+
![Page 34: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/34.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�38
Références
n Notion d ’OID (Object IDentifier)• Immuable• Globalement Unique• Non réutilisable après destruction de l ’ objet• JpQpUp�SDU�OH�V\VWqPH��SHUIRUPDQFH�HQ�QDYLJDWLRQ�
n Chaque objet possède un OID• sauf si c ’ est une colonne d ’ une table
n Si l ’objet est de type T,sa référence est de type REF(T)
n Les références ont une valeur affichable• FH�TXL�Q ¶HVW�SDV�OH�FDV�GDQV�OHV�6*%'�22
Oracle8+
SQL3
! Oracle8+
![Page 35: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/35.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�39
Déclaration de Références
n Déclaration dans un typeCREATE TYPE person_t;CREATE OR REPLACE BODY TYPE person_t (
nom VARCHAR(20), prenomVARCHAR(10), nais DATE,conjoint 5()(person_t)
);CREATE TABLE PersonOFperson_t
n Déclaration dans une tableCREATE TABLE Ami (
ami1 5()(person_t),ami2 5()(person_t)
);
SQL3
![Page 36: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/36.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�40
Déclaration de Références
n Déclaration dans un typeCREATE TYPE person_t;CREATE OR REPLACE BODY TYPE person_t (
nom VARCHAR(20), prenom VARCHAR(10), nais DATE,conjoint 5() person_t
);CREATE TABLE PersonOFperson_t;
n Déclaration dans une tableCREATE TABLE Ami (
ami1 5() person_t,ami2 5() person_t
);
Oracle8+
![Page 37: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/37.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�41
Limitation de la portée(SCOPE FOR)
n Limite la portée de la référenceà une table particulière
• renforce l ’ intégrité référentielle
n Exemple
CREATE TABLE Person2 OFperson_t(SCOPE FOR conjoint ISPerson) ;
CREATE TABLE Ami2 (ami1 5() person_t,ami2 5() person_t,SCOPE FOR ami1 IS Person,SCOPE FOR ami2 IS Person
);
Oracle8+
SQL3
![Page 38: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/38.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�42
Référence d ’Objets
3HUVRQ QRP SUHQRP FRQMRLQWDupont JeanDupont MarieMartin Patrick NULL
Oracle8+
SQL3
$PL DPL�
Dupuis Pascal NULL
DPL� QDLV10/01/6912/09/7327/02/681/04/69
![Page 39: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/39.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�43
Déréférenciation
n Opérateurs de Déréférenciation -> et .• R->A, R.A : accès à la valeur d ’ un attribut A
d ’ un objet référencé par la référence R
n Exemple
SELECT a.ami2->conjoint->nom FROM Ami aWHERE a.ami1->nom = ‘Martin’;
• équivalent àSELECT x.nom FROM Ami a, Person x, Person y, Person zWHERE z.nom = ‘Martin’
AND REF(z)=a.ami1AND a.ami2=REF(y)AND y.conjoint=REF(x);
Oracle8+
SQL3
![Page 40: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/40.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�44
Références dans ORACLE
n DéclarationDECLARErefpersREFperson_t; en PL/SQL
n Référence d ’un objet REF() SELECT 5()�S� INTOrefpersFROM PersonpWHERE p.nom=‘Martin ’;
n Déréferenciation vers un objet DEREF()UPDATE EmployeSET personne = '(5()�UHISHUV�WHERE numemp= 1003;
n Test d ’Accessibilité des Références• IS [NOT] DANGLINGSELECT e.nom,e.chef.nom,e.chef.age() FROM EmployeeWHERE e.numemp= 1003 AND e.chef ,6�127�'$1*/,1*;
Oracle8+
![Page 41: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/41.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�45
DéclarationDECLARErefpers REFperson_t; en PL/SQL
Référence d ’ un objet REF() SELECT 5()�S� INTOrefpers FROM PersonpWHERE p.nom=‘Dupont ’ AND p.prenom=‘Jean ’;
Références dans ORACLE
3HUVRQ QRP SUHQRPDupont JeanDupont MarieMartin Patrick
Oracle8+
QDLV10/01/6912/09/7327/02/68
(PSOR\HH QXPHPS10011002
DGUParisParisLille
SH�QRP SH�SUHQRPBoss BillMartin Patrick
SH�QDLV16/09/4727/02/68
SH�DGUNiceLille
FKHINULL
1003 Dupont NULL NULL NULL
UHISHUV
![Page 42: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/42.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�46
DEREF() : Déréferenciation vers un objetUPDATE EmployeSET pe= '(5()�UHISHUV�WHERE numemp= 1003;
RemarqueUPDATE PersonSET adr = ‘Bordeaux ’ WHERE nom = ‘Dupont’;
Déréferenciation
3HUVRQ QRP SUHQRPDupont JeanDupont MarieMartin Patrick
Oracle8+
QDLV10/01/6912/09/7327/02/68
(PSOR\HH QXPHPS10011002
DGUParisParisLille
SH�QRP SH�SUHQRPBoss BillMartin Patrick
SH�QDLV16/09/4727/02/68
SH�DGUNiceLille
FKHINULL
1003 Dupont Jean 10/01/69 NULL
UHISHUV DGUBordeauxBordeaux
Lille
![Page 43: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/43.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�47
Références sur un objet n ’ existant plusExemple
SELECT e.pe.nom,e.chef.pe.nom,e.chef.pe.age() FROM EmployeeWHERE e.numemp= 1003;
Test d ’ Accessibilité des RéférencesIS [NOT] DANGLINGSELECT e.pe.nom,e.chef.pe.nom,e.chef.pe.age()FROM EmployeeWHERE e.numemp= 1003 AND e.chef ,6�127�'$1*/,1*;
Références Pendantes (Dangling)Oracle8+
(PSOR\HH QXPHPS1001
SH�QRP SH�SUHQRPBoss Bill
SH�QDLV16/09/47
SH�DGUNice
FKHINULL
1003 Dupont Jean 10/01/69 NULL
![Page 44: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/44.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�49
Références dans Informix
n Présentes• colonne virtuelle ROWID
n MAIS pas de déclaration, ni déréférenciationn Usage : comparaison de lignes
SELECT x.rowid, x.numclient, y.rowidFROM Client x, Client yWHERE x. numclient = y. numclientAND x.rowid != y.rowid
Informix9+
![Page 45: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/45.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�50
Fonctions et Procédures d ’ADT
n Encapsulation• « méthodes » = fonctions et procédures membres
n Déclaration• à la création ou à la modification du typeCREATE TYPEnomtype(
attributsdéclarations ou définitions des méthodes
);
n Définition• à la création ou à la modification du type
• les méthodes sont définies dans un langage procédural interne (PL/SQL) ou externe (C, C++)
Oracle8+
SQL3
![Page 46: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/46.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�51
Déclaration et Définitionsdes fonctions membres (i)
CREATE TYPE Vendeur_t ( numNUMBER, nom CHAR(20), FUNCTION nouvvendeur( :numCHAR(20), :nom DATE)RETURNS Vendeur_t;
:v Vendeur_t ; /* local decl. */BEGIN
:v := Vendeur_t (); /* built-inconstructor */:v.num:= :num; :v.nom := :nom;RETURN :v;
END;FUNCTION chiffreVente(:v Vendeur_t ) RETURNS FLOAT; );
n nouvvendeur() est une définition()n chiffreVente() est seulement une déclaration
• cette méthode doit être définie quelque part
SQL3
![Page 47: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/47.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�52
Déclaration et Définitionsdes fonctions membres (ii)
FUNCTION chiffreVente(:v Vendeur_t ) RETURNS FLOAT; :r FLOAT;
BEGINSELECT SUM(qte*prixunit) INTO :rFROM Vente WHERE numvendeur = :v.num;RETURN :r;
END;
SQL3
![Page 48: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/48.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�53
Déclaration et Définitionsdes fonctions membres (i)
n DéfinitionCREATE TYPE Vendeur_t AS OBJECT (
numNUMBER, nom CHAR(20),MEMBER FUNCTION nouvvendeur(numIN CHAR(20), nom IN DATE) RETURN Vendeur_t
);
n DéclarationCREATE OR REPLACE TYPE BODY Vendeur_t ASMEMBER FUNCTIONnouvvendeur( numIN CHAR(20), nom IN DATE)
RETURN Vendeur_t RETURN Vendeur_t ISDECLARE v Vendeur_t ;BEGIN v.num:=num; v.nom := nom;RETURN v;END;
END;
Oracle8+
![Page 49: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/49.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�54
Déclaration et Définitionsdes fonctions membres (ii)
n ModificationALTER TYPE Vendeur_t REPLACE AS OBJECT (
numNUMBER, nom CHAR(20),MEMBER FUNCTIONnouvvendeur(
numIN CHAR(20), nom IN DATE) RETURN Vendeur_t ,MEMBER FUNCTION chiffreVente() RETURN NUMBER,
);CREATE OR REPLACE TYPE BODY Vendeur_t ASMEMBER FUNCTION chiffreVenteRETURN FLOAT IS
DECLARE r NUMBER;BEGIN
SELECT SUM(qte*prixunit) INTO rFROM Vente WHEREnumvendeur = VHOI.num;RETURN r;
END; END;
Oracle8+
![Page 50: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/50.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�55
Surcharge des fonctions membres
CREATE TYPEPerson_t AS OBJECT(nameVARCHAR2(100),dobDATE,MEMBER FUNCTION age() RETURNnumber,0(0%(5�)81&7,21�SULQW���5(7851�YDUFKDU�
) NOT FINAL;
CREATE TYPEEmployee_t UNDERPerson_t(salaryNUMBER,bonus NUMBER,MEMBER FUNCTIONwages() RETURNnumber,29(55,',1*�0(0%(5�)81&7,21�SULQW���5(7851�YDUFKDU�
);
Oracle8+
![Page 51: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/51.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�56
Fontions et Procédures d ’ADTdans Informix
n Pas de « méthodes »• ADT en argument des fonctions et des procédures
• Surcharge
Informix9+
![Page 52: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/52.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�57
Fonctions « BuildIn » d ’ADT
n Fonctions de Comparaison (Built in)• EQUAL, LESSTHAN peuvent être déclarées• ces fonctions sont invoquées lors des comparaisons
dans la clause WHERE =, <, =<, …, < ANY, > ALL, ...
• ORDER retourne -1 (<), 0 (=), 1 (>)
n Ordre• RELATIVE• HASH• fonction de hachage MAP
• donne un NUMBERqui établit un ordre relatif entre les instances de l ’ ADT
n Conversion CAST
Oracle8+Informix9+
SQL3
Oracle8+
Oracle8+
![Page 53: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/53.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�58
Fonctions de Comparaison
FUNCTION LESSTHAN( :v1 Vendeur_t, :v2 Vendeur_t )RETURNS BOOLEAN;
BEGIN IF chiffreVente(:v1) >chiffreVente(:v2)RETURN FALSE ELSE RETURN TRUE;
END;FUNCTION EQUAL ( :v1 Vendeur_t, :v2 Vendeur_t )
RETURNS BOOLEAN;BEGIN IFchiffreVente(:v1) = chiffreVente(:v2)
RETURN TRUE ELSE RETURN FALSE;END;
SELECT v.numFROM Vendeur vWHERE v >= ALL Vendeur;
SQL3
![Page 54: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/54.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�59
Fonctions de Comparaison
FUNCTION ORDER( v1 Vendeur_t, v2 Vendeur_t )RETURNS NUMBER;
DECLARE cv1, cv2 : FLOAT;BEGIN cv1:=v1.chiffreVente();
cv2:=v2.chiffreVente()IF cv1 > cv2 THEN RETURN 1ELSIF cv1 = cv2 THEN RETURN 0ELSE RETURN -1;
END;
SELECT v.numFROM Vendeur vWHERE v >= ALL Vendeur;
Oracle8+
![Page 55: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/55.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�60
SQL3
Héritage
n Héritage Simple vs Multiple• simple pour Oracle8+ et Informix9+• multiple spécifié dans SQL3 (qui est du papier ;-))
n Héritage de Type• Un type T peut avoir 1 (ou plusieurs) super-type ST
n Héritages de Table• Une table R peut avoir 1 super-table SR
Oracle8+Informix9+
SQL3
Oracle8+Informix9+
![Page 56: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/56.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�61
Héritage de Type
CREATE ROW TYPEperson_t(nom CHAR(20), sexe CHAR(1),age INT);
CREATE ROW TYPE employe_t 81'(5 person_t (salaire FLOAT);
CREATE ROW TYPE manager_t 81'(5 employe_t (bonus FLOAT);
CREATE ROW TYPE client_t 81'(5 person_t(compte FLOAT);
Oracle8+Informix9+
SQL3
![Page 57: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/57.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�62
Héritage de Type
CREATE ROW TYPEperson_t(nom CHAR(20), sexe CHAR(1),age INT)
127�,167$17,$%/( �� SDV�G·LQVWDQFH�GX�W\SH127�),1$/� �� VRXV�W\SDJH�SRVVLEOH
CREATE ROW TYPE employe_t 81'(5 person_t (salaire FLOAT);
CREATE ROW TYPE client_t 81'(5 person_t(compte FLOAT)
),1$/� �� SDV�GH�VRXV�W\SDJH�SRVVLEOH
Oracle8+
![Page 58: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/58.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�63
Héritage de Table
CREATE TABLE Person(nom CHAR(20), sexe CHAR(1),age INT);
CREATE TABLE Employe81'(5 Person (salaire FLOAT);
CREATE TABLE Manager 81'(5 Employe (bonus FLOAT);
CREATE TABLE Client 81'(5 Person(compte FLOAT);
Informix9+SQL3
![Page 59: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/59.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�64
Héritage des propriétés des tables
n Clause ADD/DROP/MODIFY• Attributs• Fonctions et Procédures
• Surcharge des fonctions et procédures
• Contraintes• pas de retrait, mais ajout possible
• Triggers• pas de retrait, mais « surcharge » possible
• Index• pas de retrait, mais ajout possible
Oracle8+Informix9+
SQL3
![Page 60: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/60.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�65
Relation entre héritage de tableet héritage de type
n Contrainte sur l ’héritage de tableCREATE TABLE 5 OF TYPE 7 UNDER 67;• le type T de table R doit avoir pour super-type ST,
le type de la super-table SR de R
CREATE TABLE Person OF TYPE person_t;CREATE TABLE Employe OF TYPEemploye_t 81'(5 Person;CREATE TABLE Manager OF TYPE manager_t 81'(5 Employe;CREATE TABLE Client OF TYPE client_t 81'(5 Person;
Informix9+
![Page 61: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/61.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�66
Consultation de l ’héritage de table
SELECT * FROM ONLY(Person);• ONLY réduit la portée du SELECT/UPDATE dans un héritage de tables
SELECT * FROM Person;SELECT PersonFROM Person;
Informix9+
3HUVRQ 1RP 6H[H $JH3DXO 0 ��3LHUUH 0 ��
(PSOR\H 1RP 6H[H $JH-DFTXHV 0 ��$QQH ) ��
&OLHQW 1RP 6H[H $JH+HQUL 0 ��0DULH ) ��
6DODLUH����������&RPSWH����������
0DQDJHU 1RP 6H[H $JH%LOO 0 �� 6DODLUH������ %RQXV������
![Page 62: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/62.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�67
Opération sur les types
n IS OF(W\SH��W\SH���«)• Test d’ appartenance à un type ou à un sous-typeSELECT VALUE(c) FROMCompanycWHERE c.employee IS OF(manager_t, engineer_t);
n IS OF(ONLY W\SH��W\SH���«)• Test d’ appartenance strict à un typeSELECT VALUE(c) FROMCompanycWHERE c.employee IS OF(manager_t); --REM exclut les director_t
n TREAT(FROBVXSHUW\SH AS W\SH)• coercition vers un sous typeSELECT TREAT(c.employeeAS manager_t) FROM Companyc;-- seuls les rows contenant des manager_t sont affichées
n SYS_TYPEID(W\SH)• Retourne un numéro entier de type dans une hiérarchie de typeSELECT SYS_TYPEID(c.employee) FROM Companyc;
Oracle8+
![Page 63: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/63.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�68
Surchargede Fonction et de Procédure
CREATE FUNCTION CalculeSalaire(e employe_t)RETURNING integerRETURN e.salaire;
END FUNCTION;
CREATE FUNCTIONCalculeSalaire(m manager_t)RETURNINGintegerRETURN m.bonus + CalculeSalaire(m::employe_t);
END FUNCTION;
SELECT MOY(CalculeSalaire(e)) FROM Employe e; # ������
Informix9+
![Page 64: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/64.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�69
Accès aux « Membres » d ’un ADT
• Protection de l ’ accès des attributs et des méthodes d ’ un ADT
n 3 niveaux• PUBLIC (par défaut)
• accessible par tous
• PROTECTED• accessible que par les méthodes des types dérivés
• PRIVATE• accessible que par les méthodes de l ’ ADT
Oracle8+
SQL3
![Page 65: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/65.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�70
Conversion (CAST)
n Typage fort• conversion de type
• explicite / implicite
n Opérateur de Conversion• CAST(attribut AS type)
SELECT titreFROM projetWHERE CAST(ecrivainAS editeur_t) = editeur
• Opérateur de conversion ::SELECT titreFROM projetWHERE ecrivain:: editeur_t = editeur
Oracle8+Informix9+
SQL3
![Page 66: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/66.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�71
Conversion
CREATE ROW TYPE info_t (x BOOLEAN, y BOOLEAN)CREATE TABLEcustomer (cust_info info_t)CREATE TABLEretailer (ret_info ROW (a CHAR(1), b CHAR(1)))
SELECTcust_infoFROMcustomer, retailerWHEREcust_info = ret_info::info_t
SELECTcust_infoFROMcustomer, retailerWHEREcust_info::ROW(a CHAR(1), b CHAR(1)) = ret_info
Oracle8+Informix9+
SQL3
![Page 67: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/67.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�72
Conversion automatique
n Pour les types «BuildIn»,certaines conversion sont automatiques
CREATE TABLE prices (col1 ROW(a SMALLINT, b FLOAT)col2 ROW(x INT, y REAL)
);SELECT * FROM prices WHERE col1 = col2
Conversion automatique de SMALLINT vers INTConversion automatique de REAL vers FLOAT
SELECT * FROM pricesWHERE ROW(col1.a::INT,col1.b) = ROW(col2.x, col2.y::FLOAT)
Oracle8+Informix9+
SQL3
![Page 68: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/68.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�73
Conversion de Types Distincts (i)
CREATE DISTINCT TYPEfrfranc_t AS DOUBLE PRECISIONCREATE DISTINCT TYPE euro_t AS DOUBLE PRECISIONCREATE TABLE PrixProduit(prix ROW(d VARCHAR(20), f frfranc_t))
Conversion ExpliciteINSERT INTO PrixProduit VALUES(ROW( ’yaourt', 12.50::frfranc_t))
Oracle8+Informix9+
SQL3
![Page 69: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/69.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�74
Conversion de Types Distincts (ii)
CREATE DISTINCT TYPEfrfranc_t AS DOUBLE PRECISIONCREATE DISTINCT TYPE euro_t AS DOUBLE PRECISIONCREATE TABLE PrixProduit(prix ROW(d VARCHAR(20), f frfranc_t))
Conversion ImpliciteCREATE CAST (frfranc_t AS euro_t)SELECT prix::ROW(d VARCHAR(20), f euro_t) FROM PrixProduit
CREATE TABLE PrixProduit2 (descrprod VARCHAR(20), prixeuro euro_t, prixfrfranc frfranc_t );
INSERT INTO PrixProduit2VALUES ( ’yaourt', 3.00::euro_t, 12.50::frfranc_t)
Oracle8+Informix9+
SQL3
![Page 70: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/70.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�75
Fonctions de Conversion
CREATE TABLE PrixProduit2 ( descrprodVARCHAR(20),prixeuroeuro_t,prixfrfranc frfranc_t
);Fonction de Conversion
CREATE FUNCTIONfrfranc_to_euro(f frfranc_t) RETURNS euro_tRETURN CAST((f::DOUBLE PRECISION / 6.33) AS euro_t);
END FUNCTION;Déclaration
CREATE CAST(frfranc_t AS euro_t WITH frfranc_to_euro);Usage
SELECT CAST(prixfrfrancAS euro_t ), prixeuroFROM PrixProduit2WHERE CAST(prixfrfrancsAS euro_t ) < prixeuro
Oracle8+Informix9+
SQL3
![Page 71: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/71.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�77
9XH�2EMHW�GH�OD�%DVH�5HODWLRQQHOOH
%DVH�5HODWLRQQHOOH
Object View
n Motivation• Objets métiers, récupération de l ’ existant, ...
n Exemple
Oracle8+
RY3HUV QXPVV QRP SUHQRP OLVWWHO136123 Dupont Jean (0327141234,8520),(0320445962,NULL)
25688 Durant Marie NULL
3HUV QXPVV QRP SUHQRP136123 Dupont Jean25688 Durant Marie
7HO QXPVV QXPWHO QXPSRVWH136123 0327141234 8520
136123 0320445962 NULL
SQL3
![Page 72: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/72.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�78
Exemple de vue OR
n Base relationnellecreate table Pers( numss number, nom varchar2(10), prenomvarchar2(10) );create table Tel( numss number, numtel varchar2(10), numpostevarchar2(6) );
n Vue Objetcreate type tel_t as object ( numvarchar2(10), poste varchar2(6) );create type listtel_t asvarray(10) of tel_t;create typeovPers_t asobject (
numss number, nom varchar2(10), prenomvarchar2(10), listtel listtel_t);FUHDWH�YLHZ ovPers RI ovPers_t ZLWK�REMHFWRLG�QXPVV� as
select numss, nom, prenom,cast( multiset( select tel_t(numtel,numposte)
fromTel t where t.numss=p.numss) as listtel_t)fromPers p;
Oracle8+
SQL3
![Page 73: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/73.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�79
Modification au travers d ’une vue OR
n Trigger INSTEAD OF• permet les modifications sur une vue OR
n Syntaxe
• La modification (INSERT, UPDATE, DELETE)sur la YXH�est substituée par l ’ action
• les variables :old et :new sont utilisées dans l ’ actioncomme si l ’ événement avait lieu
CREATE TRIGGER nom_du_trigger,167($'�2) type_ordre
ON nom_de_la_tableFOR EACH ROW
action
Oracle8+
SQL3
![Page 74: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/74.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�80
Création de Trigger INSTEAD OF pour les modifications sur une vue OR
FUHDWH WULJJHU tg_ins_ovPers LQVWHDG RI�LQVHUW�RQ ovPersIRU�HDFK URZ�declare i: integer;begin
insert intoPers values(:new.numss, :new.nom, :new.prenom);if :new.listtel is not null and :new.listtel.count > O then
for i in :new.listtel.first … :new.listtel.last loopinsert into Tel
values (:new.numss, :new.listtel(i).tel, :new.listtel(i).poste);end loop;
end if; end;> insert into ovPers values ( 1390120989, ‘Dupont’, ‘Jean’,
listtel_t( tel_t(‘0327141234’,’8520 ’), tel_t(‘0320445962’,NULL) ) );
Oracle8+
SQL3
![Page 75: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/75.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�81
9XH�2EMHW�GH�OD�%DVH�5HODWLRQQHOOH
%DVH�5HODWLRQQHOOH
Références dans une vue OR (i)
n Motivation• Navigation entre les « objets » de la vue
n Exemple
Oracle8+
RY3HUV QXPVV QRP SUHQRP FRQMRLQW136123 Dupont Jean25688 Dupont Marie12435 Durant Georges NULL
3HUV QXPVV QRP SUHQRP136123 Dupont Jean25688 Dupont Marie12435 Durant Georges
&RXSOH VVHSRX[136123
VVHSRXVH25688
SQL3
![Page 76: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/76.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�82
Références dans une vue OR (ii)&RQVWUXFWLRQ�GH�UpIpUHQFH�j�SDUWLU�GHV�FOpV
n Déclaration de l ’OIDFUHDWH�YLHZ nomvueor RI typeor ZLWK�REMHFWRLG��clé � as ...
n Exemple create table Pers( numss number, nom varchar2(10), prenomvarchar2(10),
SULPDU\�NH\�QXPVV� );create table Couple( ssepoux number, ssepouse number
SULPDU\�NH\�VVHSRX[�VVHSRXVH��IRUHLJQ�NH\ �VVHSRX[� UHIHUHQFHV 3HUV�IRUHLJQ�NH\ �VVHSRXVH� UHIHUHQFHV 3HUV );
create view ovPers of ovPers_tZLWK�REMHFWRLG�QXPVV� as ...
Oracle8+
![Page 77: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/77.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�83
Références dans une vue OR (iii)
n MAKEREF( DWWULEXW�FOp )• Construction d ’ un OID pour les « objets » de la vue
à partir des clés primaires des tablescreate view ovPersof ovPers_tZLWK�REMHFWRLG�QXPVV� as((select p.numss, p.nom, p.prenom, 0$.(5()�c.ssepouse�
from Pers p, Couple c where p.numss=c.ssepoux)union
(select p.numss, p.nom, p.prenom, 0$.(5()�c.ssepoux�from Pers p, Couple cwhere p.numss=c.ssepouse))union
(select p.numss, p.nom, p.prenom, 18//from Pers pwhere p.numssnot in ((select ssepoux fromCouple)
union (select ssepouse fromCouple)));
Oracle8+
![Page 78: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/78.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�84
Références dans une vue OR (iii)
FUHDWH WULJJHU tg_ins_ovPers insteadof insert on ovPers for eachrowbegin
insert intoPers values(:new.numss,:new.nom,:new.prenom
);insert intoCouple values(
:new.numss,'(5()(:new.conjoint).numss
);end;
Oracle8+
![Page 79: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/79.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�85
Gestion des Types et des Tables
n CREATE• déclaration et définition de type et de table
n CREATE OR REPLACE• définition de type ou de membre de type
n ALTER• modification d ’ une table
n DROP• suppression d ’ une table ou d ’ un type• à condition qu ’ il n ’ est ai pas de dépendance
• dépendance d ’ héritage, d ’ agrégation, de référence
Oracle8+Informix9+
SQL3
![Page 80: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/80.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�86
Dictionnaires d’ORACLE
n Tables de la métabase• 7$%6 GpFULW�OHV�WDEOHV• &2/8016 GpFULW�OHV�FRORQQHV• 86(5B&21675$,176 GpFULW�OHV�FRQWUDLQWHV�SDU�WDEOH• 86(5B&216B&2/8016 GpFULW�FRQWUDLQWHV�SDU�FRORQQH• USER_OBJECT_TABLES décrit les tables objets• USER_TYPES décrit les types• USER_TYPES_ATTRS décrit les attributs des types• USER_TYPES_METHODS décrit les méthodes des types• USER_TYPES_VERSIONS décrit les versions des types• USER_DEPENDENCIES décrit les dépendances entre types• USER_COLL_TYPES décrit les collections• USER_INDEX_TYPES décrit les index sur les types
n Usage• SQL> DESC USER_TYPES• SQL> SELECT * FROM USER_TYPES
Oracle8+
![Page 81: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/81.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�87
Contrôle d ’Accès
n Les types, les tables et les vuesn ne peuvent être utiliséesn que par les utilisateurs qui en droit
• GRANT et REVOKE
Oracle8+Informix9+
SQL3
![Page 82: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/82.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�88
Les extensions de Types
n Les SGBD-ORs offrent des mécanismespour ajouter de nouveaux types atomiques• Sons, Vidéo, Image, Données Spatiales, Séries Temporelles, Séquences
d ’ ADN, Empreintes digitales, Fonds d ’ œil …
n Ces types sont dit OPAQUES• TXDQG le système n ’ a aucun connaissance de la structure interne des
valeurs de ces types
n Ces types et leurs méthodes peuvent être fournispar des sociétés tiers sous la forme de• Data Cartridges pour Oracle • Data Blades pour Informix• Extenders pour IBM/DB2 • Pluggins pour Sybase
Oracle8+Informix9+
![Page 83: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/83.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�89
Exemple d ’extension de type
�� %LHQYHQX�j�*$7$&$FUHDWH WDEOH�6863(&76�� 120 9$5&+$5 �����
*(1( 9$5*(120,&��������������FUHDWH WDEOH�,1',&(6�� 180B$))$,5( ,17(*(5�
/,(8 9$5&+$5�����(035(,17( 9$5*(120,&������������
��
6HOHFW�6�120�$6�&283$%/()URP�6863(&76�6��,1',&(6�,:KHUH ,�(035(,17(�6LPLODU 6�*(1(�
![Page 84: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/84.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�90
Les Données multimédia
n Applications• Infini !
n Type• Non temporelle
• Images
• Temporelle• Audio, Vidéo, Sous-titrage
n Opérations
n Indexation par rapport la position• Segmentation en objets (voir MPEG4 et 7)
![Page 85: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/85.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�91
Les Données Spatiales
n Applications• Systèmes d ’ Information Géographique (SIG/*,6)
• Cadastre, Environnement, Voies de Circulation, Conduites, ..
n Type• Points, Ensembles (clusters) de Points• Lignes et Multilignes• Polygones complexes incluant 0 ou plusieurs « trous »
n Opérations• $1<,17(5$&7��&217$,16��&29(5('%<��&29(56��',6-2,17��(48$/��,16,'(��
29(5/$3%'<',6-2,17��29(5/$3%'<,17(56(&7���728&+n Indexation par rapport la position
• Techniques : Quad-Tree, …
![Page 86: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/86.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�92
Les Séries Temporelles
n Définition• Suite de couple (Valeur, estampille de temps)
n Applications• Finance (stock value), Santé (épidémiologie), Capteurs
(prévision des risques, sécurité, sureté, …), …
n Type• calendar, ...
n Opérations
n Index• par rapport au temps
![Page 87: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/87.jpg)
'LGLHU�'RQVH]�������������/HV�REMHWV�GDQV�64/�94
Les Séries Tem
porelles
![Page 88: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/88.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�96
Les Types Opaques dans Oracle 8
n Data CartridgesREM une procédure de comparaison de séquence d ’ADNCreateor ReplaceLibrary libSmithAndWaterman
as 'c:\datacartridges\libraries\smithwat.dll';
Createor ReplaceProcedure libSmithAndWaterman(adnseqVARCHAR, adnstr VARCHAR, pos NUMBER
) as ExternalLibrary libSmithAndWaterman Name"dllsw" LanguageCParameters(CONTEXT, adnseqString, adnstr String, pos Long
) WithCONTEXT;
Oracle8+
![Page 89: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/89.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�97
SQL3 et JDBC2.0
n Correspondance de types
Type getXXX() setXXX() updateXXX()BLOB getBlob() setBlob() updateBlob()CLOB getClob() setClob() updateClob()ARRAY getArray() setArray() updateArray()Structured TypegetObject() setObject() updateObject()REF getRef() setRef() updateRef()
![Page 90: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/90.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�98
SQL3 et JDBC2.0
n ARRAYResultSet rs =stmt.executeQuery(
"SELECT SCORES FROM STUDENTS WHERE ID = 2238"); rs.next();Array scores =rs.getArray("SCORES");
n CLOBClobnotes = rs.getClob("NOTES");PreparedStatement pstmt = con.prepareStatement("UPDATE MARKETS SET COMMENTS = ? WHERE SALES < 1000000",
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);pstmt.setClob(1, notes);
n Structured Type// CREATE TYPE PLANE_POINT ( X FLOAT,Y FLOAT)ResultSet rs =stmt.executeQuery("SELECT POINTS FROM PRICES WHERE PRICE > 3000.00");while (rs.next()) { Struct point = (Struct)rs.getObject("POINTS");
// dosomething withpoint}
![Page 91: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/91.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�99
Bibliographie
n Objet-Relationnel• Jeffrey D. Ullman, Jennifer Widom, "A First Course in Database
Systems", 1ère édition, Ed. Prentice Hall Engineering, Science & Math, Avril 1997, ISBN 0-13-861337-0, 470 pp.
• G. Gardarin, "Bases de Données Objet et Relationnel", Ed Eyrolles, 1999, ISBN 2-212-09060-9
• Chris Date, « Introduction aux Bases de Données », 2000, 7ème édition, ISBN 2-7117-8664-1, Annexe B
n SQL3• Jim Melton, "Understanding new SQL", 1999, Ed Harcourt Pub. Ltd.• Chris Date, « Introduction aux Bases de Données », 2000, 7ème édition,
ISBN 2-7117-8664-1, Annexe B• Nelson Mattos, "An Overview of the SQL3 Standard", presentation foils,
Database Technology Institute, IBM Santa Teresa Lab., San Jose, CA, July 1996, ftp://jerry.ece.umassd.edu/isowg3/dbl/BASEdocs/descriptions/SQL3_foils.ps
![Page 92: Les Objets dans SQL3 - mfworld42.free.frmfworld42.free.fr/cnam/nfe115-informatique_decisionnelle/057... · Les Objets dans SQL3 et dans Oracle et Informix Didier DONSEZ Université](https://reader031.fdocuments.net/reader031/viewer/2022031011/5b95c92809d3f29b178cb833/html5/thumbnails/92.jpg)
'LGLHU
�'RQ
VH]��
����
�����
��/HV
�REMHW
V�GDQ
V�64/
�100
Bibliographie
n Informix 9 et +• Informix Guide to SQL: Tutorial, Version 9.1
http://www.informix.com/pub/pdf/3856.pdf
n Oracle 8 et +• Scott Urman , « Oracle8 PL/SQL Programming », ed Osborne-McGraw-
Hill, Oracle Press Series, ISBN 0-07-882305-6.• PL/SQL au complet
• Christian Soutou, "Objet-Relationnel sous Oracle8, Modélisation avec UML", Ed Eyrolles, 1999, ISBN 2-212-09063-3
• décrit bien les alternatives de conception des associations avec l ’ objet-relationnel et avec le relationnel
• http://www.oracle.com/st