Vous êtes sur la page 1sur 77

Bases de données avancées

Master 2 ACADEMIQUE

Chargée de cours: Mme A. AGGOUNE


aggoune.aicha@univ-guelma.dz
Département d’informatique
Faculté de mathématique et d’informatique et sciences de la matière
Université 8 mai 45 de GUELMA

Module: Bases de Données Avancées © AGGOUNE’2016 Niveau: Master2AC Université de Guelma


Chapitre 01:
Le relationnel étendu

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Plan du cours

1. Base de données: Rappels & Bilan


2. Motivations
3. Limites du modèle relationnel
4. Le relationnel étendu
5. SQL3 et SGBD Objet-Relationnel

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Base de données: Rappels &
Bilan

Edgar F. Codd (1923 - 2003)

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Bases de Données
• Un ensemble de données structurées modélisant les objets
d’une partie du monde réel avec le moins de redondance
possible

• Indépendante de l’application et de langage de programmation

• Accessible par un LMD


• Stockage et mise à jour de données
• Recherche de données multi-critères

• Partagées par de multiples utilisateurs


• Assurant la fiabilité et sécurité des données
• Gérée par un SGBD (DBMS)
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
SGBD (DBMS)
• Ensemble de logiciels permettant :
• La description des données et des relations (LDD)
• L’interrogation et la mise à jour de la base (LMD)
• Le contrôle de données par LCD
• La gestion des transactions.
• Principales fonctionnalités :
• Contrôle de la redondance d’information
• Partage des données et confidentialité
• Gestion des accès concurrents
• Vérifications des contraintes d’intégrité
• Sécurité et reprise sur panne
• Indépendance des données: Niveau physique, logique et
externe (vue)
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Evolution des SGBD
Volume de données, Type de données
Map/Reduce
(Hadoop)
SGBD 4/5
Avancées
(ORACLE 9i/10g, XML

SGBD 3
Orienté objet
(OBJECTSTORE,ORACLE 7/8)

SGBD 2
Relationnel , Langage SQL(ORACLE
5/6, DB2)

SGBD 1
Hiérarchies, réseaux

SGF
1955 1960 1970 1980 1985 1990 1995 2007

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Depuis 1995…
Bases de données et web
• Etendre les possibilités des SGBD pour répondre aux
applications fonctionnant dans l’environnement web
•Accès distant au contenu des BD
• Fédération et inter-opération des BD
• Transformations des données et des requêtes

Bases de données et décisionnel


• Entreposage de données
• Analyse de données
• Qualité des données

Bases de données réparties :


•Permettre d’intégrer, d’interroger et de mettre à jour des
données provenant de sites répartis géographiquement
Module:
Module: Base
Base de
de Données
Données Avancée
Avancée ©
©A.AGGOUNE
A.AGGOUNE Niveau:
Niveau: Master2AC
Master2AC Université
Université de
de Guelma
Guelma
Depuis 1995…
Bases de données objet :
• Intégrer les concepts objets dans les SGBD (classe, objet)

Bases de données déductives :


• Enrichir les SGBD de possibilités de déduction

Bases de données multimédia :


• Intégrer dans un SGBD la gestion de données textuelles,
graphiques, images, sons etc..

Bases de données à grande échelle:


• 5V (Volume, Véracité, Variété, Vélocité, Valeur)
• Big Data, Hadoop/MapReduce

Module:
Module: Base
Base de
de Données
Données Avancée
Avancée ©
©A.AGGOUNE
A.AGGOUNE Niveau:
Niveau: Master2AC
Master2AC Université
Université de
de Guelma
Guelma
2. Motivations
Le modèle relationnel connaît un très grand succès et s'avère
très adéquat pour les applications traditionnelles des bases de
données (gestion de stock, gestion des commandes, systèmes de
réservation)

Néanmoins, ce modèle 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 géographiques (GIS : Geographic Information Systems).


• BD multimédia (son, image, texte, etc. combines).
• Systèmes de gestion de réseaux,…etc.
Module:
Module: Base
Base de
de Données
Données Avancée
Avancée ©
©A.AGGOUNE
A.AGGOUNE Niveau:
Niveau: Master2AC
Master2AC Université
Université de
de Guelma
Guelma
2. Motivations
Caractéristiques différentes, notamment :
• Structures d'objets plus complexes,
• Des transactions de durée plus longue,
•Nouveaux types de données pour le stockage d'images ou de gros
documents de texte,
•La possibilité de définir des opérations non standards qui sont
spécifiques aux applications.

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


3. Limites du modèle relationnel
• Structure de données trop simple :
• table → ensemble de n-uplets de valeurs atomiques
(nombres, chaînes de caractères…)
• structure plate régulière

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


3. Limites du modèle relationnel
• Mauvais support des applications non standards.
• Opérations sur les données exclues du modèle (méthodes
et procédures)
• Pas de possibilité de référencer directement un objet
composant (pointeurs) :
• La seule solution dans une BD classique est d’effectuer des
jointures.
• Pas de gestion des fonctions spécifiques à certaines
données (le texte, l’image, la vidéo,…etc).
• Pauvreté du système de typage
• Types prédéfinis (entier, réel, chaîne, …) : pas de possibilité
d’extension
• Sémantique insuffisante :
• La seule solution est d’utiliser des contraintes d'intégrité
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
3. Limites du modèle relationnel
• Faible puissance d’expression des langages de BD:
• Pas de récursion
• Pas de structures de contrôle : conditionnelles, boucles
• L’utilisation de deux langages (SQL + un langage de
programmation)
• Difficulté de réaliser des traitement des transactions de
longue durée.

Deux types d'alternatives sont proposés et qui sont


inspirés de l’approche Objet

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Deux approches en BD
Le modèle Orienté Objet (OO) Le modèle Objet Relationnel (OR)

Smalltalk, C++, ... Codd (70)


OODBMS SQL

ODMG 93 SQL2
ODMG II SQL3 ANSI X3H2
ODMG (97) ISO/IEC JTC1/ SC21/WG3
Convergence SQL4
CA-Jasmine, ? Oracle, Informix,
ObjectStore, O2 Sybase, IBM, DB2,
Versant, POET, ... CA-OpenIngres

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Apports du modèle relationnel
• Simplicité des concepts et du schéma
• Bon support théorique
• Langage d’interrogation déclaratif
• Haut degré d’indépendance des données
• Optimisation des accès à la BD
• bonnes performances

• Gestion de contraintes d’intégrité

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


4. Le Relationnel Etendu
• Le relationnel étendu (Objet-Relationnel) : Extension du modèle
relationnel, ajoute:
• Attributs multivalués : sacs, liste, tableau, ensemble, ...
• Héritage sur relations et types
• Définition d’un type abstrait de données propre à un utilisateur
(structure cachée + méthodes)
• Identité d'objets et utilisation de référence (OID)
ADT et encapsulation

Référence et Héritage et
identité Le relationnel réutilisation
Opération
Collection, objets
Polymorphisme
Héritage
Relationnel étendu= Relationnel + Objet
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
4. Le Relationnel Etendu
• La compatibilité est ascendante.
• Extension de SQL version 3 (ORACLE 8)
Table Objet relationnelle « Personne »
NSécu Nom Prénom Adresse Voiture
12345 AIB Ahmed 19 juin Guelma Marque Type Photo

AUDI A5

Range
LR.V6
Rover

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


4. Le Relationnel Etendu

4.1. Les ADT: différentes catégories de Types


4.2. Création de tables à partir des types
4.3. Définition d’attributs référence
4.4. Manipulation avancée de BD
4.5. Langage SQL3 et SGBD Relationnel-objet

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Les ADT: Abstract Data Type
• En relationnel: types prédéfinis
• CHAR, VARCHAR, NUMBER, DATE.

• En relationnel étendu: nouveaux types définis par utilisateurs


• constructeur CREATE TYPE…

• Plusieurs catégories de TYPES:


•OBJECT
• COLLECTION
•VARRAY
• Nested Table …

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Les ADT: syntaxe
CREATE TYPE <nom ADT> AS <corps de l’ADT>;/

Corps de l’ADT:
<OID option> ::= WITH OID [NOT] VISIBLE
Objets sans OID par défaut
<subtype clause> ::= UNDER <supertype clause>
Possibilité d’héritage avec résolution de
conflits explicite
<member list>
<attribute definition> : attributs publics ou privés
<function declaration> : opérations publiques
<operator name list> : opérateurs surchargés
<ordering definition> : ordre (Equals, less, than,
relative, hash)
<cast clause> : fonction de conversion de types
<procedure clause> : procédure avec corps défini dans
SQL3 ou externe

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Les ADT: Exemple
• <attribute definition> permet de définir les droits d’accès aux
éléments d’un objet.
• Elle joue le rôle d’un modificateur dans la définition des classes
JAVA.
• PUBLIC un objet est accessible partout.
• PRIVATE Un objet n'est accessible qu’à l'intérieur de la
classe qui le contient.
Exemple:
CREATE TYPE Personne (PUBLIC nom CHAR(50),
adresse Adress, Nationalité VARCHAR,
PRIVATE date_naissance DATE,
PUBLIC FUNCTION age RETURNS NUMBER);

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Catégories d’ADT: type OBJECT
• Permet de créer des valeurs structurées (ou complexes), et
de créer des objets sous forme des couples <valeur, oid>.
• Informations incluses dans un type:
• Nom: identification de l’objet (unique dans le schéma):
OID (Object IDentifier)
• Attributs
• Méthodes: fonctions ou procédures écrites en PL/SQL
ou JAVA et stockées dans la BD ou en C et stockées à
l’extérieur de la BD

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


ADT de type OBJECT: syntaxe
• Syntaxe de définition du type OBJECT
CREATE [OR REPLACE] TYPE <nom type> AS OBJECT
(<nom-attribut 1> <type>, <nom-attribut 2>
<type>,…,
[définition méthodes]);

Exemple:
CREATE TYPE Adresse AS OBJECT (Num INTEGER,
Rue VARCHAR(20), Ville CHAR(15), Pays CHAR(10));

Adresse

Num Rue Ville Pays


Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
ADT de type OBJECT: Utilisation
• Les types objet peuvent être utilisés comme:
• Domaine de valeur d’une colonne d’une table
Ex: CREATE TABLE Contacts (contact Person, date DATE)

• Domaine de valeur d’un attribut d’un autre type défini par


l’utilisateur
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 Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Catégories d’ADT: Héritage type
• La possibilité de définir un sous-type d'un seul super type
existant.

• Un type hérite des méthodes et de la structure de données de


son super type.

• La possibilité de redéfinir des méthodes existantes, en définir


de nouvelles et spécialiser la structure de données.

• Le mot clé UNDER désigne un type qui hérite d’un autre type.
En ORACLE il faut ajouter la clause NOT FINAL avant de
définir les sous types et les mots INSTANTIABLE et FINAL
après la définition des sous types

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


ADT : Héritage type
Exemple:

CREATE TYPE personne (


nom VARCHAR(10),
Super Type
adresse VARCHAR(30),
Date naissance DATE)
NOT FINAL ; /

CREATE TYPE etudiant UNDER personne (


universite VARCHAR(20),
no-etudiant INTEGER)
INSTANTIABLE
Sous Type
FINAL;
/
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Catégories d’ADT: type Collection
• Permet de créer des attributs multivalués
• Plusieurs catégories de type collection
•SET
•LIST
•VARRAY ....

• Ces collection permettent de représenter les associations 1:N


et N:M

• Ils ont des constructeurs de même nom que le nom du type:


CREATE [OR REPLACE] TYPE <nom-type> AS (Table
| Varray|..(<longueur>)) OF <type>;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Type Collection: SET,LIST, ROW
• Ensembles (sans doublons) représentés par SET(T)
avec T désigne un type de données quelconque.
• Listes (ordonnées et indexés) représentées par LIST(T)
Exemple:
CREATE TYPE personne
Personne
(age INTEGER, nom VARCHAR (30), prenoms Tel
age nom
prenoms LIST (varchar (40)), {VARCHAR(40)} {phone}
Tel SET (phone)) ;

• Row(att1 T, …, attn T) un ensemble non encapsulé d’attributs


•CREATE ROW TYPE adresse_t (numero integer, rue varchar(30),…)
• CREATE TABLE EMP (nomE varchar(35),
adresse ROW (numero integer, rue varchar(30),…))
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Type Collection: VARRAY
• VARRAY: Tableau de taille variable (variable- array)
• Syntaxe:
CREATE TYPE <nom-type1> AS VARRAY (nb-max)
OF <nom-type2>

• Définit un type tableau nommé nom-type1 de maximum


éléments nb-max de type nom-type2.

• nom-type2 peut être n’importe quel type


Exemple:
CREATE TYPE Prénoms
AS VARRAY (3) OF VARCHAR (20) ;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Type Collection: VARRAY (Utilisation)
• Le type VARRAY peut être utilisé comme:
• Domaine de valeur d’une colonne d’une table
Ex: CREATE TABLE Personne (nom VARCHAR (20)
telephone TELEPHONES)

• Domaine de valeur d’un attribut d’un autre type défini


par l’utilisateur
Ex: CREATE TYPE Personne (nom VARCHAR (20) telephone
TELEPHONES)

• Dans une autre collection (collection de collection)


Ex: Personne -> voiture -> panne
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Type Collection: NESTED TABLE
• Nested table est une table à l'intérieur d'une autre table.
• Utiliser particulièrement dans la modélisation des relations 1-N
• Ensemble non ordonné d’éléments de même type.
• Pas de nombre maximum de valeurs (non fini), Pas d'ordre et
Indexable.

• Syntaxe : CREATE TYPE nom_type1 AS TABLE OF nom_type2

• ORCALE crée physiquement une table annexe dans laquelle il


stocke les tuples de l'attribut de type Nested table :
NESTED TABLE nom-attribut-de-type-table-
imbriquée STORE AS nom-table-annexe ;

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Type Collection: NESTED TABLE (Utilisation)
Une Nested Table n’est pas une table objet ; il n’associé pas
une référence OID à un élément de collection.

• Les types NESTED TABLES peuvent être utilisés comme:


• Domaine de valeur d’une colonne d’une 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 d’un attribut d’un autre type défini par


l’utilisateur
Ex: CREATE TYPE Personnes (nom VARCHAR (15), prenom
liste_prenom, age INTEGER, voitures ens_voiture)

• Aussi dans une autre collection (collection de collection)


Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Type Collection: NESTED TABLE (Exemple)
Exemple: Personne possède plusieurs voitures
• Création du type stockant chaque ligne de voiture
CREATE TYPE Tvoiture AS OBJECT
(modele VARCHAR (15), annee DATE, no INTEGER) /

• Création du type contenant les voitures:


CREATE TYPE ens_voiture AS TABLE OF Tvoiture /

• Création 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;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Manipulation de type NESTED TABLE
• Une collection dans une Nested Table peut être:
• Insérée
• Supprimée
• Interrogation et Mise à jour
1.Insertion: la clause TABLE
Exemple:
Cas 1: INSERT INTO Personnes VALUES (‘Mohamed’,
liste_prenom(‘Karim’, ’Amin’), ’35’,
ens_voiture (Tvoiture(‘Golf TD’, 2012, 128),
Tvoiture(‘Compus’, 2011, 179)));
Cas 2: INSERT INTO TABLE(SELECT p.voitures FROM
Personnes p WHERE p.nom= ‘Mohamed’)
VALUES (‘Range rover’, ‘2013’, 3)
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Manipulation de type NESTED TABLE
2. Suppression:
DELETE FROM TABLE (SELECT p.voitures
FROM Personnes p
WHERE p.nom= ‘Mohamed’) V
WHERE v.type=‘207’ ;
3. Interrogation: Pour naviguer dans des collections, il faut
aplatir la collection. L’expression TABLE permet d’interroger
une collection dans la clause FROM comme une table.
Exemple: Numéro des voitures des personnes :
SELECT v.No FROM personnes p, TABLE (p.voitures) v;
4. Mise à jour:
UPDATE TABLE (SELECT p.Voitures FROM Personnes P
WHERE p.nom= ‘Mohamed’) A
SET A.type=‘207’ WHERE A.modele=‘Peougot’
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Définition du schéma Objet-Relationnel
• Schéma de base de données
• Description de la structure des données
• Ensemble de définitions exprimées en LDD
• Deux types d’association:
• Association symétrique: « imbrication partielle »
• Association d’agrégation: « imbrication totale » dans
laquelle une des extrémités joue un rôle prédominant par
rapport à l’autre extrémité.
• L’association 1:1 entre deux types X et Y
CREATE TYPE Y AS OBJECT (…);
• Cas d’agrégation:
CREATE TYPE X AS OBJECT ( a Y, …);

• Cas de symétrie: CREATE TYPE x;


CREATE TYPE Y AS OBJECT (b REF X …);
CREATE TYPE X AS OBJECT ( a REF Y, …);
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Définition du schéma Objet-Relationnel
• L’association 1:N entre deux types X et Y: Le type de
l’attribut doit être une collection (table ou varray)
•Cas d’agrégation:
CREATE TYPE Y AS OBJECT (…);
CREATE TYPE Ens_Y AS TABLE OF Y;
CREATE TYPE X AS OBJECT ( a Ens_Y, …);

• Cas de symétrie:
Direction X → Y (X est associé à plusieurs Y)
CREATE TYPE Y;
CREATE TYPE Ens_Y AS TABLE OF REF Y;
CREATE TYPE X AS OBJECT ( a Ens_Y, …);
Direction Y → X (Y est associé à un X)
CREATE TYPE Y AS OBJECT (b REF X …);

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Définition du schéma Objet-Relationnel
• L’association N:M entre deux types X et Y:
• Direction X → Y (X est associé à plusieurs Y)
CREATE TYPE Y;
CREATE TYPE Ens_Y AS TABLE OF REF Y;
CREATE TYPE X AS OBJECT ( a Ens_Y, …);
• Direction Y → X (Y est associé à plusieurs X)
CREATE TYPE Ens_X AS TABLE OF REF X;
CREATE TYPE Y AS OBJECT (b Ens_X …);

Remarque: ce type de liaison est appelé Références croisées


consistent à créer un type vide pour être référencé dans un
second type et on modifie le premier type ensuite. On crée les
tables en dernier.
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Définition du schéma Objet-Relationnel
Exemple:
Personne
Num 0.n 1.1 Voiture
Posséder Nom-M
Nom
Date Modèle
Marque

CREATE TYPE Voiture;


CREATE TYPE ens-voitures AS TABLE OF REF Voiture;
CREATE TYPE Personne AS OBJECT (conduit ens-voitures… );
CREATE TYPE Voiture AS OBJECT (conduite-par REF
Personne, ..);
CREATE TABLE tab_personne OF Personne (PRIMARY KEY (Num));
NESTED TABLE conduit STORE AS les_voitures;
CREATE TABLE tab_voiture OF Voiture (PRIMARY KEY (Nom-M));;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Définition du schéma Objet-Relationnel
Représentation graphique de l’Exemple:
•Cas de symétrie:
Num Nom Date conduit
conduite-
@1 Num-M Modèle Marque
par
POEUGO
105 Mohamed 05/02/1970 @2 102454
T
PARTENER @1
@4 352974 RENAULT LOGANE @1
@1 585669 CITROEN C4 @2
106 Ali 13/05/1977
@3 48869 AUDI A5 @3
@4

•Cas d’agrégation:
Num Nom Date conduit
102454 POEUGOT PARTENER
105 Mohamed 05/02/1970 352974 RENAULT LOGANE
48869 AUDI A5
102454 POEUGOT PARTENER
106 Ali 13/05/1977
585669 CITROEN C4
4.2. Création des tables à partir des types
• Les données d’un type ne sont persistantes que si elles sont
rangées dans une table.

• On peut créer des tables à partir d’un type de données, dans


ce cas ces tables sont dites «tables objet-relationnelle»

• Ses lignes sont considérées comme « objets », avec la portée


globale d’OID pour les désigner.

• Syntaxe de création d’une table objet :


CREATE TABLE nom_table OF nom_type (contrainte 1, …,
contrainte n);
[NESTED TABLE<nom_attribut> STORE AS < nom-table-
annexe>]
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
LDD pour les tables O-R
1. Suppression d’une table OR
DROP TABLE <nom_table>. Ex : DROP TABLE employé ;
2. Renommer une table OR
RENAME <ancien_nom_table> TO <nouveau_nom_table>
3. Modification de la définition d’une table O-R
ALTER TABLE s’applique à une table relationnelle.
Modifier la définition d’une table O-R revient à modifier le type
d’objets sur lequel elle est définie.
ALTER TYPE nom-type
{RENAME ancien-nom TO nouveau-nom
ADD(ATTRIBUTE (att type, …)|MUMBER FUNCTION …)
MODIFY(nom-att[type-att] [DEFAULT valeur] [contrainte-
att])*
DROP [ATTRIBUTE]nom_d’attribut ou type, …} CASCADE;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
LMD pour les tables O-R
Exemple1: Un type est modifié en supprimant un attribut
ALTER TYPE Personne DROP ATTRIBUTE (adresse)
CASCADE;
Exemple2: Un type est modifié en ajoutant une fonction
ALTER TYPE employe_type
ADD MUMBER FUNCTION age RETURN integer
CASCADE;
Langage de manipulation de données (LMD/DML):
1. Insertion d’une instance objet
INSERT INTO nom_table_objet VALUES(nom_type_objet(val
1 , …, val k ) )
Ex : INSERT INTO employé VALUES (1, 'Toto', 12000,
adresse_type (12, 'Victor Hugo', 'Nice'));
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
LMD pour les tables O-R
2. Suppression des instance objet
DELETE FROM nom_table [WHERE condition(s)];
3. Mise à jour d’une table O-R
UPDATE employé e SET e.salaire = 72000,
e.adresse.numero = 24
WHERE nom = ‘Mohamed';
4. Héritage d’une table O-R (INHERITS)
CREATE TABLE document (Titre VARCHAR (30), Auteur
VARCHAR (30), Année INTEGER);
La table livre est sous table de la table document :
CREATE TABLE livre ( nb_pages INTEGER) INHERITS
(document);
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
LMD pour les tables O-R
5. Recherche via les requêtes SQL3
Exprime le chemin de navigation afin de visualiser une sélection
d‘objets d’une base de données OR.
SELECT <Alias>.<nom type ADT>.<nom type>
FROM <nom de table> <Alias>
WHERE <conditions>
Exemple :
SELECT e.nom, e. adresse_type.rue FROM employé e

On peut utiliser les fonctions d’agrégat, les quantificateurs et


le regroupement par la clause GROUP BY …. HAVING

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


4.3. Définition d’attributs référence
• SGBD relationnel:
clé = un ensemble minimum d’attributs
• Danger lors des :
- mises à jour de la clé
- changements d'attribut clé
• Identité dépendante de la valeur

• En SGBD Objet-relationnel:
OID= identificateur d’objet (Object IDentifier )
• Indépendant de la valeur
• Unique
• Permanant
• Immuable
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
4.3. Définition d’attributs référence
• Chaque instance d’une table d’objets possède un identificateur
d’objet qui :
• Identifie l’objet stocké dans ce n-uplet de façon unique,
• C'est une colonne cachée, générée par le système,
• Sert à référencer l’objet,
• Oracle lui associe un index.

• Référence: Pointeur vers une instance d'une table objet


• Conserver dans les tables une référence à une valeur, plutôt
qu’une clé étrangère.
• Permet de réduire les jointures.
impossible de référencer une collection !!!
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Définition d’attributs référence
• Création d'une référence par la clause «REF»
REF <nom du type>
Exemple:
CREATE TYPE Tlogement AS OBJECT
(Type VARCHAR(15), surface NUMBER(4), nbchambre
INTEGER);/
CREATE TABLE Habitant2 (Num INTEGER, Nom
VARCHAR(20), Prénoms Tprénoms, Habite REF Tlogement );
• La manipulation des attributs référence objet:
• REF (objet)=>l'OID de l'objet
• DEREF (oid)=>valeur structurée: opération inverse de REF
•VALUE (objet)=>valeur structurée.
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Opérateur REF
1. Insertion avec référence :
Exemple: Insérer dans la table « Tpersonnes » une nouvelle
personne: Ali née le 16/02/1955 dont la liste des prénoms
{Karim, Salim, Said}, de voiture modèle i30.
INSERT INTO TPersonnes VALUES (‘Ali’, liste_prénom(‘Karim’,
‘Salim’, ‘Said’), ’16-02-1955’,
(SELECT REF(v) FROM TVoiture v WHERE
v. modèle = ‘i30’));
2. Modification avec référence : UPDATE
Exemple: Changer le modèle de voiture de l’année 2010 par I30.
UPDATE Personnes p SET p.voiture = (SELECT REF(v) FROM
TVoiture v WHERE v. modèle = ‘I30’)
WHERE p.voiture.annee =2010;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Opérateurs: SCOPE, REFERENCES
• La clause SCOPE restreint la colonne référencée ; elle peut
être ajoutée lors de la définition d’une table.
•voiture REF voiture_type SCOPE IS TVoiture.

• Cette expression indique que l’attribut voiture référencera une


ligne de la table TVoiture et pas une ligne d’une autre table créée
à partir du type voiture_type.

• Une contrainte REFERENCES permet d’éviter les références


perdues (comme avec les tables relationnelles) :
• voiture REF voiture_type REFERENCES TVoiture.

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Opérateurs: DEREF, VALUE
• L’opérateur DEREF permet de déréférencer une référence
pour obtenir l’objet référencé.
Exemple:
SELECT p.Nom, p.prénoms, DEREF(p.voiture)
FROM TPersonne p

Opérateur Value
• Pour obtenir la valeur d’un objet, on utilise la fonction VALUE,
qui prend la référence d’un objet et renvoie sa valeur.

• Exemple 1: type référencé (voiture)


SELECT p.nom, VALUE(p.voiture) FROM Personnes p

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Opérateur VALUE
Exemple 2: (type non référencé)

CREATE TYPE Tprojet AS OBJECT (


Pno NUMBER, pnom VARCHAR2(20))
/
CREATE TABLE Projets OF Tprojet;

• Select * from Projets;


1 ¦ ‘CNEPRU’
2 ¦ ‘PNR'
• Select value(p) from Projets p;
Tprojet(1, ‘CNEPRU’)
Tprojet(2, ‘PNR ')

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


4.4. Manipulation avancée de BD
• Le langage SQL a été étendu pour permettre la définition et
l’interrogation des BD objet-relationnelles.

• Une manipulation avancée nécessite l’utilisation des:


• Méthodes (fonctions et procédures),
• Triggers,
• Requêtes récursives,
• Optimisation, index,
• Requêtes récursives,

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Méthode: définition & activation
• Une méthode est un sous-programme déclaré dans la
spécification d'un type objet par le mot-clé MEMBER.

• La méthode ne peut pas avoir le même nom que le type


objet ni qu'aucun des attributs.

• Deux types de méthode: les Procédures et les Fonctions.


• Exemple
CREATE TYPE Personne AS OBJECT(nom Varchar2(10), nss
nsecu, datenais Date, MEMBER FUNCTION age RETURN
NUMBER);

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Méthode: définition & activation
• Signature d'une méthode
• MEMBER FUNCTION nom-méthode (nom-paramètre 1
[IN] type 1 , ….)
RETURN type n
• MEMBER PROCEDURE nom-méthode(nom-paramêtre 1
[IN OUT] type 1 , ….)
• Le code peut contenir des :
• instructions PL/SQL (ou JAVA)
• instructions SQL
• appels de méthodes
Par défaut, le mode de déclaration est implicite :
IN pour les fonctions, IN OUT pour les procédures.

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Corps des méthodes "BODY "
CREATE OR REPLACE TYPE BODY nom_type
IS
spécification_méthode 1 IS
[Declarations_variables ]
BEGIN nom_méthode 1 ;
Instructions_PL/SQL_ou_requêtes_SQL
[ EXCEPTION Traitement_des_erreurs ]
END nom_méthode 1 ;
[spécification_méthode 2 IS

END nom_méthode 2 ;…]
END.
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Corps des méthodes "BODY "
Exemple:
CREATE TYPE BODY Personne AS MUMBER FUNCTION
age RETURN NUMBER IS
A NUMBER;
BEGIN
A = sysdate – datenais;
RETURN A; END; END.
• La suppression du corps d’un type d’objets:
DROP TYPE BODY nom_type
Paramètre SELF
• Toute méthode d'un type objet accepte une instance de ce
type comme premier paramètre (SELF). Ex. SELF. nom_attribut
Il apparaître dans: affectation, appel d’une méthode, requête.
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
La méthode CONSTRUCTOR
• Chaque objet est pourvu d'une méthode de construction
appelée CONSTRUCTOR, définie par le système avec le même
nom que le type objet.

• Une méthode de construction est une fonction utilisée pour


initialiser et retourner une instance de ce type objet.
• Le type des paramètres ainsi que leur ordre sont identiques à
ceux des attributs du type objet.

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Vues Objet-Relationnelles

• Une vue objet-relationnelle permet de visualiser les


données différemment de la façon dont elles sont
organisées.

• Une vue classique peut être construite sur une seule


table ou résulter de la jointure de plusieurs tables:

• CREATE VIEW nom_vue [(att1_vue, att2_vue, …)]


AS
SELECT att1, att2, …
Requête SQL FROM nom_table [, autre_table…]
WHERE condition selection et/ou jointure]

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Vues Objet-Relationnelles
• La création d’une vue objet-relationnelle se fait à partir d’une
requête SELECT permettant d’extraire les données de la table,
ou des tables.
CREATE [OR REPLACE]VIEW nom_vue_or OF type_objet
WITH OBJECT IDENTIFIER ( att_oid )
[UNDER nom_vue_mère ] 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 Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Vues Objet-Relationnelles: Exemples
• CAST et MULTISET sont utilisés pour gérer
les éléments qui
ne respectent pas la seconde forme normale dans le type :
• CAST s'occupera de forcer l'élément retourné dans un
type déclaré.
• MULTISET prend en charge la création d'une collection
(VARRAY ou Nested Table).
Exemple 1: CREATE TYPE ty_etudiant (Num_inscription, nom, prenom, d_naiss,
adresse)

CREATE VIEW vo_etudiant OF ty_etudiant


WITH OBJECT IDENTIFIER (Num_inscription)
AS SELECT Num_inscription, nom, prenom, d_naiss,
ty_adresse ( rue_num , code_post , ville) AS adresse
FROM t_etudiant ;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Vues Objet-Relationnelles: Exemples
Exemple 2: CREATE TYPE ty_classe (code, specialite, niveau, Ens_etud)
CREATE VIEW vo_classe OF ty_classe
WITH OBJECT IDENTIFIER (code)
AS
SELECT code, spécialité, niveau,
CAST(MULTISET(
SELECT Ref(voe)
FROM vo_etudiant voe, t_etudiant te
WHERE voe.Num_inscription= te. Num_inscription) AS C-
etud) AS t_etdu
FROM t_classe tc
WHERE tc.niveau= "Master2" AND tc.specialite="AC"
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Les TRIGGERS
• Un trigger (ou déclencheur) est une règle, dite active, de la
forme : ”événement-condition-action”.
• Procédure stockée dans la base qui est déclenchée
automatiquement par des événements spécifiés par le
programmeur et ne s’exécutant que lorsqu’une condition est
satisfaite.
• Pour supprimer un Trigger : DROP TRIGGER <nom de
trigger>
• Les triggers permettent :
1. D’éviter les risques d’incohérence dus à la présence de
redondance.
2. L’enregistrement automatique de certains événements.
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Les TRIGGERS
3. La spécification de contraintes liées à l’évolution de
données. Ex: un salaire ne peut s’augmenter.

4. De définir toutes règles complexes liées à l’environnement


d’exécution (restrictions sur des horaires, des clients, . . .).

• La séquence Evénement-Condition-Action est exécutée selon


les trois étapes suivantes :
1. Trigger déclenché par un événement spécifié par le
programmeur.
Evénements: INSERT, DELETE, UPDATE.
2. Test de la condition : si cette dernière n’est pas vérifiée,
alors l’exécution s’arrête.

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


Les TRIGGERS
3. Sinon, l’action est réalisée avant ou après un évènement.
• Un seul trigger utilisé par événement sur une table.
• La syntaxe suivante permet de créer un trigger :
CREATE TRIGGER <nom-trigger> BEFORE/AFTER
<Événement> OF <Attribut> ON <Table> [REFERENCING
OLD/NEW AS] <action>

•BEFORE/AFTER: la possibilité de déclencher avant ou après


l'événement.

• <événement>= Précise les évènements concernés par le


déclenchement. S’il y a plusieurs événements, on les sépare
avec ”OR” ou ”AND” .
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Les TRIGGERS
• REFERENCING OLD/NEW AS : la possibilité de référencer
les valeurs avant ou après la mise à jour.
• <action> = opération sur table (INSERT..) avec condition
possible («WHEN» «WHERE»), code en PL/SQL
•WHEN INSERTING
•WHEN DELETING
•WHEN UPDATING
Exemple
CREATE TRIGGER TR BEFORE INSERT OR UPDATE OR DELETE ON
Table1
BEGIN
IF INSERTING THEN INSERT INTO Tab2 VALUES(:NEW.att1,…,
:NEW.attn) END IF;
IF DELETING THEN ….. END IF;
IF UPDATING THEN ….. END IF; END ;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Les TRIGGERS: Exemples
Exemple 1: Définition d’un déclencheur après toute mise à jour du
champs «salaire» de la table Pilote qui met à jour l’attribut
«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: Vérification qu’un 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 d’un article ne peut pas diminuer”) ;
END ;
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Optimisation par INDEX
• Syntaxe:
CREATE [UNIQUE] INDEX <nom d’index> ON <nom de table>
(col1 [ASC/DESC], . . . )
• La clause UNIQUE pour éviter les doublons dans les valeurs
d’une colonne.
• Supprimer un index:
DROP INDEX <nom d’index>
• L'index présente des avantages:
 Accélère l’exécution de requêtes
