Vous êtes sur la page 1sur 60

INSTITUT NATIONAL DE LA POSTE DES

TECHNOLOGIES DE L’INFORMATION ET DE LA
COMMUNICATION -GABON

COURS DE
BASE DE DONNEES
RELATIONNELLES ET
LANGAGE SQL
(CONCEPTION, IMPLANTATION ET MANIPULATION)

Classe : 3ème année Génie Informatique


Année : 2019-2020

Présenté par : M. MOMBO Levy G.


Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Plan du cours
Objectifs

Introduction

1) Bref Historique

2) Systèmes de gestion de Base de données (SGBD)

3) Différents Modèles de base de données en bref

4) Du modèle entité-association vers le modèle relationnel

5) Conception d’une base de données Relationnelles (méthode : Merise)

6) Principe de Normalisation

7) Bases de données avancées (Programmation SQL et PL/SQL)

2
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Objectifs du cours
Pourquoi ?
 Savoir ce qu’est un SGBD et les différents type ;
 Connaitre les différents type de Base de données ;
 Savoir concevoir une base de données relationnelle ;
 Manipuler une base de données relationnelle ;
 Connaitre l’algèbre relationnelle ;
 Faire de la programmation dans une base de données.
Comment ?
 Aborder les phases de conception, création, manipulation et
programmer d’un SGBDR et Base de données Relationnelle ;
 Etre sensibilité aux aspects matériels et logiciels.

3
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Introduction
Depuis les années 60, l’utilisation des bases de données s’est
largementrépandue sur toutes les gammes d’ordinateurs, et à l’heure actuelle,
les Système de Gestion des Bases de Données Relationnelle (SGBDR) sont
les plus utilisés (Plus de 80% des systèmes existants).

Ce cours présente les concepts des bases de données et met surtout l’accent
sur la conception et la manipulation et la programmation
des bases de données relationnelles.
Compte tenu du public visé (licence 3 En Informatique), le cours a été avancé
afin qu’il soit accessible à toute personne désirant comprendre, concevoir et
manipuler les bases de données relationnelles. Ce qui explique que certains
aspects tel que le PL/SQL soient abordés.

4
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

1) Bref Historique
 1970 : Proposition d’Edgard Franck Codd (IBM)
 Modèle mathématique basé sur la théorie des ensembles.
Article: A relational model of data for large shared Data Banks
(CACM) en 1970;
Dans le cadre du test pour verifier si votre SGBD est
Relationnel ou pas, il publia via ACR : «Is Your DBMS Really
Relational? » et « Does Your DBMS run by the rules ?» en
1985.
 1977 : Langage SEQUEL, qui deviendra SQL (Structure Query
Language)
 1979 : Premier SGBDR commercial (Oracle V2)
 Commercialisé par Relational Software, fondée par larry
Ellison.
 1986 : SQL-86 selon American National Standard institute (ANSI)
 1987 : SQL-87 par ISO
 1989 : SQL-89 (ISO/CEI 9075 : 1989, appélé SQL1)
 1992, 1999, 2003,2008, et 2011 : SQL2, SQL3, SQL-2003, SQL-208,
SQL-2011.
Le respect des normes varie selon le logiciel SGBDR considéré. Et les SGBDR
constituent aujourd’hui la majorité des SGBD disponibles.

5
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

2) Systèmes de gestion de Base de


données (SGBD)

Avant de se demandé ce que c’est qu’un Système de Gestion de Base de


Données il est plus que important de savoir c’est qu’une base de données.

1.- Qu’est qu’une base de données ?


Une base de données (BD) est un ensemble d’informations archivées
dans des mémoires accessibles à des ordinateurs en vue de permettre
le traitement des diverses applications prévues pour elles. Plus
formellement, une BD est un ensemble d'informations exhaustives, non
redondantes, structurées et persistantes, concernant un sujet.

Une condition nécessaire pour mériter le titre de base de données est,


pour un ensemble de données non indépendantes, d'être interrogeable
par le contenu (pouvoir retrouver toutes les données qui satisfont un
critère quelconque).

2.- Système de Gestion de Base de Données SGBD

Les bases de données sont gérées par des logiciels spécialisés


appelés systèmes de gestion de bases de données (SGBD).

Environnement de système de base de données simplifié

6
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

2-1- Définition d’un SGBD


Un Système de Gestion de Base de Données peut être défini
comme un ensemble de logiciels prenant en charge la structuration,
le stockage, la mise à jour et la maintenance des données.
Autrement dit, il permet de décrire, modifier, interroger et administrer
les données. C'est, en fait, l'interface entre la base de données et
les utilisateurs (qui ne sont pas forcément informaticiens).

2-2- Objectif d’un SGBD


Un SGBD doit résoudre certains problèmes et répondre à des
besoins précis :
 Indépendance physique : la façon de définir les données doit
être indépendante des structures utilisées pour leur stockage
 Indépendance logique : un utilisateur doit pouvoir percevoir
seulement la partie des données qui l'intéresse (c'est ce que
l'on appelle une vue) et modifier la structure de celle-ci sans
remettre en cause la majorité des applications ;
 Manipulation aisée des données par des non
informaticiens, ce qui suppose des langages "naturels" ;
 Accès efficaces aux données et obtention de résultats aux
interrogations en un temps "acceptable" ;
 Administration centralisée des données pour faciliter
l'évolution de leur structure ;
 Non-redondance : chaque donnée ne doit être présente
qu'une seule fois dans la base afin d'éviter les problèmes lors
des mises à jour.

2-4 Lien entre SGBD et Application


Une SGBD peut être accédé directement (logiciel client) ou au
travers d’une application.
Le SGBD peut être embarqué dans l’application, ou interrogé au
travers d’une connexion distance.
Modèle embarqué Modèle Client-Serveur Fichiers simples
Espace application Espace application Espace application

Application Application Application

SQLite Client Données

Données SGBD

Données
7
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

2-3 Propriétés d’un Système de Gestion de Base de Données


Relationnelles (SGBDR)
Des objectifs cités ci-dessus découlent les propriétés
fondamentales d'un SGBDR :
 Définition des données, les objets, les attributs, liens et
contraintes (LDD = Langage de définition des données) ;
 Manipulation des données, création, modification,
suppression et recherche (LMD = Langage de Manipulation
des Données) ;
 Partage des données ;
 Base formelle reposant sur des principes parfaitement
définis ;
 Organisation structurée des données dans des tables
