Vous êtes sur la page 1sur 94

Base de donnes avance Master 2 INFORMATIQUE ACADEMIQUE

Enseignante: AICHA AGGOUNE aggoune_ai@yahoo.fr Dpartement dinformatique Facult de mathmatique et dinformatique et sciences de la nature Universit 8 mai 45 de GUELMA

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Chapitre 01: Le relationnel tendu

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Plan du cours
1. Base de donnes: Rappels & Bilan
2. Motivations

3. Limites du modle relationnel


4. Le relationnel tendu 5. SQL3 et SGBD Objet-Relationnel

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Quest ce quune base de donnes?

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Bases de Donnes

Un ensemble de donnes modlisant les objets dune partie du monde rel et servant de support une application informatique. Accessible par un LMD Stockage et mise jour de donnes Recherche de donnes multi-critres

Partages par de multiples utilisateurs

Assurant la fiabilit et scurit des donnes


Gre par un SGBD (DBMS)
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Modles de bases de Donnes


Modle Relationnel (Codd 70) Modles relationnels imbriqus (80) Modle valeurs complexes (84) Modles avec identit dobjet(86) Modle Entit/Association (Chen 76) Modles smantiques(80)

Modle logique (85)

Modle objet (85)

Modle relationnels tendu(99)

Programmation logique

Programmation par objets

Programmation par Types Abstraits

Programmation par Rgles

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

SGBD (DBMS)
Ensemble de logiciels systmes permettant :
La description des donnes et des relations (LDD) Linterrogation et la mise jour de la base (LMD) La gestion des transactions.

Principales fonctionnalits :
Contrle de la redondance dinformation Partage des donnes et confidentialit Gestion des accs concurrents Vrifications des contraintes dintgrit Scurit et reprise sur panne Indpendance des donnes: Niveau physique, logique et externe (vue)
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Evolution des SGBD


1955-1960: SGF 1960-1980: SGBD hirarchiques SGBD rseaux 1970-1990: SGBD relationnel Langage SQL 1985-1990: SGBD objet

Module: Base de Donnes Avance Module: Base de Donnes Avance

A.AGGOUNE A.AGGOUNE

Niveau: Master2AC Niveau: Master2AC

Universit de Guelma Universit de Guelma

Depuis 1995
Bases de donnes et internet Accs distant au contenu des BD Fdration et inter-opration des BD Transformations des donnes et des requtes Bases de donnes et dcisionnel Entreposage de donnes Analyse de donnes Qualit des donnes Bases de donnes rparties : Permettre dintgrer, dinterroger et de mettre jour des donnes provenant de sites rpartis gographiquement
Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

Depuis 1995
Bases de donnes et web: Etendre les possibilits des SGBD pour rpondre aux applications fonctionnant dans lenvironnement web Bases de donnes objet : Intgrer les concepts objets dans les SGBD (classe, objet) Bases de donnes dductives : Enrichir les SGBD de possibilits de dduction

Bases de donnes multimdia : Intgrer dans un SGBD la gestion de donnes textuelles, graphiques, images, sons etc..
Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

2. Motivations
Le modle relationnel connat un trs grand succs et s'avre trs adquat pour les applications traditionnelles des bases de donnes (gestion de stock, gestion des commandes, systmes de
rservation)

Nanmoins, ce modle est moins adapt aux nouvelles applications plus complexes telles que : CAD/CAM (Computer-Aided Design/Computer-Aided Manufacturing).
BD d'images et de graphiques.

BD gographiques (GIS : Geographic Information Systems). BD multimdia (son, image, texte, etc. combines).

Systmes de gestion de rseaux,etc.


Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

2. Motivations
Ces nouvelles applications ont des caractristiques diffrentes, notamment : Structures d'objets plus complexes, des transactions de dure plus longue, nouveaux types de donnes pour le stockage d'images ou de gros documents de texte, la possibilit de dfinir des oprations non standards qui sont spcifiques aux applications.

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

3. Limites du modle relationnel


Structure de donnes trop simple :
table ensemble de n-uplets de valeurs atomiques (nombres, chanes de caractres) structure plate rgulire

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

3. Limites du modle relationnel


Mauvais support des applications non standards. Oprations sur les donnes exclues du modle (mthodes
et procdures) Pas de possibilit de rfrencer directement un objet composant (pointeurs) : La seule solution dans une BD classique est deffectuer des jointures. Pas de gestion des fonctions spcifiques certaines donnes (le texte, limage, la vido,etc). Pauvret du systme de typage Types prdfinis (entier, rel, chane, ) : pas de possibilit dextension Smantique insuffisante : La seule solution est dutiliser des contraintes d'intgrit
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

3. Limites du modle relationnel


Faible puissance dexpression des langages de BD: Pas de rcursion Pas de structures de contrle : conditionnelles, boucles Lutilisation de deux langages (SQL + un langage de programmation) Difficult de raliser des traitement des transactions de longue dure.

Deux types d'alternatives sont proposs et qui sont inspirs de lapproche Objet
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Deux approches en BD
Le modle Orient Objet (OO) Le modle Objet Relationnel (OR)

Smalltalk, C++, ...


OODBMS ODMG 93 ODMG II ODMG (97)
CA-Jasmine, ObjectStore, O2 Versant, POET, ... Convergence ?