Améliorer le tri de données
Il est de taille très inférieure à celle de la table.
Il peut servir à empêcher la création des enregistrements
dupliquées résultants d’erreurs de saisie.
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
Langage SQL3 (SQL99) du ISO
• Extensions RICE du modèle relationnel :
• Réutilisation (Héritage, polymorphisme)
• IDENTITE et références
• Objets Complexes (Collections et produit)
• Encapsulation (types et fonctions utilisateur)

• L’OR supporte l’héritage de type pour profiter du polymorphisme


et faciliter la réutilisation
• Support de large objets (LOB) :
• Type BLOB (Binary Large Object). Ex: picture BLOB(12M)
• Type CLOB (Character Large Object). Ex: resume CLOB(75K)

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


SQL: quelques dates….
•1970: invention du modèle relationnel (CODD)
• 1981: début des projets Système R et Ingres
• 1986: normalisation de SQL1
• 1990: extensions aux objets et règles
• 1992: normes SQL2
• 1999: normes SQL3 (SQL 99)
• 2003: normes SQL3 (XML)
• 2007: NoSQL
• 2008: normes SQL3 (déclencheur, fonction)
• 2011: normes SQL3 (Traitements)
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
SQL3 (SQL99)
• SQL92 ne permet pas de créer de nouveaux types
 manque de souplesse et une interface difficile avec les