interconnectées (d'où le qualificatif relationnelles), pour
pouvoir détecter les dépendances et redondances des
informations ;
 Implémentation d'un langage relationnel ensembliste
permettant à l'utilisateur de décrire aisément les interrogations
et manipulation qu'il souhaite effectuer sur les données ;
 Indépendance des données vis-à-vis des programmes
applicatifs (dissociation entre la partie "Stockage de
données" et la partie "gestion" - ou "manipulation")
 Gestion des opérations concurrentes pour permettre un
accès multi-utilisateur sans conflit ;
 Gestion de l'intégrité des données, de leur protection
contre les pannes et les accès illicites.

3) Les modèles de base de données en


bref
Un modèle de base de données illustre la structure logique d'une base de
données, y compris les relations et les contraintes qui déterminent comment les
données peuvent être stockées et accessibles. Les modèles de base de
données individuels sont conçus en fonction des règles et concepts du modèle
de données plus général adopté par les concepteurs. La plupart des modèles
de données peuvent être représentés par un diagramme de base de données

8
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Il existe de nombreux types de modèles de bases de données. Parmi les plus


courants :

 Modèle relationnel ;
 Modèle de base de données hiérarchique ;
 Modèle réseau ;
 Modèle de base de données orientée objet ;
 Modèle entité-association ;
 Modèle document ;
 Modèle entité-attribut-valeur ;
 Schéma en étoile ;
 Le modèle relationnel-objet, qui associe les deux éléments qui
composent son nom ;

Vous pouvez choisir de représenter une base de données selon l'un de ces
modèles en fonction de plusieurs facteurs. Le plus important est de savoir si
le système de gestion de base de données que vous utilisez prend en charge
un modèle particulier. En effet, la plupart sont pensés pour un modèle de
base de données particulier et exigent des utilisateurs qu'ils adoptent ce
modèle, mais certains prennent en charge plusieurs modèles.
Vous devez également choisir un modèle dont les points forts correspondent à
vos priorités pour la base de données, que ces priorités soient la rapidité, la
réduction des coûts, la simplicité d'utilisation ou autre chose.
Examinons de plus près certains des modèles de bases de données les plus
courants.

3.1. Modèle relationnel

Le modèle le plus courant, appelé modèle relationnel, trie les données


dans des tables, que l'on appelle aussi des relations, dont chacune se
compose de colonnes et de lignes. Chaque colonne contient un attribut
de l'entité en question, comme le prix, le code postal ou la date de
naissance. L'ensemble des attributs d'une relation est appelé domaine.
La clé primaire est constituée par un attribut spécifique ou une
combinaison d'attributs. On peut y faire référence dans d'autres tables :
elle est alors appelée clé étrangère.

Chaque ligne, également appelée tuple, comprend des données sur une
instance spécifique de l'entité en question, comme un employé en
particulier.

9
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Le modèle tient également compte des types de relations entre ces tables,
notamment les relations un-à-un, un-à-plusieurs et plusieurs-à-plusieurs.
On peut représenter les tables d’une base de données relation via le
Modèle Logique de Données :
Clients Commandes
s
-Numclient -Ncommande
-Nomclient -Datecomd
-Prenomclient -#Numclient
-……….. -…………

Dans la base de données, les tables peuvent être normalisées ou


amenées à se conformer aux règles de normalisation dans une optique
d'amélioration de sa flexibilité, de sa polyvalence et de son évolutivité.
Dans une base de données normalisée, chaque donnée est atomique, ou
éclatée en morceaux utiles les plus petits possible.

Les bases de données relationnelles sont généralement écrites en


langage SQL (Structured Query Language). Ce modèle a été introduit en
1970 par E.F. Codd.

3.2. Modèle hiérarchique


Le modèle hiérarchique organise les données dans une structure
arborescente, où chaque enregistrement dispose d'un seul parent
(racine). Les enregistrements frères et sœurs sont triés dans un ordre
particulier. Cet ordre est suivi pour le stockage physique de la base de
données. Ce modèle convient à la description de nombreuses relations
du monde réel.
Exemple représentation :

Il a surtout été utilisé par les systèmes de gestion d'information d'IBM dans
les années 60 et 70, qui ont aujourd'hui majoritairement disparu en raison
de certaines inefficacités opérationnelles.

10
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

3.3. Modèle réseau

Le modèle réseau est une extension du modèle hiérarchique qui autorise


des relations plusieurs-à-plusieurs entre des enregistrements liés, ce qui
implique plusieurs enregistrements parents. Basé sur la théorie
mathématique des ensembles, ce modèle s'articule autour d'ensembles
d'enregistrements connexes. Chaque ensemble se compose d'un
enregistrement propriétaire (ou enregistrement parent) et d'un ou
plusieurs enregistrements membres (ou enfants). Un enregistrement peut
être un membre ou un enfant dans plusieurs ensembles, ce qui permet à
ce modèle de traduire des relations complexes.

Son pic de popularité remonte aux années 70, après qu'il a été
officiellement défini par la conférence sur les langages de systèmes de
traitement de données (Conference on Data Systems Languages,
CODASYL)

Exemple représentation :

3.4. Modèle de base de données orientée objet (DBO)

Ce modèle définit une base de données comme une collection d'objets,


ou d'éléments logiciels réutilisables, associés à des caractéristiques et
des méthodes. Il existe plusieurs types de bases de données orientées
objet :

Une base de données multimédia réunit des médias, tels que des
images, qui ne peuvent pas être stockés dans une base de données
relationnelle.

Une base de données hypertextuelle permet à n'importe quel objet


d'être relié à un autre. Elle est utile pour organiser de nombreuses
données disparates, mais peu adaptée à l'analyse numérique.

Le modèle de base de données orienté objet est le modèle de base de


données post-relationnelle le plus connu, car il intègre des tables, sans

11
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

toutefois s'y limiter. Ces modèles sont aussi connus sous le nom de
modèles de bases de données hybrides.

3.5. Modèle relationnel-objet

Ce modèle de base de données hybride associe la simplicité du modèle


relationnel à certaines des fonctionnalités avancées du modèle de la base
de données orientée objet. En substance, il permet aux concepteurs
d'intégrer des objets dans la structure bien connue des tables.

Les langages et interfaces d'appel comprennent SQL3, les langages des


fournisseurs, ODBC, JDBC et les interfaces d'appel propriétaires qui sont
des extensions des langages et des interfaces utilisés par le modèle
relationnel.

3.6. Modèle entité-association

Ce modèle reproduit les relations entre les entités du monde réel de façon
très similaire au modèle réseau, mais il n'est pas lié aussi directement à
la structure physique de la base de données. Il est souvent utilisé pour la
création d'une base de données d'un point de vue conceptuel.

Ici, les personnes, les lieux et les objets à propos desquels les points de
données sont stockés sont appelés entités, chacune d'entre elles
possédant certains attributs qui, ensemble, composent leur domaine. On
schématise aussi la cardinalité (relations entre les entités).

Exemple schéma :

12
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

L'une des formes courantes du diagramme entité-association est le


schéma en étoile, dans lequel une table centrale des faits se connecte à
plusieurs tables dimensionnelles.

D’autres bases sont aussi utilisées aujourd’hui, à savoir :

3.7. Modèle de fichier inversé ;

Une base de données créée selon une structure de fichier inversé est
conçue pour accélérer les recherches en texte intégral. Dans ce modèle,
le contenu des données est indexé sous la forme d'une série de clés dans
une table de recherche, dont les valeurs indiquent l'emplacement des
fichiers associés. Cette structure peut fournir des rapports quasi
instantanés dans le domaine des Big Data ou de l'analytique, par
exemple.

Ce modèle est utilisé par le système de gestion de base de données


ADABAS de Software AG depuis 1970, et il est encore pris en charge
aujourd'hui.

3.8. Modèle de base de données orientée texte ;


Le modèle de base de données orientée texte est le plus ancien et le plus
simple. Il énumère simplement toutes les données dans une seule table,
composée de colonnes et de lignes. Pour accéder aux données ou les
manipuler, l'ordinateur doit lire l'intégralité du fichier plat dans la mémoire,
ce qui rend ce modèle inefficace, sauf pour les ensembles de données
les plus petits.

3.9. Modèle multidimensionnel ;


Il s'agit d'une variante du modèle relationnel conçue pour améliorer le
traitement analytique. Alors que le modèle relationnel est optimisé pour
le traitement transactionnel en ligne (OLTP), ce modèle est conçu pour
le traitement analytique en ligne (OLAP).

Chaque cellule d'une base de données dimensionnelle contient des


données sur les dimensions suivies par la base de données.
Visuellement, elle ressemble à un ensemble de cubes plutôt qu'à des
tables en deux dimensions.

13
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

3.10. Modèle semi-structuré ;


Dans ce modèle, les données structurelles habituellement contenues
dans le schéma de base de données sont intégrées aux données elles-
mêmes. La distinction entre les données et le schéma est donc pour le
moins vague. Ce modèle est utile pour décrire les systèmes, comme
certaines sources de données sur le Web, que l'on traite comme des
bases de données, mais qui ne peuvent pas s'adapter à un schéma. Il est
également utile pour décrire des interactions entre des bases de données
qui ne respectent pas le même schéma.

3.11. Modèle contextuel ;


Ce modèle peut incorporer des éléments provenant d'autres modèles de
bases de données selon les besoins. Il réunit des éléments des modèles
orienté objet, semi-structuré et réseau.

3.12. Modèle d’association.

Ce modèle divise tous les points de données selon qu'ils décrivent une
entité ou une association. Dans ce modèle, une entité désigne tout
élément qui existe de façon indépendante, alors qu'une association
désigne tout élément qui n'existe que par rapport à un autre élément.
Le modèle d'association structure les données en deux ensembles :
 Un ensemble d'éléments, chacun ayant un identificateur unique, un
nom et un type
 Un ensemble de liens, chacun ayant un identificateur unique et les
identificateurs uniques d'une source, d'un verbe et d'une cible. Le
fait stocké est en lien avec la source, et chacun des trois
identificateurs peut faire référence soit à un lien, soit à un élément.

Ces bases de données sont regroupées sont suit :


 1ère génération : les années 70
 Modèles hiérarchiques
 Modèles en réseaux
 2ème
génération : les années 80
 Modèles relationnels
 Modèles entité-relations
 3ème
génération : jusqu’à ce jour
 Modèles objets.

14
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

4) Du modèle entité-association vers le


modèle relationnel
Pour faire le lien entre le modèle entité-association (EA) et le relationnel il faut
d’abord détailler ces deux modèle, et pour le faire nous commencerons par le relationnel
puis par le EA et enfin le transfert du EA vers le relationnel.

4.1. Modèle relationnel détaillé


4.1.1 Introduction
o 1970 par Codd
o 1ères réalisations (System-R IBM, Ingres Berkeley), vers
1976
o Les premiers systèmes commerciaux, au début des
années 80.
o Le modèle relationnel est simple, facile à appréhender,
même pour un non spécialiste.
o Solides bases théoriques: définir de façon formelle les
langages de manipulation associés.
o Le modèle relationnel représente l'information dans une
collection de relations.
 Une relation comme une table à double entrée, voir
même comme un fichier.
 Chaque ligne de la table (appelée nuplet ou tuple)
peut être vue comme un fait décrivant une entité du
monde.
 Une colonne de la table est appelée un attribut.

4.1.2 Définition formelle (Relation et schéma de relation)


o Schéma de relation R
 R(A1, A2, ..., An) est un ensemble d'attributs R =
{A1,A2, ..., An}; chaque attribut Ai est associé un
domaine Di
o Domaine est un ensemble de valeurs atomiques.

15
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

o Degré d'une relation est le nombre d'attributs n de son


schéma relationnel
Exemple:
Etudiant(NoSS:chaîne, Nom:chaîne,Tel_dom:chaîne,
Age:entier)
Etudiant(NoSS,Nom,Tel_dom,Age);

ETUDIANT
Nom NumeroEtudiant Classe Dominante

COURS
NomCours NumeroCours HeuresCours Departement

PREREQUIS
NumeroCours NumeroPrerequis

UV
IDUV NumeroCours Trimestre Annee Enseignant

ETAT_NOTES
NumeroEtudiant IDUV Note

Diagramme schématique

o Une relation r sur le schéma de relation R(A1, A2, ..., An)


est un ensemble de n-uplets r= {t1, t2, ..., tn}. r est
souvent appelée extension (ou instance) du schéma R.
Attribut
Domaine de
Relation Etudiant l’attribut