Codd (70)
SQL SQL2 SQL3 SQL4
Oracle, Informix, Sybase, IBM, DB2, CA-OpenIngres
ANSI X3H2 ISO/IEC JTC1/ SC21/WG3

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Apports du modle relationnel


Simplicit des concepts et du schma Bon support thorique Langage dinterrogation dclaratif Haut degr dindpendance des donnes Optimisation des accs la BD
bonnes performances

Gestion de contraintes dintgrit

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

4. Le Relationnel Etendu
Le relationnel tendu (Objet-Relationnel) : Extension du modle relationnel, ajoute: Attributs multivalus : sacs, liste, tableau, ensemble, ... OBJET Hritage sur relations et types Dfinition dun type abstrait de donnes propre un utilisateur (structure cache + mthodes) Identit d'objets et utilisation deTypes rfrence (OID) Domaine
utilisateurs ADT et encapsulation Table Collections Attribut Cl Rfrence Hritage et relationnel Opration rutilisation Identifiant Hritage
Niveau: Master2AC Universit de Guelma

Rfrence et identit

Le

Collection, objets Polymorphisme

Module: Base de Donnes Avance

A.AGGOUNE

4. Le Relationnel Etendu
La compatibilit est ascendante : les anciennes applications relationnelles fonctionnent dans le monde OR La norme SQL99 (SQL3) reprend beaucoup dides du modle OR. Objet Personne

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

4. Le Relationnel Etendu
4.1. Les ADT: diffrentes catgories de Types 4.2. Cration de tables partir des types 4.3. Dfinition dattributs rfrence 4.4. Manipulation avance de BD 4.5. Langage SQL3 et SGBD Relationnel-objet

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Les ADT: Abstract Data Type


En relationnel: types prdfinis
CHAR, VARCHAR, NUMBER, DATE,

En relationnel tendu: nouveaux types dfinis pas


utilisateurs constructeur CREATE TYPE

Plusieurs catgories de TYPES:


De type OBJET De type COLLECTION VARRAY Nested Table

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Les ADT: syntaxe


CREATE TYPE <nom ADT> AS <corps de lADT> <corps de lADT> <OID option> ::= WITH OID [NOT] VISIBLE Objets sans OID par dfaut <subtype clause> ::= UNDER <supertype clause> Possibilit dhritage avec rsolution de conflits explicite <member list> <attribute definition> : attributs publics ou privs <function declaration> : oprations publiques <operator name list> : oprateurs surchargs <ordering definition> : ordre (Equals, less, than, relative, hash) <cast clause> : fonction de conversion de types <procedure clause> : procdure avec corps dfini dans SQL3 ou externe

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Les ADT: Exemple


<attribute definition> permet de dfinir les droits daccs aux
lments dun objet.

Elle joue le rle dun modificateur dans la dfinition des classes


JAVA. PUBLIC un objet est accessible partout. PRIVATE Un objet n'est accessible qu l'intrieur de la classe qui le contient. Exemple: CREATE TYPE Person (PUBLIC name CHAR(50), address Address, Nationality VARCHAR, PRIVATE birth-date DATE, PUBLIC FUNCTION age RETURNS NUMBER);
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Catgories dADT: type OBJET


Objet complexes Informations incluses dans un type:
Nom: identification de lobjet (unique dans le schma): OID (Object IDentifier)

Attributs
Mthodes: fonctions ou procdures crites en PL/SQL ou JAVA et stockes dans la BD ou en C et stockes lextrieur de la BD

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

ADT de type OBJET: syntaxe