applications orientées objet

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


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

• Utilisant les concepts objet


• Programmation intégrée et modulaire
•Compatibilité avec le relationnel.
• Possibilité de structuration en modules PSM (Procedure
Storage Module)
• Requêtes récursives

Module: Base de Données Avancée © 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 spécification, incluant les ADT.

• Part 3: SQL/CLI: l’interface d’appel client, CLI (Call Level Interface).

• Part 4: SQL/PSM: le langage de spécifications de procédures stockées

• Part 5: SQL/Bindings: les liens SQL dynamique et SQL repris de SQL-92.

• Part 6: SQL/XA: Une spécification de l’interface XA pour moniteur


transactionnel.

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

• Part 8: SQL/MM: Le support de données multimédias

•Autres spécifications : RDA protocol,…

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


SQL3 (SQL99)
• De multiples facettes :
– Un langage de définition de types
– Un langage de programmation
– Un langage de requêtes
– Un langage temporel ...

• Manipulation avancée:
– Définition des types complexes avec héritage
– Appels de méthodes en résultat et qualification
– Imbrication des appels de méthodes
– Surcharge d'opérateurs
– Triggers
Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma
SGBD objet-relationnels
Extension des SGBD relationnels:

• Ajout au relationnel des propriétés les plus utiles de l'objet


• Possibilité de créer des types complexes et des tables de types
complexes
• Possibilité de définir des types abstraits et des méthodes sur
ces types
• Héritage entre types
•Identifiants d'objet et types référence
• Ajout des types LOB.

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


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

Module: Base de Données Avancée © A.AGGOUNE Niveau: Master2AC Université de Guelma


La Fin

Vous aimerez peut-être aussi