NOSS nom Tel_dom age


15 NZAMBA 06255555 19
12 BACARI 06595895 21
1 Makila 04565895 18
4 NIKEL 07254589 23
8 TATA 02545626 22

Domaine de l’attribut
Nom : chaîne de caractères
Extension d’une relation (ou instance): ensemble de ses n-uplets
DB relationnelle: ensemble de relations (variables dans le temps)
Schéma relationnel: ensemble des schémas des relations de la BD

16
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

4.1.3 Caractéristiques des relations


o Une relation est un ensemble de n-uplets: pas d'ordre sur
les n-uplets,
o Un n-uplet est une séquence ordonnée d'attributs...
o Une valeur d'attribut est atomique mais peut être
éventuellement nulle (valeur particulière qui indique que la
valeur est manquante).

4.1.4 Contraintes d'intégrité


o Schéma de relation R(U,P),
 U: liste des attributs et leurs domaines
 P: liste des contraintes d’intégrité CI
o A chaque n-uplet est associé une clé qui l’identifie de
manière unique,
 Etudiant(no,nom,prenom,age), l’attribut no est une
clé primaire
 Unicité des valeurs de clé (un seul nuplet étudiant peut
avoir une valeur de no donnée).
 Une clé primaire ne peut contenir de valeur nulle.
o Les n-uplets d'une relation sont distincts deux à deux,
o CI référentielle entre deux relations.
 vérifier que l'information utilisée dans un n-uplet pour
désigner un autre nuplet est valide, notamment si le n-
uplet désigné existe bien.
Exemple :
Employe(no_emp, no_emp, adresse_emp, rôle, no_dept)
Departement(no_dept, nom_dep)

 un n-uplet de Employe référence un n-uplet de


Departement via l'attribut no-dept (numéro de
département)

4.1.5 Algèbre relationnelle


o Les langages relationnels
 LDD et LMD
 Deux classes de langage:
langage algébrique
langage prédicatifs
 Sur le plan industriel:
langage algébrique : SQL (structured query
language)

17
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

langage prédicatifs : QBE (Query By Example)

o Langage algébrique
 Un ensemble d'opérateurs sur des relations et
produisant de nouvelles relations.
 Construire de nouvelles informations à partir des
relations de départ et d'une composition séquentielle
d'opérateurs.

o Les Operateurs
Opérateurs binaires Opérateurs binaires
Opérateurs unaires
(schémas différents) (relations de même schéma)
 produit
 Projection cartésien
 union
 thêta-jointure
 intersection
 division
 différence
 Sélection

 Opérateurs unaires
Projection
Signature: relation x liste d’attributs → relation
Notation: proj(R,Y) ou Πy(R) = S(y) tel que:

Définition informelle:
La relation S est formée par les colonnes Y de la
relation R.
Exemple de base de données avec l’opérateur unaire :
Produit(prod_id, nom,pu)
Depot(dep_id, adr,volume)
Stock(prod_id,dep_id, qte)

Produit Depot Stock

prod_i nom pu dep_id adr volume prod_i dep_i qt


d d d e
1 Nancy 100
p1 A3 10. 2 Laxou 200 p1 1 0
p2 crayo 0 3 Oeuvre 115 p3 2 9
p3 n 9 5 Nancy 220 p1 3 15
p4 stylo 15 6 Nancy 1000 p2 5 20
A4 10. p3 6 0
0 p1 5 5
p2 6 2
p3 3 30
p1 2 10

Schema 1.1

18
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Example de projection:
 Donner les noms des produits ?

Sélection
 Signature: relation x expression logique →
relation
 Notation: select (R,E) ou σ E(R) ou σ (R,E)
 Le résultat a le même schéma que la
relation R et chaque n-uplets du résultat
vérifie l’expression E.
 E : Condition booléenne, simple ou
composé
– Simple nom_attribut op nom_attribut |
nom_attribut op constante
– Op est un opérateur de comparaison
(>,>,=,<>,>=,<=)
– Composé si E1, E2 sont des expressions
logiques et est un connecteur logique and
or et not est une expression logique.

Exemple de sélection :
 Les produits dont le pu est inférieur à 10?

 Opérateurs binaires (schémas différents)


Produit cartésien x
Signature: relation x relation → relation
R(X) x S(Y) = T(X U Y)
X et Y: ensemble disjoints d’attributs

Définition informelle:(extension T)
Ensemble des tuples obtenus par concaténation de
chaque
tuple de R avec chaque tuple de S.
NB : Attention le nombre d'éléments du produit
cartésien est le produit des cardinalités des relations R
et S!

19
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Exemple du produit cartésien


 Produit x Stock

θ-jointure
Signature: relation x relation x -θ-exp → relation
join θE-exp (R,S), join(R,S, θ -exp), R θ -exp S
θ-exp porte sur les attributs de R et S (attributs de
jointure)
θ-jointure : est équivalente à un produit cartésien suivi
d'une opération de sélection.
R join θE S = σθ E (R X S)

Exemple de theta-jointure :
 Relation qui associe à chaque produit le
dépôt dans lequel il est stocké

Variantes de jointure
EQUI-JOINTURE
– θE-exp porte sur les attributs de jointure est ‘=‘
Jointure naturelle *:
– Équi-jointure suivie de la suppression des attributs
superflus.
Division
Signature: relation x relation → relation
div(R,S), R ÷ S
R(X,Y) ÷ S(Y) = T(X)
• Définition formelle:
T(X) = {<x> | ∀y, <y> ∈ S ⇒ <x,y> ∈ R}
• Définition informelle
T est la projection de R sur X restreinte aux tuples en
liaison avec tous les tuples de S

Exemple dans le langage sql :

 Opérateurs binaires (relations de même schéma)


union ∪ , intersection ∩, différence -
Signature: relation x relation → relation
• R ∪ S, R ∩ S, R - S

20
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

• Sémantique identique à celles des opérations


ensemblistes
• R, S ont le même schéma (même ensemble
d’attributs)..
Exemple dans le langage sql :

Propriétés des opérateurs


• Union et intersection:
– commutatives: R ∩ S =S ∩ R
– associatives, (R ∩ S) ∩ T=R ∩ (S ∩ T)
– idempotentes R ∩ R= R
• Jointure: commutative, associative
• Optimisation de requêtes ...

En Résumé
• 8 opérateurs:
– sélection, projection
– jointure, produit cartésien, division
– union, intersection, différence
• Ensemble minimal d’opérateurs:
– projection, sélection, produit cartésien, union,
différence

Le prochain épisode dans la partie pratique de l’algèbre


relationnelle, se sera le langage SQL !!

4.1.6 Le langage SQL (Structurer Query Language), du SQL


vers AR
Nous ne présentons ici que les fonctionnalités principales de
SQL. Pour des informations complémentaires, le lecteur peut
se reporter au fichier fourni en annexe ainsi qu'aux ouvrages
(principalement les sites internet) cités en bibliographie.

4.1.6.1 Les langages des SGBDR


 SQUARE --->SEQUEL ---> SQL (Structured
Query Language)
• SQL est un standard international (ANSI et ISO).
• Il est connu par tous les SGBDR.
 Désormais la présence de standards
internationaux tels que SQL-86, SQL-89, SQL-92
(SQL2), la dernière SQL-99 (SQL3), chaque

21
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

SGBD sur le marché utilise un peu son propre


dialecte du langage SQL.
 Des primitives de base :
– Recherche de données, création des relations
temporaires...
– Fonctions d’agrégation (min, max,….)
 Définition et manipulation de schéma de relations
(create table, update, insert..)
 Extensions procédurales (create proc,…)

Exemple :
Produit(prod_id,nom,pu)
Depot(dep_id, adr,volume)
Stock(prod_id,dep_id,qte)

Voir le Schema 1.1

Algèbre relationnelle (AR) SQL


 Projection select liste d’attributs
Π liste d’attributs (nom de relation) from nom de relation

Attention: pas d'élimination des


doubles sauf mention explicite:
select distinct pu
from Produit ;
ou
select unique pu
from Produit ;

AR SQL
 Sélection select *
σ condition (nom de relation) from nom de relation
where condition

 * dénote toutes les colonnes de la relation.


 La condition peut comporter:
– opérateurs de comparaison: =,!=, >,>=,<,<=, like
– connecteurs logiques: and, or, not
– caractères génériques : % peut se substituer à
toute chaîne de caractères
– peut se substituer à tout caractère

Exemple: produit dont le pu est < = 10 ?


• Quels sont les produits dont le nom commence par un
‘A’ et dont le prix unitaire est inférieur ou égal à 10 ?

• Réponse (en SQL):


22
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

AR SQL
• projection-sélection
Π l_attributs (σ cond(nom de select l_attributs
relation)) from nom de relation
σ cond ( Π l_attributs (nom de where cond ;
relation) )

Exemple: nom et pu des produit dont 9<pu <10 ?


AR SQL
 Produit cartésien select *
jointure sans condition from nom_rel1, nom_rel2,
nom_rel1 x nom_rel2 x […] […]

Exemple : Produit x Depot


select *
from Produit, Depot ;

AR SQL
 Jointure Forme 1
nom_rel1 θ-exp nom_rel2 Sans sous requête
[….] Select * from nom_rel1,
nom_rel2, […]
where θ-exp

Produit θproduit.prod_id =Stock.prod_id stock

Forme 2 SQL
Imbrication de select (ou sous-requête)
Composition jointure, sélection, projection
• Numéros et noms des produits en rupture de stock ?
Select prod_id, nom
From Produit
Where prod_id in(select prod_id from stock where
qte<=0)