CREATE TYPE <nom type> AS OBJECT
(<nom-attribut1> [ref] <type>, (<nom-attribut2> [ref] <type>,

(<nom-attributn> [ref] <type>,


[dfinition mthodes] ) / Remarque : aprs la cration dun ADT et uniquement dans ce cas / remplace le ; pour terminer un ordre SQL
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

ADT de type OBJET: Exemple


CREATE TYPE Address AS OBJECT ( Num INTEGER, Street VARCHAR(20),

City CHAR(15),
Country CHAR(10)); Address Num Street City Country

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

ADT de type OBJET: Utilisation


Les types objet peuvent tre utiliss comme:
Domaine de valeur dune colonne dune table
Ex: CREATE TABLE Contacts (contact Person, date DATE)

Domaine de valeur dun attribut dun autre type dfini par


lutilisateur
Ex: CREATE TYPE contacts (contact Person, date DATE)

Domaine de relation
Ex: CREATE TABLE LesPersonnes OF Person Chaque ligne de la table LesPersonnes: type Person

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Catgories dADT: Hritage type


La possibilit de dfinir un sous-type d'un seul super type
existant.

Un type hrite des mthodes et de la structure de donnes


de son super type.

La possibilit de redfinir des mthodes existantes, en


dfinir de nouvelles et spcialiser la structure de donnes.

Le mot cl UNDER dsigne un type qui hrite dun autre


type.

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

ADT : Hritage type


Exemple: CREATE TYPE personne ( Super Type

nom VARCHAR(10),
adresse VARCHAR(30), Date naissance DATE)

/
CREATE TYPE etudiant UNDER personne ( universite VARCHAR(20), no-etudiant INTEGER);
Module: Base de Donnes Avance A.AGGOUNE

Sous Type
Niveau: Master2AC Universit de Guelma

Catgories dADT: type Collection


Permet de crer des attributs multi-valus Plusieurs catgories de type collection
SET LIST ARRAY ....

Ces collection permettent de reprsenter les associations 1:N


et N:M

Ils ont des constructeurs de mme nom que le nom du type:


CREATE TYPE <nom-type> AS (Table | Varray|..(<longueur>))
OF <type>;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Type Collection: SET, MULTILIST,LIST


Ensembles (sans doublons) reprsents par SET(T)
avec T dsigne un type de donnes quelconque.

Sacs (avec des doublons) sont des ensembles avec


des lments en double,reprsents par MULTISET(T)

Listes (ordonnes et indexs) reprsentes par LIST(T)


Ex: CREATE TYPE personne (age INTEGER, nom VARCHAR, liste_prenoms LIST (varchar), Tel SET (phone)) ; Personne {prenom} Liste_prenoms
A.AGGOUNE

age

nom

phone Tel
Universit de Guelma

Module: Base de Donnes Avance

Niveau: Master2AC

Type Collection: ARRAY, VARRAY


ARRAY: Tableau une dimension (ensemble ordonn
dlments de mme type).

VARRAY: Tableau de taille variable (variable- array) Syntaxe:


CREATE TYPE <nom-type1> AS VARRAY (nb-max) OF <nom-type2>

Dfinit un type tableau nomm nom-type1 de maximum


lments nb-max de type nom-type2.

nom-type2 peut tre nimporte quel type


Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Type Collection: VARRAY


EXEMPLE: CREATE TYPE Prnoms AS VARRAY (3) OF VARCHAR (20) ; Le type VARRAY nomm Prnoms ne peut pas possder plus de 3 lments Chaque lment est de type VARCHAR (20)

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Type Collection: VARRAY (Utilisation)


Le type VARRAY peut tre utilis comme:
Domaine de valeur dune colonne dune table Ex: CREATE TABLE Personne (nom VARCHAR (20)
telephone TELEPHONES)

Domaine de valeur dun attribut dun autre type dfini par lutilisateur

Ex: CREATE TYPE Personne (nom VARCHAR (20) telephone


TELEPHONES)

Dans une autre collection (collection de collection)


Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Type Collection: NESTED TABLE


Nested table est une table l'intrieur d'une autre table. Utiliser particulirement dans la modlisation des relations 1-N Ensemble non ordonn dlments de mme type. Valeur multivalue de type table: Pas de nombre maximum de
valeurs (non fini), Pas d'ordre et Indexable.

Syntaxe : CREATE TYPE nom_type1 AS TABLE OF nom_type2 ORCALE cre physiquement une table annexe dans laquelle il
stockera les tuples de l'attribut de type Nested table : NESTED TABLE nom-attribut-de-type-table-imbrique STORE AS nom-table-annexe ;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Type Collection: NESTED TABLE (Utilisation)


Attention : Une Nested Table nest pas une table objet ; il nassoci pas une rfrence OID un lment de collection.

Les types NESTED TABLES peuvent tre utiliss comme:


Domaine de valeur dune colonne dune table EX: CREATE TABLE Personnes (nom VARCHAR (15), prenom
liste_prenom, age INTEGER, voitures ens_voiture) % collection NESTED TABLE voitures STORE AS Toutes_voitures;

Domaine de valeur dun attribut dun autre type dfini par lutilisateur Ex: CREATE TYPE ens_voiture AS TABLE OF Tvoiture;

Aussi dans une autre collection


Module: Base de Donnes Avance A.AGGOUNE

(collection de collection)
Universit de Guelma

Niveau: Master2AC

Type Collection: NESTED TABLE (Exemple)


Cration du type stockant chaque ligne de voiture CREATE TYPE Tvoiture AS OBJECT (modele VARCHAR (15), annee, DATE, no INTEGER) /

Cration d'une table contenant les voitures: CREATE TYPE ens_voiture AS TABLE OF Tvoiture /
Cration de la table personne qui contient une colonne de type NESTED TABLE: CREATE TABLE Personne (nom VARCHAR (15), prenom liste_prenom, age INTEGER, voitures ens_voiture) % collection NESTED TABLE voitures STORE AS Toutes_voitures;
nom prenom age 35 40 voitures Id1 Id2 Nested_table_Id Id1 Id1 Id2 Id1
Niveau: Master2AC

Liera (Pierre,Paul) Dupond (Zo,Marie)

Tvoiture 207 407 308 206 2010 2003 2011 2005 12 3 12 1

Index
Module: Base de Donnes Avance A.AGGOUNE

Universit de Guelma

Manipulation de type NESTED TABLE


Une collection dans une Nested Table peut tre
Insre Supprime Mise jour Exemple: INSERT INTO Personnes VALUES (Durant, liste_prenom(Karim, Amin), 35, ens_voiture (Tvoiture(2ch, 1975, 128), Tvoiture(Mgane, 1998, 179)));

Parcourir dans une Nested Table


Exemple: Numro des voitures des personnes : SELECT v.No FROM personnes p, TABLE (p.voitures) v;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Passage de modle R vers modle OR


Lassociation 1:N
(table ou varray) Le type de lattribut doit tre une collection

Exemple: personne (Num, nom, prnom , Date_naissance) Enfants (nom, prnom , Date_naissance, Num_p )
CREATE TYPE personne;

CREATE TYPE ens-enfant AS table OF REF personne;


CREATE TYPE personne AS OBJECT (Num INTEGER, nom varchar(10), prnom varchar(20),

Date_naissance DATE, enfants ens-enfant, Num_p INTEGER);


Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Passage de modle R vers modle OR


Lassociation N:M
Exemple: personne (Num, nom, prnom , Date_naissance); Voiture (Matricule, modle , type); Conduire (Num, Matricule); Create type Voiture; Create type ens-voitures as table of ref Voiture; Create type Personne as object (conduit ens-voitures ); Create type ens-pers as table of ref personne;

Le type des attributs doit tre une collection

Create type Voiture as object (conduite-par ens-pers, );


Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

4.2. Cration des tables partir des types


Les donnes dun type ne sont persistantes que si elles sont
ranges dans une table.

On peut crer des tables partir dun type de donnes, dans


ce cas ces tables sont dites tables objet-relationnelle

Ses lignes sont considres comme objets , avec la porte


globale dOID pour les dsigner.

La syntaxe suivante permet de crer une table objet :


CREATE TABLE nom_table OF nom_type [ ( spcification_contrainte 1 [, , spcification_contrainte n ] ) ]
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Cration des tables partir des types


Associer aux tables les contraintes usuelles de SQL : PRIMARY KEY (nom-col*) UNIQUE (nom-col*) FOREIGN KEY (nom-col*) REFERENCES nom-table

[(nom-col*)] [action]
CHECK (condition particulire sur les valeurs) Exemple: CREATE TABLE Person_table OF Person ( PRIMARY KEY (NumAssu));
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Cration des tables partir des types


Possibilit de crer la fois une table avec un nouveau type ADT grce la syntaxe suivante : CREATE TABLE <nom de table> OF NEW TYPE <nom de type> <corps de lADT> ;

La manipulation des tables objet-relationnelles: -Insertion, - Suppression, -Mise jour, ..

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Manipulation des tables partir des types


1. Suppression dune table Objet-relationnelle DROP TABLE <nom_table>. Ex : DROP employ ;
2. Modification de la dfinition dune table Objet-relationnelle ALTER TABLE ne peut sappliquer qu une table relationnelle. Modifier la dfinition dune table objet-relationnelle revient modifier le type dobjets sur lequel elle est dfinie (CREATE OR REPLACE TYPE). 3. Insertion dune instance objet : INSERT INTO nom_table_objet_relationnelle VALUES( nom_type_objet(val 1 , , val k ) ) Avec: vali= valeur atomique/nouvelle instance de type dobjets
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Manipulation des tables partir des types


Ou bien la totalit des valeurs figurent dans la base de donnes, et dans ce cas on remplace VALUES par la sous-requte charge de ramener toutes les valeurs. val i = (select donne from table ) * INSERT INTO nom_table ( SELECT donnes FROM table(s) WHERE condition(s))

Dans le cas o le type est un type utilis par un autre type,


lutilisation du constructeur du type est obligatoire : Ex : INSERT INTO employ VALUES (1, 'Toto', 12000, adresse_type (12, 'Victor Hugo', 'Nice')); 4. Mise jour dune table Objet-relationnelle -UDPADTE -DELETE
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Manipulation des tables partir des types


UPDATE:
UPDATE nom_table SET nom_att = nouvelle_valeur [ WHERE condition(s)] Exemple : UPDATE employ e SET salaire = 72000, e.adresse.numero = 24 WHERE nom = 'Dupond';

Remarque: SQL3 fournit aussi la notation .. pour dsigner un attribut dune colonne de type ADT. EX: e.adresse..numero = 24
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Manipulation des tables partir des types


DELETE: supprimer des lments selon certaines conditions.
DELETE FROM nom_table [WHERE condition(s)]

5. Consultation dune table Objet-relationnelle (SELECT) Exprimer le chemin qui permet de naviguer travers les objets.
SELECT <nom de table>.<nom type ADT>.<nom type> FROM <nom de table> Exemple : Dans la table employ, laffichage du nom et la rue dun employ est : SELECT nom, e. adresse_type.rue FROM employ e
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Manipulation des tables partir des types


6. Hritage dune table Objet-relationnelle (INHERITS)

CREATE TABLE document ( Titre VARCHAR (30), Auteur VARCHAR (30), Anne INTEGER);
Nous voulons crer la table livre comme une sous table de la table document :

CREATE TABLE livre ( nb_pages INTEGER) INHERITS (document);

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Comparaison avec le relationnel


Accs en relationnel
SELECT date, name, vehicleyr FROM policy, customers, vehicles WHERE policy.custno = customers.custno AND policy.vehicleno = vehicles.vehicleno and model = ferrari

Accs en objet-relationnel
select p.effdate, p.name, p.vehicleyr from policy p where p.carmodel.model = ferrari

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

4.3. Dfinition dattributs rfrence


SGBD relationnel:
cl = un ensemble minimum dattributs Danger lors des : - mises jour de la cl - changements d'attribut cl Identit dpendante de la valeur

En SGBD Objet-relationnel:
OID= identificateur dobjet (Object IDentifier ) Indpendant de la valeur Unique Permanant Immuable
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

4.3. Dfinition dattributs rfrence


Chaque instance dune table dobjets possde un identificateur
dobjet qui :
Identifie lobjet stock dans ce n-uplet de faon unique, C'est une colonne cache, gnre par le systme, Sert rfrencer lobjet, Oracle lui associe un index.

Rfrence: Pointeur vers une instance d'une table objet Conserver dans les tables une rfrence une valeur, plutt
quune cl trangre.

Permet de rduire les jointures.


Attention: impossible de rfrencer une collection !
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Dfinition dattributs rfrence


Cration d'une rfrence par REF
REF <nom du type> Exemple: CREATE TYPE Tlogement AS OBJECT (Type VARCHAR(15), surface NUMBER(4), nbchambre INTEGER)/

Cas1: valeur structure (des objets) CREATE TABLE Habitant1 (Num INTEGER, Nom VARCHAR(20), Prnoms prnoms_type, Habite Tlogement)/ Cas 2: OID de lattribut Habite CREATE TABLE Habitant2 (Num INTEGER, Nom VARCHAR(20), Prnoms Tprnoms, Habite REF Tlogement);
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Dfinition dattributs rfrence


La manipulation des attributs rfrence objet:
REF (objet)=>l'OID de l'objet DEREF (oid)=>valeur structure: opration inverse de REF VALUE (objet)=>valeur structure.

La manipulation de loprateur REF:


Insertion avec rfrence. Modification avec rfrence. SCOPE. REFERENCES.
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Oprateur REF
Utilisation de loprateur REF qui renvoie ladresse
n-uplet dans une table. 1. Insertion avec rfrence : dun

Exemple: Insrer dans TPersonnes une nouvelle personne: Duran ne le 16/02/1960 dont la liste des prnoms {Pierre, Paul, Jacques}, de voiture modle i30. INSERT INTO TPersonnes VALUES (Duran, liste_prnom(Pierre, Paul, Jacques), 16-05-1963, (SELECT REF(v) FROM TVoitures v WHERE v. modle = i30));
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Oprateur REF
2. Modification avec rfrence : UPDATE
Exemple: Changer le modle de voiture de lanne 2010 par I30. UPDATE Personnes p SET p.voiture = (SELECT REF(v) FROM TVoitures v WHERE v. modle = I30) WHERE p.voiture.annee =2010;

Attention: modifier une voiture travers une personne est impossible !


Remarque : cette instruction peut trs bien la valeur NULL dans la colonne voiture car le select renvoie NULL si la voiture de modle I30 nexiste pas !
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Rfrencer du vide
Rfrences qui n'existent plus. Pour tester lexistence dune instance rfrence :
Utilisation du prdicat IS DANGLING.

Exemple :
UPDATE Personnes SET voiture = NULL WHERE voiture IS DANGLING Ajouter la contrainte NOT NULL sur la colonne voiture: voiture REF voiture NOT NULL. Le type REF Tvoiture restreint le type rfrenc mais pas la table rfrence.

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Rfrencer du vide
La clause SCOPE restreint la colonne rfrence ; elle peut
tre ajoute lors de la dfinition dune table.
voiture REF voiture_type SCOPE IS TVoiture.

Cette expression indique que voiture rfrencera une ligne de


la table TVoiture et pas une ligne dune autre table cre partir du type voiture_type. Une contrainte REFERENCES permet dviter les rfrences perdues (comme avec les tables relationnelles) : voiture REF voiture_type REFERENCES TVoiture.

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Rfrences croises
Les rfrences croises consistent crer un type vide
pour tre rfrenc dans un second type et on modifie le premier type ensuite. On cre les tables en dernier. Exemple :
CREATE TYPE Tvoiture / CREATE TYPE Tpersonne AS OBJECT (nom VARCHAR2(15), prenoms liste_prenom, date_naissance DATE, voiture REF Tvoiture) / CREATE TYPE Tvoiture AS OBJECT (modele VARCHAR2(15), annee DATE, No INTEGER, personne REF Tpersonne) /
CREATE TABLE voitures OF Tvoiture; CREATE TABLE personnes OF Tpersonne;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Oprateur DEREF
Loprateur DEREF permet de drfrencer une rfrence
pour obtenir lobjet rfrenc. Exemple: SELECT p.Nom, p.prnoms, DEREF(p.voiture) FROM TPersonne p WHERE p.voiture.anne > 2010;
Nom Dupond {Prnoms} prnoms_type Martine Robert Smith date_naissance 16-05-1963 @ voiture voiture_type (12584, Range Rover , 2012)

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Oprateur VALUE
Pour obtenir la valeur dun objet, on utilise la fonction VALUE,
qui prend la rfrence dun objet et renvoie sa valeur.

Exemple 1: type rfrenc (voiture)


SELECT p.nom, p.voiture FROM Personnes p - renvoie le nom et loid de voiture SELECT p.nom, VALUE(p.voiture) FROM Personnes p - renvoie pour chaque personne p le nom et la valeur de sa voiture

Avec select : rcupration de lensemble de valeurs des


attributs dune table.
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Oprateur VALUE
Exemple 2: (type non rfrenc) CREATE TYPE Tprojet AS OBJECT ( Pno NUMBER, pnom VARCHAR2(20)) / CREATE TABLE Projets OF Tprojet; Select * from Projets; 1 Amber 2 Murmur' Select value(p) from Projets p; Tprojet(1, Amber) Tprojet(2, Murmur')
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

4.4. Manipulation avance de BD


Le langage SQL a t tendu pour permettre la dfinition et
linterrogation des BD objet-relationnelles.

Une manipulation avance ncessite lutilisation des:


Mthodes (fonctions et procdures), Triggers, Requtes rcursives, Requtes prfrences

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Mthode: dfinition & activation


Une mthode est un sous-programme dclar dans la
spcification d'un type objet par le mot-cl MEMBER.

La mthode ne peut pas avoir le mme nom que le type


objet ni qu'aucun des attributs.

Il existe deux types de mthode: les Procdures et les


Fonctions.

CREATE TYPE nom-type AS OBJECT ( dclaration des attributs, dclaration des signatures des mthodes )

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Mthode: dfinition & activation


Signature d'une mthode
MEMBER FUNCTION nom-mthode (nom-paramtre 1 [ IN / OUT ] type 1 , .) RETURN type n MEMBER PROCEDURE nom-mthode (nom-paramtre 1 [ IN / OUT ] type 1 , .)

Le code peut contenir des :


instructions PL/SQL (ou JAVA) instructions SQL appels de mthodes
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Corps des mthodes


CREATE [OR REPLACE ] TYPE BODY nom_type IS spcification_mthode 1 IS [Declarations_variables_curseurs_et_exceptions ] BEGIN Instructions_PL/SQL_ou_requtes_SQL [ EXCEPTION Traitement_des_erreurs ] END nom_mthode 1 ; [spcification_mthode 2 IS END nom_mthode 2 ; ] END ;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Le paramtre SELF
Toute mthode d'un type objet accepte une instance de
ce type comme premier paramtre (SELF).

Ce paramtre peut tre implicitement ou explicitement


dclar. Il est proche de paramtre THIS du JAVA.

Par dfaut, le mode de dclaration est implicite :


IN pour les fonctions, IN OUT pour les procdures.

SELF.nom_attribut

Cette

expression peut aussi bien apparatre dans une instruction (affectation, appel de fonction ou de procdure, ) que dans une requte SQL.

La mthode CONSTRUCTOR
Chaque objet est pourvu d'une mthode de construction
appele CONSTRUCTOR, dfinie par le systme avec le mme nom que le type objet.

Une mthode de construction est une fonction utilise pour


initialiser et retourner une instance de ce type objet.

Le type des paramtres ainsi que leur ordre sont identiques


ceux des attributs du type objet.

La suppression du corps dun type dobjets:


DROP TYPE BODY nom_type

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Exemple : dfinition, appel


CREATE TYPE Vehicule_type AS OBJECT ( numero INTEGER, modele VARCHAR (20), quantit_essence INTEGER, MEMBER PROCEDURE ajouter_essence (quantite IN INTEGER));

CREATE TYPE BODY Vehicule_type IS


BEGIN CONSTRUCTOR FUNCTION Vehicule_type (numero IN INTEGER) RETURN SELF AS resultat IS

BEGIN
SELF.numero := numero; END; MUMBER PROCEDURE ajouter_essence (quantite IN INTEGER)

BEGIN
SELF. quantit_essence := quantite; END; END;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Les TRIGGERS
Un triggers
(ou dclencheur) est une rgle, dite active, de la forme : vnement-condition-action.

Procdure stocke dans la base qui est dclenche


automatiquement par des vnements spcifis par le programmeur et ne sexcutant que lorsquune condition est satisfaite.

Les triggers permettent :


1. La possibilit dviter les risques dincohrence dus la prsence de redondance.
2. Lenregistrement automatique de certains vnements.
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Les TRIGGERS
3. La spcification de contraintes lies lvolution de donnes. Exemple : un salaire ne peut quaugmenter. 4. De dfinir toutes rgles complexes lies lenvironnement dexcution (restrictions sur des horaires, des clients, . . .).

La squence Evnement-Condition-Action est excute selon


les trois tapes suivantes : 1. Trigger dclench par un vnement spcifi par le programmeur. Ex : Insertion, destruction, modification sur une table.

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Les TRIGGERS
2. Test de la condition : si cette dernire nest pas vrifie, alors lexcution sarrte. 3. Si vrifie, laction est ralise avant ou aprs un vnement.

Un seul trigger utilis par vnement sur une table. La syntaxe suivante permet de crer un trigger :
CREATE TRIGGER <nom-trigger> BEFORE/AFTER <vnement> OF <Attribut> ON <Table> REFERENCING OLD/NEW AS <action> Pour supprimer un Trigger : DROP TRIGGER <nom de trigger>
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Les TRIGGERS
BEFORE/AFTER: la possibilit de dclencher avant ou aprs
l'vnement.

<vnement>

= INSERT, UPDATE, DELETE. Prcise le ou les vnements concerns par le dclenchement. Sil y a plusieurs vnements, on les spare avec OR.

REFERENCING OLD/NEW AS : la possibilit de rfrencer


les valeurs avant ou aprs mise jour.

<action> = opration sur table (INSERT..) avec condition


possible (WHEN WHERE)
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Les TRIGGERS: Exemples


Exemple 1: Dfinition dun dclencheur aprs toute mise jour du champ salaire de la table Pilote qui met jour lattribut augmentation de la table CUMUL.

CREATE TRIGGER augmenter-trigger AFTER UPDATE OF salaire ON Pilote REFERENCING OLD AS ancien_salaire, NEW AS nouveau_salaire UPDATE CUMUL SET Augmentation = Augmentation + nouveau_salaire - ancien_salaire Exemple 2: Vrification quun prix ne peut pas baisser. CREATE TRIGGER pas_baisse_prix BEFORE UPDATE OF prixUnitaire ON Article FOR EACH ROW WHEN (OLD.prixUnitaire > NEW.prixUnitaire) BEGIN
raise_application_error(-20100, le prix dun article ne peut pas diminuer) ;

END ;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Vues Objet-Relationnelles
Une
vue objet-relationnelle permet de visualiser les donnes diffremment de la faon dont elles sont organises.

Une vue classique peut

tre construite sur une seule table ou rsulter de la jointure de plusieurs tables:
CREATE VIEW nom_vue AS [(att1_vue, att2_vue, )] AS SELECT att1, att2, Requte SQL FROM nom_table [, autre_table] [ WHERE condition selection et/ou jointure ]
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Vues Objet-Relationnelles

La cration dune vue objet-relationnelle se fait partir dune requte SELECT permettant dextraire les donnes de la table, ou des tables. CREATE VIEW nom_vue_or OF type_objet WITH OBJECT IDENTIFIER ( att_oid ) [UNDER nom_vue_mre ] AS SELECT att1, att2 [,CAST(MULTISET()] [, type_nuplet (att_np1, att_np2, )] [ REF(alias)] [ MAKE_REF(nom_autre_vue, att_oid)] FROM nom_table alias [, nom_table2 alias2]* WHERE condition(s)
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Vues Objet-Relationnelles: Exemples


CAST et MULTISET sont utiliss pour grer
les lments qui ne respectent pas la seconde forme normale dans le type : CAST s'occupera de forcer l'lment retourn dans un type dclar. MULTISET prend en charge la cration d'une collection (VARRAY ou Nested Table). Exemple 1: CREATE VIEW vo_eleve OF ty_eleve WITH OBJECT IDENTIFIER (att_matricule) AS SELECT matricule , nom , prenom , d_naiss , ty_adresse ( rue_num , code_post , ville) AS adresse FROM t_eleve t_e ;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Vues Objet-Relationnelles: Exemples


Exemple 2: CREATE VIEW vo_classe OF ty_classe WITH OBJECT IDENTIFIER (att_code) AS SELECT code, niveau, obligation, CAST(MULTISET( SELECT Ref(vo_e) FROM vo_eleve vo_e, t_eleve t_e

WHERE vo_e.att_matricule = t_e.matricule

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

Requtes rcursives
Une requte rcursive est une requte dans laquelle une
requte initiale est excute de faon rpte pour retourner des sous-ensembles de donnes jusqu' l'obtention de l'ensemble de rsultats complet.

Elle permet de simplifier le code SQL3 : clause WITH RECURSIVE AS La rcursivit est utilise dans les applications:
Utilisant des graphes (Ex: Logistique, Rseau de transport, de tlcom,) Utilisant des donnes semi-structures (documents XML,..) Bases sur la dduction logique (systme expert,)
Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

Requtes rcursives: Arbres


La rcursivit en SQL est ralise par plusieurs structures de
table: Arbre (TREE) Graphe . Une des mthodes pour parcourir larbre dune requte rcursive est la dfinition dun point de dpart au processus de rcursion qui se fait avec 2 requtes lies. La premire requte indique o lon doit commencer La seconde o lon doit se rendre ensuite. Ces 2 requtes doivent tre jointes par loprateur UNION ALL. La hirarchie est reprsente grce une auto-rfrence
Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

Requtes rcursives: Arbres


Pour obtenir la hirarchie dune requte rcursive, il faut
commencer par dterminer le point de dpart qui joue le rle dune cl trangre.
Exemple: Nous dsirons obtenir la hirarchie du Poste X de la table Travail:
NiveauId INTEGER PRIMARY KEY, Desc VARCHAR(50), fkNiveauParent INTEGER FOREIGN KEY

Compagnie XYZ | -- Division XYZ | |-- Dpartement 1 | |-- Dpartement 2 | | |-- Poste X |-- Division XYW | |-- Dpartement 6 | | |-- Poste U | | |-- Poste W
Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

Requtes rcursives: Arbres


SELECT Desc, fkNiveauParent FROM Travail WHERE Desc = "Poste X" UNION ALL SELECT Desc, fkNiveauParent FROM Travail

Le cycle de rcursion est fait par la jointure entre la table OR et la table tree. WITH tree (src, dest) AS (requetes) SELECT * FROM tree Dans lexemple prcdent:
WITH tree (desc, id) AS( SELECT Desc, fkNiveauParent FROM Travail WHERE Desc = "Poste X" UNION ALL SELECT Desc, fkNiveauParent FROM Travail w INNER JOIN tree ON tree.id = w.NiveauId ) SELECT * FROM tree
Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

Requtes rcursives
Rsultat Donne id --------------- ------ --Poste X 8 Dpart 2 6 Division XYZ 3 Compagnie XYZ NULL

Limite de rcursivit en SQL3


Apparat qu'une seule fois dans la clause FROM
Pas de ngation dans la rcursivit
Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

Requtes prfrences
Requtes prfrences : requtes qui expriment des
proprits dsires sur les rsultats issus dun processus de recherche.

Prfrence est une relation binaire entre les tuples prsents


dans la rponse une requte. Soit une relation r de schma R(A 1 , .., A k) tel que U i , 1ik, est le domaine de l'attribut A i , une relation est une relation de prfrence sur r si elle constitue un sous-ensemble de
(U1 xxU k )x(U 1 xxU k )

Intuitivement, est une relation binaire entre les tuples de la mme relation d'une BD.
Module: Base de Donnes Avance Module: Base de Donnes Avance A.AGGOUNE A.AGGOUNE Niveau: Master2AC Niveau: Master2AC Universit de Guelma Universit de Guelma

Requtes prfrences
On dit que le n-uplet t 1 domine (ou est prfrable ) le n-uplet
t 2 dans le contexte de la relation si t 1 t2

Si ni t1

t2 et ni t2 t1 ne sont vrifies, on dit que t1 et t2 sont incomparables : t1 ~ t2

Une requte prfrence RP permet de:


Capturer les profils utilisateurs (personnaliser). Formuler des politiques afin d'amliorer et automatiser la prise de dcision. Requte flexible est une RP modlise par la logique floue
Exemple: SELECT * FROM Hotels WHERE city = 'Nassau SKYLINE OF price MIN, distance MIN;
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

Langage SQL3 et SGBD Relationnel-objet


Extensions RICE du modle relationnel :
Rutilisation (Hritage, polymorphisme) IDENTITE et rfrences Objets Complexes (Collections et produit) Encapsulation (types et fonctions utilisateur)

Extensions du langage SQL (SQL3) pour la recherche et la


modification des donnes. Il est dfini par ISO.

SGBD relationnels tendus utilisent le langage SQL tendu

LOR supporte lhritage de type pour profiter du polymorphisme


et faciliter la rutilisation
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

SQL: quelques dates.


1970: invention du modle relationnel (CODD) 1981: dbut des projets Systme R et Ingres 1986: normalisation de SQL1

1990: extensions aux objets et rgles


1990: normes SQL2 1999: normes SQL3 (SQL 99)

Vers un SQL4.

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

SQL3 (SQL99)
SQL92 ne permet pas de crer de nouveaux types
manque de souplesse et une interface difficile avec les applications orientes objet

SQL3 ( ou SQL99) standard en volution, est propos par


tous les grands constructeurs (Oracle, Sybase, IBM, etc.)

Utilisant les concepts objet Programmation intgre et modulaire Compatibilit avec le relationnel. Possibilit de structuration en modules (PSM) procedure storage module

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

SQL3 (SQL99)
De multiples facettes : Un langage de dfinition de types Un langage de programmation Un langage de requtes Un langage temporel ...
Manipulation avance: Dfinition des types complexes avec hritage Appels de mthodes en rsultat et qualification Imbrication des appels de mthodes Surcharge d'oprateurs Triggers
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

SQL3 Les composants


Part 1: Framework: description de la structure du document
Part 2: Foundation: Le noyau de spcification, incluant les ADT. Part 3: SQL/CLI: linterface dappel client, CLI (Call Level Interface). Part 4: SQL/PSM: le langage de spcifications de procdures stockes Part 5: SQL/Bindings: les liens SQL dynamique et SQL repris de SQL-92. Part 6: SQL/XA: Une spcification de linterface XA pour moniteur transactionnel.

Part 7: SQL/Temporal: Le support du temps dans SQL3


Autres spcifications : ADTs multimdia (SQL/MM), RDA protocol,

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

SQL3 - Les procdures (PSM)


Langage de programmation de procdures:
dclaration de variables assignation conditionnels CASE, IF boucles LOOP, FOR exceptions SIGNAL, RESIGNAL De stockage de procdures dans la base possibilit dappel des procdures et fonctions externes

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

SQL3 - Les Objets


Extensibilit des types de donnes

Dfinition de types abstraits Possibilit de types avec ou sans OID Support dobjets complexes Constructeurs de types (tuples, set, list, ) Utilisation de rfrence (OID) Hritage Dfinition de sous-types Dfinition de sous-tables Support de large objets : Type BLOB (Binary Large Object). Ex: picture BLOB(12M) Type CLOB (Character Large Object). Ex: resume CLOB(75K)

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

SGBD objet-relationnels
Extension des SGBD relationnels:

Ajout au relationnel des proprits les plus utiles de l'objet


Possibilit de crer des types complexes et des tables de types complexes Ajout des types LOB pour donnes texte, multimdia, etc. Identifiants d'objet et types rfrence Possibilit de dfinir des types abstraits et des mthodes sur ces types Hritage entre types
Module: Base de Donnes Avance A.AGGOUNE Niveau: Master2AC Universit de Guelma

SGBD objet-relationnels
Exemples : Nouveaux: Illustra, UniSQL, ODB II, Versant Relationnels tendus ("universels"): POSTGRES , Ingres, Oracle 9i, DB2 , Informix

Module: Base de Donnes Avance

A.AGGOUNE

Niveau: Master2AC

Universit de Guelma

La Fin