Composition jointure, sélection, projection (suite):


utilisation des alias
 Quels sont les produits en rupture de stock (sortir
prod_id, nom, dep_id et adr) ?

Union, Intersection, Différence


Syntaxe:
<clause select> union | intersect | minus <clause select>

23
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Exemple :
( select prod_id from Produit where pu > 100)
union
( select prod_id from Produit where pu <50)

Relations de schémas compatibles

Ordonnancement des résultats (order by)


select dep_id,prod_id, qte
from Stock
order by prod_id ASC
select dep_id,prod_id, qte
from Stock
order by prod_id ASC, qte DESC

Fonctions d’agrégation
 count: cardinal ...
 sum : la somme des valeurs..
 avg: moyenne...
 max: la valeur maximale
 min: la valeur minimum

(- Ces fonctions peuvent être utilisées dans une clause select ; - Le résultat est
une valeur (pas un ensemble) ; - Toutes les fonctions ignorent les valeurs nulles
(sauf count(*) voir l ’exemple)

Exemples de Fonctions d’agrégation:

Produit
select count(prod_id) prod_id nom
from Produit p1 n2
----- p2 null
3 p3 n2
select count(nom)
from Produit
-----
2
select count(distinct nom)
from Produit
select count(*) /* donne le nombre des lignes dans une table*/
from Produit

 Moyenne des pu des produits stockés dans le dépôt 4?


 Le numéro et l’adresse du dépôt de plus grande
capacité ?
– sinon on peut définir une relation temporaire (SGBD
Sybase ou Oracle…)

24
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

En Synthèse

SYNTAXE GENERALE DE RECHERCHE


select <liste d'attributs projetés>
from <liste de relations>
where <liste de critères de restriction et de jointure>

 La partie from décrit les relations qui sont utilisables dans la


requête (c'est à dire l'ensemble des attributs que l'on peut
utiliser).
 La partie where exprime la (les conditions) que doivent
respecter les attributs d'un tuple pour pouvoir être dans la
réponse. Cette partie est optionnelle.
 La partie select indique le sous-ensemble des attributs qui
doivent apparaître dans la réponse (c'est le schéma de la
relation résultat). Bien entendu ces attributs doivent appartenir
aux relations indiquées dans la partie from.

Partitionnement d’une relation (ou groupement) Clause group


by
 Syntaxe : group by <liste d’attributs>
 Principe :
– partitionnement horizontal d'une relation, selon les valeurs
d'un attribut ou d'un groupe d'attributs qui est spécifié dans la
clause group by
– la relation est (logiquement) fragmentée en groupes de
tuples, où tous les tuples de chaque groupe ont la même
valeur pour l'attribut (ou le groupe d'attributs) de
partitionnement

Exemple : Quelles sont les quantités stockées de chaque


produit?

Attention en SQL standard chaque expression du select doit


être monovaluée par groupe:
• soit l’attribut de groupement
25
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

• soit une fonction sur cet attribut


• soit une fonction qui réduit les valeurs d’un groupe à
une valeur unique…

 Restriction sur les groupes


– Application possible d'un critère de restriction sur les
groupes obtenus
– clause having
– l’expression suivant le having doit être monovaluée
pour chaque groupe.

Exemple : Quels sont les produits stockés dans plus de


2 dépôts ?
Quels sont les dépôts ayant plus de trois produits en rupture
de stock ?

select dep_id, adr


from Depot
where dep_id in ( select dep_id
from Stock
where qte <= 0
group by dep_id
having count(*) >3)
 éliminer des dépôts ayant qte >0
 groupement sur dep_id
 comptage des membres de chaque groupe
 éliminer des groupes ayant moins de 4 membres

o Clause where restriction sur les tuples d’une relation (pas


de fonction d'agrégation).
o Clause having restriction sur les groupes d’une relation
obtenus par la clause group by (on peut utiliser une
fonction d'agrégation)

Donner les produits et les sommes des quantités associés,


si aucun produit considéré n'a pas de quantité
supérieur ou égal à 12" ?

On peut comparer à la requête suivante :


SELECT prod_id, sum(qte)
26
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

FROM Stock
WHERE qte <12
GROUP BY prod_id

 Qui donne pour chaque produit la somme des quantités


si la quantité est inférieur à 12 (elle correspond à la
requête initiale mais travaillant non pas sur la relation
Stock toute entière, mais seulement les tuples de
quantité inférieur à 12).

Prédicat d’existence " exists "


• Syntaxe : exists <sous-requête>
– Tester si la réponse à une sous-question est true ou
false:
 false si la réponse est l’ensemble vide, et true
sinon
• Q: donner l’adresse des depots où est stocké le produit
«p1» ?
Cette requête peut également s'écrire sans utiliser de
quantificateur :

Adresse des dépôts où n’est pas est stocké le produit


«p1» ?

Traduction de la division
• "Quels sont les numéros et les adresses des dépôts où sont
entreposés tous les produits (ceux connus de la base de
données)?"
• PARAPHRASE EN FRANCAIS "Un dépôt est sélectionné
s'il n'existe aucun produit qui n'ait pas été stocké par ce dépôt"
=> DOUBLE NEGATION

Exemple :
 Pour ceux n'ayant aucun attrait particulier pour la
logique, voici une solution :
SELECT d. dep_id, d.adr
FROM Depot d
WHERE d.dep_id IN
(SELECT dep_id FROM Stock
GROUP BY dep_id
HAVING COUNT (*)=
(SELECT COUNT(*) FROM Produit)
);

27
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

 Attention, cette écriture n'est correcte que parce que l'on


est sûr (par définition) que l'ensemble des produits d’un
entrepôt est inclus (ou égal) dans l'ensemble des
produits de la base de données.

Synthèse Select :
 select <liste attributs Aj et/ou expressions sur attributs Ap>
 from <liste relations Ri>
 where <condition sur tuples C1>
 group by <liste attributs Ak>
 having <condition sur groupes C2>
 order by <liste attributs Al>

1.- Produit cartésien des relations Ri


2.- Sélection des tuples de (1) vérifiant C1
3.- Partitionnement de l'ensemble obtenu en (2) suivant les valeurs
des Ak
4.- Sélection des groupes de (3) vérifiant C2
5.- Tri des groupes obtenus en (4) suivant les valeurs des Al
6.- Projection de l'ensemble obtenu en (5) sur les attributs Aj, avec
calcul des fonctions appliquées aux groupes (s'il y en a).

Un exemple complet :
 • "Donnez par ordre croissant le nom et la somme des
quantités des produits, uniquement si chaque quantité
stockée est strictement supérieure à 20 ?"

 Requête SQL :
SELECT p.prod_id, p.nom, Sum(s.qte)
FROM Produit p, Stock s
WHERE p.prod_id = s.prod_id
GROUP BY p.prod_id,p.nom
HAVING min(s.qte) > 20
ORDER BY p.nom

La définition de schémas de relations en SQL

 create table: création de schéma de relation


 alter table: modification de schéma de relation

28
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

 drop table: suppression de schéma de relation

Rappel: schéma de relation R(U,P)


U: {<attribut, domaine>}
domaine: type de données
P: {contraintes d’intégrité}
ce qu’on peut exprimer dépend du SGBD
Création d'un schéma de relation

create table nom-table (nom-attr1 type-attr1 [……],


nom-attr2 type-attr1 [……])
 Le type d’un attribut : Chaque SGBD possède des domaines
qui lui sont propres
 Type de base
– int (entier signé sur 4 bytes),
– smallint (entier signé sur 2bytes),
– tinyint entier non signé sur 1byte)
– float(précision) (sur 8 bytes, la précision dépendant de
la machine sur laquelle est installé le système)
– real (sur 8 bytes..)
– char(longueur) (chaine de caractères de longueur fixe,
au plus 255 caractères)
– varchar(longueur) (chaine de caractères de longueur
variable, au plus 255 caractères)
– datetime (la date de base est 1er janvier 1990….)
– money….

Gestion dans Contraintes d’intégrité


En rappel : Une contrainte d'intégrité est une règle qui définit la
cohérence d'une donnée ou d'un ensemble de données de la BD.

Quelles contraintes :
– non nullité des valeurs d'un attribut
– unicité de la valeur d'un attribut ou d'un groupe d'attributs
– check ou validité restreint les valeurs à insérer dans une
table
 Sur un attribut
 Sur un ensemble d’attributs …

clé primaire (un attribut ou un groupe)


– quand : insert or update
– Quoi faire : rejet de l’opération

29
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

 intégrité référentielle
– Dans la 2ème table on référence: unique ou primar key
– Quand: insert, delete, update
– Quoi faire:
 Default policy: rejet des modifications
 Cascade policy: propager les modifications
(delete, update)
 Set-Null Policy: mettre une valeur nulle lors de
(delete, update)
– On peut choisir entre les différentes stratégies

A propos de l’intégrité référentielle


CONSTRAINT nomContr
FORIGN KEY listeAttributs REFERENCES nomTable(listeAttributs)
[ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}]
[ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}]

Modifications des contraintes


 Alter table Produit drop constraint Idestcle;
 Alter table Produit add constraint Idestcle primary
key(prod_id);

Exemple de création de schémas de relation


• Contraintes d’intégrité:
– pu est obligatoire dans Produit
– les numéros de dépôts sont compris entre 1 et 100
– les numéros des produits commencent par p..
– CI référentielles existent entre Produit, Stock, Depot

Modification de schémas de relations


 Commande: alter table
– ajouter de nouveaux attributs, contraintes
– modifier de définition d’attributs

 Possibilité de:
– ajouter d’attributs, de contraintes (add)
– supprimer de contraintes (drop constraint)
– modifier de valeurs par défaut d’attributs (replace)

 Restriction:

30
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

– On ne peut pas supprimer un attribut..


– Un attribut ajouté à l’aide d’alter table n’est pas visible
dans les procédures qui font (select *)
– drop procedure, puis recréer la procédure

alter table Produit


add couleur varchar(20) NULL
– Ajout d’une colonne à la relation Produit
– Pour les lignes existantes, on affecte la valeur NULL
alter table Stock
add st_id numeric(5,0) identity
– ajout d’une colonne identité à la relation Stock
– Pour les lignes existantes déjà dans la table, le serveur
affecte des
valeurs en séquence.
alter table Stock
drop constraint stock-cons
– suppression d’une contrainte de la relation Stock
alter table Stock
replace qte defaut null
– modification de la valeur par défaut de l’attribut qte

Suppression d'un schéma de relation


 drop table nom-relation [,nom-relation,…]
Exemple:
drop table Stock
drop table Produit, Depot
– suppression du schéma de la relation
– suppression des tuples de la relation
– suppression des indexes de la relation

Mise à jour d’une relation


 Insertion d'un ensemble de tuples
– un seul tuple
– plusieurs tuples
 Suppression d'un ensemble de tuples
 Modification d'un ensemble de tuples
31
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Insertion de tuples dans une relation


 Insertion d'un seul tuple
insert into Produit values (100, ’vis', 23) ;
insert into Produit (prod_id, nom) VALUES (100, ’vis') ;

 Insertion d'un ensemble de tuples


Exemple : create table Vis
(prod# int, pu float)
insert into Vis
select prod#, pu
from produit
where nom = ’vis ’ ;
On peut insérer dans une table le résultat d’une clause select.

Modification de tuples dans une relation


Exemple :
update Produit
set pu = 88
where prod_id =150 ;

update Produit
set pu = pu * 1.1
where prod_id =150 ;

update Stock
set qte = qte + 10
where prod_id in(select prod_id
from Produit
where nom = ‘ vis ’) ;

Suppression de tuples dans une relation

 Syntaxes : Delete [from] nom-relation [,nom-relation,..]


[where] qualification

Exemple :
 Supprimer tous les tuples de Produit?
delete Produit ; (on supprime tous les tuples mais le schéma de la
relation existe toujours..)

 Supprimer le produit de numéro 150?


32
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

delete from Produit


where prod_id= 150 ;

 Supprimer les produits de numéro <9 ou >12?


delete from Produit
where prod_id < 9 or prod_id > 12 ;

 Supprimer les produits stockés au dépôt numéro 5 ?

4.2. Modèle Entité-Association détaillé


4.2.1. Définition
 Une entité est un objet spécifique, concret ou
abstrait, de la réalité perçue. Ce peut être une
personne, un objet inerte, un concept abstrait, un
événement, …

 Un attribut est une caractéristique ou une qualité


d'une entité ou d'une association. Il peut être
atomique (ex. nom, prénom) ou composé (ex.
adresse = n°+ rue + code_postal + ville) et peut
prendre une ou plusieurs valeur(s) (on parle d'attribut
mono- ou multivalué). Le domaine d'un attribut est
l'ensemble des valeurs que peut prendre celui-ci; il est
utile pour vérifier la validité d'une donnée.

 Un type d'entité est la classe de toutes les entités de


la réalité perçue qui sont de même nature et qui jouent
le même rôle. Un type d'entité est défini par un nom et
un ensemble d'attributs, qui sont les caractéristiques
communes à toutes les entités de même type; ces
dernières forment un ensemble d'entités (par
exemple, un ensemble d'étudiants, caractérisés par
leurs nom et prénom). Par simplification de la
terminologie, on appellera entité un type d'entité, et
occurrence d'une entité un individu particulier faisant
partie d'une entité.

 Le schéma ou intention d'une entité en est la


description ; l'ensemble des occurrences d'une entité
33
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

qui existent dans la base à un instant donné s'appelle


l'extension de l'entité. Le schéma d'une entité ne
change pas fréquemment car il en décrit la
structure ; son extension, en revanche, change à
chaque insertion ou suppression d'une occurrence
d'entité.

 L'attribut clé ou identifiant d'une entité est un groupe


minimal d'attributs permettant de distinguer sans
ambiguïté les occurrences d'entités dans l'ensemble
considéré.

 Une association est une correspondance entre 2


ou plusieurs occurrences d'entités à propos de
laquelle on veut conserver des informations. On dit
que les occurrences d'entités participent ou jouent
un rôle dans l'association. Un type d'association est
défini par un nom et une liste d'entités avec leur rôle
respectif (notation : A(ro 1 :E 1 , ro 2 :E 2 ,…, ro n :E
n )). Pour simplifier, on appelle association un type
d'association et occurrence d'association toute
correspondance qui existe entre 2 ou plusieurs
occurrences d'entités. L'ensemble des occurrences
d'une association qui existe dans la base à un instant
donné s'appelle l'extension de l'association.

 Exemple d'association :APPARTENANCE(appartient :


ETUDIANT, inclut: PROMOTION) décrit le fait qu'un
étudiant appartient à une promotion et,
symétriquement, qu'une promotion inclut plusieurs
étudiants (cf. figure 2)

Figure 2-1 : Exemple de modèle entité-association Figure 2-2 : Exemples d'occurrences


de l'association APPARTENANCE

34
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

– Une association peut aussi posséder des attributs. Un attribut de l'association


APPARTENANCE pourrait être, par ex., un entier indiquant le(s) semestre(s)
universitaire(s) suivi(s) par l'étudiant.
– Le degré (ou la dimension) d'une association est le nombre d'entités y participant.
Le cas le plus fréquent est celui de l'association binaire.

4.2.2. Cardinalité d’une association


La cardinalité d'une association spécifie le nombre
minimum et le nombre maximum de participations de
chaque occurrence d'entité à chaque rôle de
l'association. Autrement dit, la cardinalité de A(ro1 :E1,
ro2 :E2 ,…,ron :En ) est définie par un ensemble de
couples (mini , maxi ) où min i (resp. maxi ) indique
le nombre minimum (resp. maximum) de fois que
toute occurrence de Ei doit assumer le rôle roi .
On distingue 4 cas principaux :

Type Cardinalité Exemple (cf. figure 3)


Chaque étudiant est inscrit dans
(1,1) (ou de type 1)
une et une seule promotion
Simple Chaque étudiant n'est pas
(0,1) (ou conditionnelle) forcément représentant de sa
promo
Chaque promotion comporte
(1,N) (ou multiple)
plusieurs étudiants
Complexe
Chaque étudiant choisit un
(0,N) (ou multiple conditionnelle)
nombre quelconque d'options

La section suivante décrit des règles permettant d'obtenir un modèle


relationnel à partir du modèle entité-association. Ce dernier occupe une
place importante dans la modélisation de données assistée par
ordinateur, mais le processus de traduction en un modèle relationnel n'est
que partiellement automatisé, même dans les ateliers de génie logiciel
CASE (Computer-Aided Software Ingeneering).

4.3. Passage du modèle EA vers le modèle relationnel

4.3.1. Notion de clé étrangère


Une clé étrangère d'une relation R est un sous-ensemble C
des attributs de R tel que :

35
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

- il existe une relation R' (pas nécessairement


distincte de R) possédant une clé candidate C' ;
- pour chaque valeur différente de C dans R, il existe
une valeur (unique) de C' dans R' identique à C.
Autrement dit, une clé étrangère dans une table est un
attribut ou une concaténation d'attributs qui forme une clé
d'identification d'une autre table (ou éventuellement de la
même table). La clé primaire d'une table comportant des
clés étrangères peut être soit une concaténation de
celles-ci, soit une autre clé candidate - par exemple une
clé créée artificiellement.

4.3.2. Règles de passage


L'opération consiste à représenter sous forme de tables
les entités et les associations obtenues précédemment.
Pour cela, on applique les règles suivantes :
– Chaque entité est traduite en une table distincte, dont
la clé primaire peut être soit celle de l'entité, soit une
autre clé candidate. Les autres attributs de l'entité
sont reportés comme attributs de la nouvelle table.
– La conversion d'une association dépend de sa
cardinalité :
 R1. Une association de dimension 2 de type
simple-complexe (par exemple, (1,1)-(1,N)) ne
nécessite pas la création d'une nouvelle table,
mais est traduite en définissant une clé
étrangère dans la table qui se situe du côté
"simple" de l'association. Cette clé doit faire
référence à la clé d'identification de la seconde
table, et son nom est judicieusement choisi en
conséquence.

 R2. Une association de dimension 2 de type


simple-simple (par exemple, (1,1)-(0,1)) se traite
de la même façon, en choisissant en principe
d'introduire la clé étrangère dans la table située
du côté (1,1) de l'association.

 R3. Chaque association de dimension 2 de type


complexe-complexe (par exemple, (0,N)-(1,N))
est représentée par une table distincte, contenant
les identifiants des deux entités associées
36
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

comme clés étrangères. Ces attributs constituent


souvent, à eux deux, la clé primaire de la nouvelle
table.
Si l'association comporte d'autres attributs, ceux-
ci sont également ajoutés à la table.

 R4. Une association de dimension supérieure à 2


se réécrit selon la règle R3.

4.3.3. Exemples de passage

Figure 4 : Ex. d'applications des règles de passage modèle entité-association => modèle relationnel

37
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

5) Conception d’une base de données


Relationnelles (méthode : Merise)
1. Phases de construction
Un modèle de données est une description formelle et structurée
des données et de leurs liens de dépendance dans un système
d'information. Pour aboutir à une base de données relationnelle
décrivant le monde réel, il faut procéder en trois étapes :
– Analyse des données. A partir d'une réalité perçue, il s'agit de
spécifier les données nécessaires pour en construire un système
d'information représentatif. Les utilisateurs participent activement
à cette phase en exprimant leurs besoins dans leur langage.
Le résultat de ces consultations est une documentation aussi
complète que possible, comportant une description explicite
des objectifs recherchés, ainsi qu'une spécification textuelle des
données et de leurs interdépendances.

– Elaboration d'un modèle entité-association. Partant de


l'analyse des données réalisée, on identifie les objets (concrets
ou abstraits) - à propos desquels on veut conserver des
informations, ainsi que les liens entre ceux-ci. Dans ce modèle,
un objet est appelé entité et un lien, association ; les ensembles
d'entités et d'associations sont, respectivement, représentés
graphiquement par des rectangles et par des losanges. Le
modèle entité-association fournit des outils et un cadre rigoureux
pour l'analyse des données et de leurs liaisons.

– conversion du modèle entité-association en un modèle


relationnel. Il s'agit de transformer en tables toutes les entités et
les associations du modèle précédent. Chaque liaison est
convertie en une table contenant les clés des ensembles
d'entités y participant (appelées clés étrangères), en plus
d'éventuels attributs de la liaison.

38
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Figure 5 : Phases de construction d'une base de données relationnelle


Une fois ainsi obtenu un schéma de base de données relationnelle,
il faut détecter et étudier les dépendances au sein des tables pour en
éliminer les informations redondantes et les anomalies qui en résultent.
Les concepts de dépendance fonctionnelle, de forme normale et
d'intégrité référentielle, permettent de réaliser ces objectifs.
Pour ce faire, il faudra d’abord aborder les parties sur la représentation
des données.

2. Méthode de conception et niveau de représentation des


données

 Méthodes de conception
– Pour la méthode de conception il en a MERISE, UML etc.
Dans notre cas il sera question de la méthode MERISE,
– Trois niveaux d’abstraction de représentation des
données
 Niveau conceptuel
Description abstraite et globale du monde réel
– aspect statique (données)
– aspects dynamique (traitements)
=> Le schéma conceptuel
Le schéma conceptuel décrit la structure de la
base indépendamment de son implantation

 Niveau logique
Prise en compte de facteurs quantitatifs
– évaluer le volume de données
– évaluer les coûts de mise en place de la BD
– Le schéma logique est issu du schéma
conceptuel + [transformations]

39
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

 Niveau physique
– Contraintes liées au matériel et logiciel
– Adaptation du schéma logique
– Structures de données décrites dans le LDD
– Traitements exprimés avec les outils de
manipulation du SGBD

Cycle de développement des bases de données

Domaine Sous-ensemble
d’application à automatiser

Niveau Formalisme
Entité-association
Schéma conceptuel
Conceptuel sémantique
relationnel
Relationnel
Schéma logique
Logique Type CODASYL
(réseau, hiérarchique)
Dépend du SGBD
Physique Schéma physique (table, Segments,
set type..)
SGBD

Base de données Programmes

Figure 6 : Cycle de développement des bases de données

40
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

6) Principe de Normalisation
6.1. Le problème
Mélanger dans une même relation des informations relatives à
plusieurs entités entraîne, en général des redondances
d’information qui provoquent les anomalies suivantes:
 Anomalies d’insertion,
 Anomalies de mise à jour,
 Anomalies de suppression.
Exemple :
isbn titre éditeur Pays
2-212-09283-0 Bases de données – objet et relationnel Eyrolles France
2-7117-8645-5 Fondements des bases de données Vuibert USA
0-201-70872-8 Databases and Transaction Processing Addison Wesley USA
2-212-09069-2 Internet/Intranet et bases de données Eyrolles France

Cette relation qui décrit des livres et leurs éditeurs, contient des
redondances provoquant les anomalies suivantes :
 insertion : il n’est pas possible d’insérer un livre sans
connaître son éditeur. Attribuer une valeur nulle aux attributs
éditeur et pays violerait l’intégrité d’entité : un attribut
appartenant à la clé, ne doit pas avoir de valeur nulle.
 mise à jour : si un éditeur change de pays, il faut modifier ce
pays pour chacun des livres qu’il a édités.
 suppression : si l’unique livre publié par un éditeur est
supprimé, l’information sur cet éditeur est perdue. Attribuer
une valeur nulle aux attributs isbn et titre, violerait l’intégrité
d’entité.

6.2. Solution
 La solution à ces problèmes consiste à normaliser la relation
en cause en la décomposant en plusieurs relations.
 Cette décomposition s’appuie sur les dépendances qui
existent entre les attributs de la relation initiale :
 dépendances fonctionnelles,
 dépendances multivaluées.

41
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

 Par exemple, la dépendance entre l’ISBN d’un livre et son


titre ou bien entre le nom d’un éditeur et son pays.
6.3. Dépendances fonctionnelles
 Il y a une dépendance fonctionnelle entre un constituant X
et un constituant Y d’une relation R si pour toute extension
de R, à chaque valeur de X il correspond toujours la même
valeur de Y.
 On dit que X détermine fonctionnellement Y et l’on note :
o XY
 Un constituant {A1 , …, A n } apparaissant à gauche ou à
droite du signe  sera noté A1 … A n .

6.4. Dépendances fonctionnelles triviales


 Une dépendance fonctionnelle X  Y est dite triviale si Y
est un sous-ensemble de X ou bien si Y est vide.
 Par exemple, les dépendances :
– isbn titre  pitre
– éditeur pays  Ø, sont triviales.

6.5. Propriétés des dépendances fonctionnelles


 A partir d’un ensemble de dépendances fonctionnelles, on
peut en déduire d’autres.
 Par exemple, à partir des dépendances :
 éditeur  ville
 ville  pays
on peut déduire, par transitivité, la dépendance :
 éditeur  pays

 Étant donné un ensemble de dépendances fonctionnelles F


construit sur l’ensemble R des attributs d’une relation,
l’ensemble F+ (fermeture de F) de toutes les dépendances
fonctionnelles logiquement impliquées par F peut être calculé
à partir des trois règles suivantes (axiomes d’Armstrong) :
 (réflexivité) si Y Y
 (augmentation) si X  Z
 (transitivité) si X Y et Y  Z alors X  Z

42
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

 Des axiomes d’Armstrong on peut déduire deux règles plus


pratiques pour calculer F+ :
 (union) si X  Y et X  Z alors X  Y ᵁ Z.
 (décomposition) si X  Y ᵁ Z alors X  Y et X  Z.

6.6. Dépendances fonctionnelles et clés


 On peut définir une clé d’une relation comme un sous-
ensemble de ses attributs qui détermine tous les autres.
 Un constituant X d’une relation R(A 1 , …, A n ) est une clé
de cette relation si et seulement si :
 X  A 1 , …, A n ,
 il n’existe pas de constituant Y inclus dans X tel que
Y A 1 , …, A n .
 Etant données une relation et l’une de ses clés, on appelle
 attribut clé un attribut qui appartient à cette clé,
 attribut non clé, un attribut qui n’y appartient pas.
 On appelle super-clé un constituant qui inclut une clé...
Par exemple dans la relation
personne(nom, prénom, age)
de clé {nom, prénom}:
 nomet prénomsont des attributs clés,
 ageest un attribut non clé,
 {nom, prénom, age}est une super-clé.

6.7. Normalisation d’une relation


 La normalisation d’une relation consiste à la décomposer
en un ensemble de relations telles qu’aucune des relations
obtenues ne possède les anomalies de redondance, de mise
à jour et de suppression.
 Relativement aux dépendances fonctionnelles, on distingue
4 formes normales :
 la 1 ère forme normale,
 la 2 e forme normale,
 la 3 e forme normale,
 la forme normale de Boyce-Codd qui est la plus aboutie.
 Ce sont les deux dernières que l’on cherche à atteindre :

43
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

 la 1 ère est impliquée par l’atomicité des valeurs,


 la 2 e n’est qu’une étape vers la 3e.
6.8. Propriétés d’une décomposition
 Soit R une relation et R 1 , …, R n les relations issues d’une
décomposition D de R :
 D est sans perte si la relation R peut être recomposée
par jointures des relations R 1 , …, R n .
 D préserve les dépendances fonctionnelles si les
dépendances fonctionnelles de R sont impliquées par les
dépendances fonctionnelles de R 1 , …, R n .

6.8.1. 1ère forme normale


 Une relation est en 1 ère forme normale si tous ses attributs
ont une valeur atomique.
 Le fait que dans le modèle relationnel les domaines soient
atomiques implique que toutes les relations sont en 1ère
forme normale.
6.8.2. 2e forme normale
 Une relation est en 2 e forme normale si elle est en 1ère
forme normale et si chaque attribut non clé dépend
totalement et non partiellement de la clé primaire.

6.8.3. 3e forme normale


 Une relation est en 3e forme normale si pour chaque
dépendance fonctionnelle non triviale
X  Y, on a :
 soit, X est une super-clé de R,
 soit, Y appartient à une clé candidate de R.
 La 2 e partie de la règle est importante car elle dit qu’un
constituant d’une clé candidate peut dépendre :
 soit d’un constituant d’une clé candidate,
 soit d’un constituant non clé,
ce qui peut être source de redondances.

44
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

6.8.4. Insuffisance de la 3 e forme normale

45
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

6.8.5. Forme normale de Boyce-Codd


 Une relation R est en forme normale de Boyce-Codd (FNBC)
si pour chaque dépendance fonctionnelle non triviale X  Y,
X est une super-clé de R.
 La forme normale de Boyce-Codd implique la 3 e forme
normale.
 La forme normale de Boyce Codd est la forme idéale
relativement aux dépendances fonctionnelles, mais
malheureusement elle peut ne pas préserver les
dépendances fonctionnelles.

Cette décomposition est sans perte mais ne préserve pas les dépendances fonctionnelles.

6.8.6. Décomposition en 3 e forme normale et en FNBC


 Il est démontré que :
 Toute relation a au moins une décomposition en 3 e forme
normale qui préserve les dépendances fonctionnelles et
qui est sans perte.
 Toute relation a au moins une décomposition en forme
normale de Boyce Codd qui est sans perte mais qui peut
ne pas préserver les dépendances fonctionnelles.

46
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

6.8.7. Dépendances multivaluées


 Il y a une dépendance multivaluée entre un constituant X et
un constituant Y d’une relation R(X, Y, Z) si pour toute
extension de R, à chaque valeur de X il correspond toujours
le même ensemble de valeurs de Y et que cet ensemble de
valeurs ne dépend pas des valeurs de Z.
 On dit que X multidétermine Y et l’on note :
 X  Y
 Soit par exemple la relation :
 livre(isbn, titre, auteur)
 Si un livre peut avoir plusieurs auteurs, la relation livre
possède la dépendance multivaluée :
 isbn  auteur
 Soit un livre d’isbn i et d’auteurs a1 , a2 et a3 . Si le triplet (i, t,
a1 ) apparaît dans une extension de la relation livre, alors les
triplets (i, t, a2 ) et (i, t, a3 ) doivent y apparaître aussi.

6.8.8. 4e forme normale


 Une dépendance multivaluée X  Y d’une relation R est
dite non triviale si :
 Y n’est pas un sous-ensemble de X,
 X  Y n’inclut pas tous les attributs de R.
 Une relation R est en 4 e forme normale, si pour chaque
dépendance multivaluée X Y non triviale, X est une
super-clé de R.
 La 4 e forme normale implique la forme normale de Boyce-
Codd puisqu’une dépendance fonctionnelle est un cas
particulier de dépendance multivaluée.

47
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

6.8.9 Décomposition en 4e forme normale


 Il est démontré que toute relation a au moins une
décomposition en 4e forme normale qui est sans perte mais
qui peut ne pas préserver les dépendances fonctionnelles.
 Soit U la relation à décomposer et D l’ensemble des
dépendances existantes entre les attributs de U :
 S := {U}
 Tant qu’il existe dans S une relation R qui n’est pas en 4e
forme normale :
– on cherche dans D’une dépendance X Y telle que
R(X, Y, Z) et X n’est pas une clé de R,
– on ajoute à Y l’ensemble Z’ des attributs de Z
fonctionnellement déterminés par X, produisant la
dépendance X  Y Z’,
– on remplace R dans S par les deux relations R1 (X, Y

ᴗ Z’) et R2 (X, Z – Z’).

 Exemple de décomposition 4e forme


 S = {U(isbn, titre, auteur, mot_clé, éditeur, pays, bib,
nb_ex)}
D = {isbn  titre,
isbn  éditeur,

48
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

éditeur  pays,
isbn  auteur, isbn  mot_clé,
isbn bib  nb_ex}
 S = {U1(isbn, titre, éditeur, pays),
U2(isbn, auteur, mot_clé, bib, nb_ex)}
 S = {U1(isbn, titre, éditeur, pays),
U21(isbn, auteur),
U22(isbn, mot_clé, bib, nb_ex)}
 S = {U1(isbn, titre, éditeur, pays),
U21(isbn, auteur),
U221(isbn, mot_clé),
U222(isbn, bib, nb_ex)}
 S = {U11(éditeur, pays),
U12(isbn, titre, éditeur),
U21(isbn, auteur),
U221(isbn, mot_clé),
U222(isbn, bib, nb_ex)}

 Les relations de S sont en 4 e forme normale (et donc en


forme normale de Boyce-Codd) et les dépendances sont
préservées.

Bilan sur toutes les formes

3FN FNBC 4FN


Élimination de la redondance
due aux dépendances Pas toutes Oui oui
fonctionnelles
Élimination de la redondance
due aux dépendances Non non oui
multivaluées
Préservation des dépendances Pas Pas
Oui
fonctionnelles toujours toujours
Préservation des dépendances Pas Pas Pas
multivaluées toujours toujours toujours

49
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

7) Bases de données avancées


(Programmation SQL et PL/SQL)
Cette partie rentre dans le cadre du cours des bases de données avancées
niveau Licence minimum. Il est question de faire présentation le principe du
langage PL/SQL.

7.1 Introduction
PL/SQL est un langage procédural d’Oracle étendant SQL. Il
permet de combiner les avantages d’un langage de
programmation classiques avec les possibilités de
manipulation des données offertes par SQL.
Il s’agit ici de présenter succinctement PL/SQL

7.2 Structure d’un programme PL/SQL


La structure de base d’un programme PL/SQL est celle de bl
oc dont la forme générale est la suivante :
DECLARE
/* Section de déclaration */
BEGIN
/* corps du bloc de programme
Il s’agit de la seule zone dont la présence est obligatoire */
Exception
/* gestion des exceptions */
END;

Le corps du programme (entre le BEGIN et le END) contient de


instructions PL/SQL (affectations, boucle, appel de procédure) ainsi
que des instructions SQL.
Chaque instruction se termine par un ‘’ ; ‘’.
On peut inclure des commentaires par ---- (en début de c
haque lignecommentée) ou par /* …….. */ (pour délimiter
des blocs de commentaires)

50
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

7.3 Variables et types


Un nom de variable en PL/SQL comporte au plus 30 caractères.
Toutes les variables ont un type. On trouve trois sortes de types de
variables, à savoir :
 un des types utilisés pour les colonnes de tables ;
 un type particulier au PL/SQL ;
 un type faisant référence à celui d’une (suite de)
colonne(s) d’une table.
Une déclaration pourrait donc contenir les informations suivantes :
DECLARE
N NUMBER ;
Mot VARCHAR(20);
Mot2 VARCHAR2;
Nom emp.name%TYPE ;
Employe emp%ROWTYPE ;
Dans les deux dernières déclarations, on indique que la variable
nom est définie comme étant du type de la colonne name de la table
emp (qui doit exister au préalable), de même, employe est un vecteur
du type d’une ligne de la table emp.

7.4 Opérateurs
PL/SQL supporte les opérateurs suivants :
 Arithmétique : +, -, *, /, **(exponentielle)
 Concaténation : ||
 Parenthèses (contrôle des priorités entre opérations) : ()
 Affectation : :=
 Comparaison : =, <, > <=, >=, IS NULL, LIKE, BETWEEN,
IN
 Logique: AND, OR, NOT

51
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

7.5 Structures de contrôle


Comme n’importe quel langage procédural, PL/SQL possède un
certain nombre de structures de contrôles évoluées comme les
branchements conditionnels et les boucles.
 Les Branchements conditionnels
Syntaxe :
IF <condition> THEN
Commandes;
[ ELSEIF <condition> THEN
Commandes; ]
[ ELSE
Commandes; ]
END IF;
 Les Boucles
PL/SQL admet trois sortes de boucles. La première est une boucle
potentiellement infinie :
LOOP
Commandes
END LOOP ;

Au moins une des instructions du corps de la boucle doit être une


instruction de sortie :
EXIT WHEN <condition> ;
Dès que la condition devient vraie, on sort de la
boucle.

Le deuxième type de boucle permet de répéter un


nombre fini de fois un même traitement :
<FOR <compteur> IN [REVERSE] <limite_inf> ..
<limite_sup>
Commandes
END LOOP ;

Le troisième type de boucle permet de sortir selon


une condition prédéfinie.
WHILE <condition> LOOP
Commandes
END LOOP ;
Toutes ces structures de contrôle sont évidemment imbriquables.

52
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

7.6 Gestion du curseur


 Définition
Le curseur est une variable dynamique qui prend pour valeur
le résultat d’une requête.
Le curseur est une zone de mémoire de taille fixe, utilisé par
Oracle pour analyser et interpréter tout ordre SQL.
Deux types de curseurs :
 curseur implicite généré et géré par Oracle pour chaque o
rdre SQL
 curseur explicite généré par l’utilisateur pour traiter un ordr
e SQL qui ramène plusieurs lignes

 Curseur explicite
4 étapes d’utilisation d’un curseur explicite :
a. Déclaration du curseur
Tout curseur doit être déclaré dans la section DECLA
RE du bloc le nom du curseur et l’ordre SELECT
associé.
Syntaxe : CURSOR nom_curseur IS ordre_select;

b. Ouverture du curseur
L’ouverture du curseur lance l’exécution de l’ordre SEL
ECT associé au curseur. L’ouverture du curseur se
fait dans la section BEGIN du bloc
Syntaxe : OPEN nom_curseur;

c. Traitement des lignes


Après l’exécution du SELECT, les lignes ramenées so
nt traitées une par une, la valeur de chaque colonne
du SELECT doit être stockée dans une variable
réceptrice.
Syntaxe : FETCH nom_curseur INTO liste_variables;
Le FETCH ramène une seule ligne à la fois; pour traiter n
lignes, il faut une boucle.

d. Fermeture
Après le traitement des lignes, pour libérer la place mé
moire, on ferme le curseur.
Syntaxe : CLOSE nom_curseur;

53
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

e. Curseur For
Oracle propose une variante de la boucle FOR qui déc
lare implicitement la variable de parcours, ouvre
le curseur, réalise les FETCH successif et ferme le
curseur.
Syntaxe : FOR variable IN cursor LOOP
- instructions
END LOOP;

Les attributs d’un curseur


 Les attributs d’un curseur sont des indicateurs sur l’état d’un
curseur.
 %FOUND
(Nom_curseur%FOUND
Il est à TRUE si le dernier FETCH a ramené une ligne
 %NOTFOUND
Nom_curseur%NOTFOUND
Il est à TRUE si le dernier FETCH n’a pas ramené de
ligne
 %ISOPEN
Nom_curseur%ISOPEN
Il est à TRUE si le curseur est ouvert
%ROWCOUNT
Nom_curseur%ROWCOUNT
Indique le numéro de la ligne ramené par le dernier
FETCH

7.7 Les procédures stockées


Les procédures stockées sont activées par des
événements ou par des applications (appels), et sont exécutées
automatiquement par le serveur.
On distingue deux types de procédures stockées :
 le déclencheur
 la procédure ou la fonction

7.8 Les déclencheurs (Trigger)


Les déclencheurs ou ‘’Triggers’’ sont des séquences d’actions défi
nies par le programmeur qui se déclenchent, non par sur appel, mais
Directement
quand un événement particulier (spécifié lors de la définition du
trigger) sur une ou plusieurs tables se produit.

54
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Un déclencheur est donc une suite d’actions qui est exécutée


automatiquement par le SGBD lorsque ces événements se
produisent. Il permet de mettre en œuvre des vérifications
d’intégrité référentielle ou de gestion. Il complète les contraintes
d’intégrités en permettant des contrôles et des traitements plus
complexes.
Les déclencheurs permettent de définir des contraintes
dynamiques, par exemple :
 les contraintes concernant le passage de la base d’un
état à un autre
 générer automatiquement un numéro de clé primaire
 résoudre le problème de mises à jour en cascade
 enregistrer les accès à une table
 empêcher certaines modifications
 etc..
Le déclencheur est en fait une procédure stockée associée à une
Table spécifique, permettant de lancer un programme en fonction
d’événements particuliers produits par une instruction INSERT,
DELETE ou UPDATE

Création d’un déclencheur


Un déclencheur est créé au moyen de la commande CREATE
TRIGGER
CREATE [OR REPLACE] TRIGGER nom-trigger
{AFTER | BEFORE} {UPDATE | INSERT | DELETE} ON nom-table
[FOR EACH ROW [WHEN (<condition>)]]
[Declare
--déclaration de variables]
BEGIN
--traitement
END ;

Exemple : Le salaire d’un employé ne peut pas diminuer


CREATE OR REPLACE TRIGGER maj-salaire-perso
BEFORE UPDATE OF Salaire ON Personnel
FOR EACH ROW
Declare
REFERENCING OLD AS Old-pers
NEW AS New-pers;
Err Exception;
55
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Begin
If Old-pers.Salaire > New-pers.Salaire
Then RAISE Err;
End IF;
Exception
When Err Then Raise_application-err(-20322,’Salaire erroné’);
End;

Exemple : Générer automatiquement la valeur de la clé primaire


CREATE OR REPLACE TRIGGER géné-clé-prim-prod
AFTER INSERT ON Produit
FOR EACH ROW
Begin
UPDATE Produit P
SET P.num-prod=(SELECT COUNT(*)
FROM Produit)
WHERE P.num-prod=.dbkey)
End;

Utilisation d’un déclencheur


Le déclencheur, se déclenche tout seul, à l’insu de l’utilisateur qui
a initié l’instruction de modification, d’insertion ou de suppression
d’enregistrement.

Activation ou désactivation de déclencheur


Un trigger peut être activé ou désactivé par les instructions :
ALTER TRIGGER <nom> {ENABLE|DISABLE} ;
Suppression de déclencheur
Le déclencheur peut être supprimé par la commande DROP
TRIGGER
Déclencheur INSTEAD OF
Le déclencheur INSTEAD OF se déclare uniquement sur des
vues et permet de mettre à jour les tables associées à la vue.

56
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

7.9 Les procédures et les fonctions


Introduction
Elles représentent un moyen d’assurer la sécurité d’un serveur.
Les procédures stockées sont des extensions du langage SQL
standard et permettent de traiter de manière itérative certains
problèmes.
Une procédure stockée est prévue pour effectuer un
traitement sur lesdonnées. Une procédure stockée est
composée d’instructions SQL compilées, et est stockée
dans la base de données (dictionnaire des données).
En plus des instructions SQL, on peut déclarer des variables,
affecter des valeurs, et utiliser des instructions de contrôle :IF,
CASE, LOOP, FOR,….
Avantages
– Sécurité : les droits d’accès ne portent plus sur des
objets, mais sur des programmes stockés
(Instruction GRANT) ;
– Intégrité : les traitements dépendants sont stockés
dans le même bloc ;
– Performances : réduction du nombre d’appels à la
base, utilisation d’un programme partagé ;
– Productivité : simplicité de la maintenance des
applications par modularité, exhaustivité et
réutilisabilité
Création
On peut définir, soit des procédures, soit des fonctions
grâce aux commandes CREATE PROCEDURE et CREATE
FUNCTION.
CREATE PROCEDURE nomproc(arg1 type1, arg2 type2,..) IS
[--déclaration des variables]
BEGIN
--traitements
[EXCEPTION
--traitement des exceptions]
END ;

57
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

CREATE FUNCTION nomfonc(arg1 type1, arg2 type2,..) RETURN type


IS
[--déclaration des variables]
BEGIN
--traitements
[EXCEPTION
--traitement des exceptions]
END ;

Exemple :
création d’une procédure de traitement des rappels dans une
application de gestion de bibliothèque
CREATE PROCEDURE Traiter_rappel
Declare
date-du-jour Date;
nbre-jour Integer ;
Begin
date-du-jour := Sysdate;
For tuple-prêt in (Select date-prêt, date-rappel
From prêt-livre
Where date-rappel is null)
Loop
nbre-jour := Extract(day from date-du-jour - tuple-prêt.date-
prêt day(3)) ;
If nbre-jour > 10
Then
Update prêt-livre
Set tuple-prêt.date-rappel = date-du-jour
End If
End Loop
End ;
58
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Utilisation
L’appel d’une procédure ou d’ne fonction se fait simplement par son
nom,
précédé du mot-clé EXECUTE (EXEC) ou CALL
Exemple : EXEC Traite-rappel ou CALL Traite-rappel

Suppression de procédure ou de fonction


Le déclencheur peut être supprimé par la commande DROP
PROCEDURE
ou DROP FUNCTION

7.10 Gestion des erreurs


PL/SQL permet de définir dans une zone particulière (de
gestion d’exception), l’attitude que le programme doit avoir
lorsque certaines erreurs définies ou prédéfinies se produisent.
C’est la section EXCEPTION qui permet donc de gérer ces
erreurs.
L’utilisateur peut définir ses propres exceptions. Dans ce cas, il
doit les définir dans la zone de déclaration.
DECLARE
Nom_erreur EXCEPTION ;

Puis, cette exception est levée quelque part dans le programme


(après un test non concluant, par exemple), par l’instruction :

BEGIN
..
IF …
THEN RAISE nom_erreur ;

Enfin, dans la zone d’exception un traitement est affecté à chaque


exception possible (définie ou prédéfinie):

EXCEPTION
WHEN nom_erreur THEN …
END;

Un certain nombre d’exceptions sont prédéfinies sous Oracle,


59
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.

Parmi lesquels: NO_DATA_FOUND (devient vrai dès qu’une


requête renvoie un résultat vide), TOO_MANY_ROWS (requête
renvoie plus de lignes qu’escompté), CURSOR_ALREADY_OPEN
(curseur déjà ouvert), INVALID_CURSOR (curseur invalide)

Quelques Remarques :
– Affichage
PL/SQL n’est pas un langage avec des fonctionnalités d’entrés-
Sorties évoluées. Toutefois, on peut imprimer des messages et
des valeurs de variables de plusieurs manières différentes. Le
plus pratique est de faire appel à un package prédéfini :
DBMS_OUTPUT.
En premier, taper au niveau de la ligne de commande :
SET SERVEROUTPUT ON

Pour afficher, on utilise alors la commande suivante :


DBMS_OUTPUT.PUT_LINE(‘Au revoir’||nom||’a bientôt’) ;
Si la variable nom contient la valeur ‘Tata’, l’instruction affichera :
Au revoir Tata a bientôt

– Debugger
Pour chaque objet créé (procédure, fonction, trigger…), en cas
d’erreur de compilation, on peut voir ces erreurs en tapant :
SHOW ERRORS PROCEDURE nom-proc ;

Bonne lecture et apprentissage!

60
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon

Vous aimerez peut-être aussi