Documente Academic
Documente Profesional
Documente Cultură
CHAPITRE1
INTRODUCTION
Objectifs
Expliquer la migration de l’approche classique à l’approche base
des données.
Connaître les concepts de base de l’approche Base de données.
Expliquer les fonctionnalités d’un SGBD.
Distinguer les différents types de SGBD.
Plan du chapitre
I ETUDE CRITIQUE DE L’APPROCHE CLASSIQUE
II LA SOLUTION
III DEFINITIONS
IV LES FONCTIONNALITES
V LES TYPES DE SGBD
Base de Données 1
Département Technologies de l’Informatique
Les applications informatiques classiques ont pour trait commun d’être développés à la
demande, sans politique d’ensemble. Chaque fois qu’un besoin est exprimé par un service
particulier de l’entreprise, une analyse est effectuée, qui conduit au développement d’un certain
nombre de programmes organisés en chaînes de traitement qui manipulent un ensemble de
fichiers assez rudimentaires.
A cela s’ajoute:
Des problèmes d’intégrité: les informations contenues dans les divers fichiers
doivent être respecté un certain nombre de contraintes et il est en général impossible de
développer des modules génériques permettant de régler ces problèmes (même les plus
simples: vérification de type par exemple).
Base de Données 2
Département Technologies de l’Informatique
II LA SOLUTION
L’idée de bases de données est née du besoin de remédier aux problèmes que nous
venons d’évoquer. Pour ce faire l’idée clé fut sans doute celle d’abstraction. Depuis
longtemps déjà, on s’était préoccupé de séparer progressivement le logique du physique.
Pour le programmeur des premiers ordinateurs de gestion, le seul support externe (sur
lequel il pouvait stocker des fichiers) était la bande magnétique. C’est de ce support qu’est
né le concept de fichier séquentiel, et c’est d’ailleurs le seul qui permettait d’imaginer. Il y
avait alors identité presque totale entre le fichier logique c’est à dire la vision que le
programmeur avait de son fichier, et le fichier physique, c’est à dire le fichier tel qu’il
existait sur la bande. Tous les deux étaient constitués d’une suite d’enregistrements
contigus, et le passage de l’un à l’autre était réalisé par un programme de gestion de fichiers
tout à fait simple.
Base de Données 3
Département Technologies de l’Informatique
Grâce à ce type de fichier, on est en mesure de réaliser des fichiers à accès direct: on définit
dans un enregistrement une zone, appelée clé, qui le caractérise de façon unique, et on fait
en sorte que la donnée de la valeur de la clé permettre de retrouver instantanément
l’enregistrement recherché. Deux techniques bien connues permettent de réaliser de tels
fichiers, l’adressage dispersé et l’adressage indexé.
Encore une fois, l’apparition de ces concepts marque un décalage de plus en plus grand
entre la structure logique du fichier (donc la vision humaine) et sa structure physique (donc
le point de vue de la machine).
Le concept de système de gestion de bases de données est un pas de plus dans cette
direction. Cette fois, on va faire en sorte, non seulement, de séparer aussi totalement que
possible la structure logique de la structure physique des informations, mais d’isoler le plus
possible les données des programmes, en sorte qu’une modification de la structure des
données n’ait pas d’influence sur les programmes déjà écrits.
III DEFINITIONS
Une base de données est une collection de données inter-reliées. C'est une entité cohérente
logiquement et véhiculant une certaine sémantique,
Plusieurs années de réflexions (illustrée par exemple par les rapports de CODAYL DBTG:
COnference on DAta SYstem Langages DataBase Task Group) ont conduit à définir plusieurs
niveaux d’abstraction:
Niveau externe ou vue, le plus éloigné de la machine qui décrit une certaine approche
de la réalité, telle que tel ou tel utilisateur doit l’appréhender. Il permettra de donner de
la base une vision tout à fait différente de ce qu’elle est en réalité, pour la rendre plus
agréable à utiliser, pour la simplifier, ou pour limiter l’accès à certaines informations
confidentielles.
Base de Données 4
Département Technologies de l’Informatique
A B C
Utilisateur ou Sous-Schémas ou
Programmeur Vues
Indépendance Logique
Analyste
Schéma Conceptuel de
Administrateur
la Base de Données
Les deux notions d’indépendance présentées sur la figure 1 sont très fortes:
Un SGBD sépare la partie description des données, des données elles mêmes. Cette description
est stockée dans un dictionnaire de données (également géré dans le SGBD) et peut être
consultée par les utilisateurs.
Un modèle de données est un ensemble de concepts permettant de décrire la structure d'une
base de données. La plupart des modèles de données incluent des opérations permettant de
mettre à jour et questionner la base. Le modèle de données le plus utilisé est le modèle
relationnel.
IV FONCTIONNALITES
Un SGBD distingue plusieurs catégories de personnes auxquels il proposera des points
de vue différents sur la base et les outils adaptés:
ingénieur système,
administrateur de la base de données,
programmeur d’application,
utilisateur terminal ou occasionnel.
Dans la plupart des systèmes, les deux premiers types d’utilisateurs peuvent être confondus.
D’autre part, la distinction que nous faisons est encore une fois abstraite: un même individu
peut à des moments différents jouer l’un ou l’autre de ces rôles, et chacun peut être tenu par
plusieurs personnes distinctes.
Base de Données 5
Département Technologies de l’Informatique
La vision que chacun aura de la base de données est du SGBD lui-même dépendra
essentiellement de l’interface qui lui sera proposée. Celle-ci sera bien sûr plus ou moins
conviviale et pourra se présenter sous la forme d’un environnement graphique ou sous la forme
d’un simple langage de commande.
Pour ce faire, l’administrateur dispose d’un ensemble d’outils regroupés sous le nom de
Langage de Définition de Données (Data Definition System). Celui-ci lui offrira un ensemble
de commandes de création d’objets et d’un ensemble d’utilitaires pour surveiller la base et en
optimiser l’utilisation.
Base de Données 6
Département Technologies de l’Informatique
programme devra en général être traité par un préprocesseur, qui transformera ces
instructions en appel à des sous-programmes que l’éditeur de lien trouvera dans une
bibliothèque appropriée,
des requêtes (en Anglais Queries) écrites directement dans le langage de manipulation
de données et exécutées en mode interactif grâce à un processeur de requêtes,
les diverses commandes accessibles à l’utilisateur sont regroupés sous le nom de Langage
de Manipulation de Données (Data Manipulation Language). Permettant à l’utilisateur de
réaliser l’insertion, la suppression ou la modification d’information et d’interroger la base
pour retrouver des informations stockées, ce langage pourra être utilisé sous forme
interactive ou pourra être inclus dans des programmes écrits dans des langages traditionnels
(C, Cobol, Pascal).
Une base de données doit permettre d'accéder la même information par plusieurs
utilisateurs en même temps. Le SGBD doit inclure un mécanisme de contrôle de la concurrence
basé sur des techniques de verrouillage des données (pour éviter par exemple qu'on puisse lire
une information qu'on est en train de mettre à jour).
Le partage des données se fait également par la notion de vue utilisateur, qui permet de définir
pour chaque classe d'utilisateurs la portion de la base de données qui l'intéresse (et dans la
forme qui l'intéresse).
Un SGBD doit offrir plusieurs interfaces d'accès, correspondant aux différents types
d'utilisateurs pouvant s'adresser à lui. On trouve des interfaces orientées utilisateur final
(langages de requêtes déclaratifs comme SQL avec mise en œuvre graphique, interface de type
formulaire,...) ou bien orientées programmeurs d'applications (interface avec des langages de
programmation classiques comme par exemple l'approche SQL immergé).
Base de Données 7
Département Technologies de l’Informatique
Une base de données est souvent vitale dans le fonctionnement d'une organisation, et il
n'est pas tolérable qu'une panne puisse remettre en cause son fonctionnement de manière
durable. Les SGBD fournissent des mécanismes pour assurer cette sécurité. Le premier
mécanisme est celui de transaction qui permet d'assurer un comportement atomique à une
séquence d'actions (elle s'effectue complètement avec succès ou elle est annulée).
Une transaction est une séquence d'opérations qui fait passer la base de données d'un état
cohérent à un nouvel état cohérent. L'exemple typique est celui du débit-crédit pour la gestion
d'une carte bancaire. Ce mécanisme permet de s'affranchir des petites pannes (style coupure de
courant).
En ce qui concerne les risques liés aux pannes disques, les SGBD s'appuie sur un mécanisme
de journalisation qui permet de régénérer une base de données automatiquement à partir d'une
version de sauvegarde et du journal des mouvements.
La différence essentielle entre ces SGBD réside dans les modèles sur lesquels ils s’appuient
pour représenter les données.
Base de Données 8
Département Technologies de l’Informatique
Modèle hiérarchique
Modèle réseau
La structure des données peut être visualisée sous la forme d’un graphe quelconque.
Comme pour le modèle hiérarchique, la structure est conçue avec des pointeurs et détermine le
chemin d’accès aux données.
Pour les modèles hiérarchiques et réseau, les programmes ne sont pas indépendants de la
structure logique de la base et du chemin d’accès aux données: ils doivent décrire comment
retrouver les données (on parle de navigation dans la base) et si, par exemple, on enlève un
index, tous les programmes que l’utilisaient doivent être réécrits. De plus le langage de travail
est complexe.
Modèle relationnel
Le modèle relationnel de données a été défini en 1970 par Codd et les premiers
systèmes commerciaux sont apparus au début des années 80. Le modèle relationnel est simple
(3 concepts), facile à appréhender, même pour un non spécialiste et repose sur de solides bases
théoriques qui permettent notamment de définir de façon formelle les langages de manipulation
associés.
Modèle Objet
Les données sont représentées sous forme d’objets au sens donné par les langages
orientés objets: pour simplifier, les données sont enregistrées avec les procédures et fonctions
qui permettront de les manipule. Les SGBD Orientés Objet (SGBDOO) supportent aussi la
notion d’héritage entre classes d’objets.
Base de Données 9
Département Technologies de l’Informatique
QCM
1. qu'est ce qu'une base de données ?
c'est un logiciel
c'est une collection d'informations structurées
c'est un module à valider
2. quels sont les avantages liés à l'utilisation des systèmes de gestion de bases de données
relationnel
entité-association
graphique
Base de Données 10
Département Technologies de l’Informatique
CHAPITRE 2
CONCEPTION ET STRUCTURATION
DES DONNEES
Objectifs
Connaître la modèle Entité-Association.
Manipuler ce modèle.
Résoudre un problème utilisant ce modèle.
Plan du chapitre
I LE SCHEMA CONCEPTUEL
II ELABORATION D’UN SCHEMA CONCEPTUEL
Base de Données 11
Département Technologies de l’Informatique
I LE SCHEMA CONCEPTUEL
Pour effectuer la description des besoins spécifiques de chaque utilisateur, il est
nécessaire de faire référence à un certain nombre de concepts de base tels qu’Entité et
Associations.
Il existe plusieurs modèle qui peuvent être utilisés pour servir la base à un SC; parmi ceux-ci, le
modèle Entité-Association (CHE-76), le modèle Z qui appartient à la classe des modèles
relationnels,...
Tous ces modèles n’utilisent pas les mêmes concepts. Nous avons choisis le modèle Entité-
Association qui nous servira de référence pour la suite.
1. Entité
Une entité est une personne, un objet, un lieu, un statut, un événement qui a une
existence dans le monde réel. C’est l’objet concret ou abstrait. Elle possède un certain nombre
de caractéristiques.
Les entités se manifestent dans le monde réel à travers des faits élémentaires. Elles sont
naturellement perçus et utilisées par les gestionnaires et les analystes.
Exemples:
"l’usine X est une petite entreprise."
une information de ce type concerne l’entité usine X.
C’est à travers des faits que les entités sont perçues. Nous voyons que ces faits peuvent
concerner plusieurs entités: ils font la notion d’association.
2. Association
L’association est un ensemble d’entités liées entre elles par fait élémentaire. Chaque
entité de l’ensemble joue un rôle particulier dans l’association: Lien sémantique entre deux ou
plusieurs entités. Le lien n'est pas orienté.
Base de Données 12
Département Technologies de l’Informatique
Exemples:
le fait que "la voiture X appartient à la personne Y" est une association entre les entités
voiture X et personne Y.
3. Classe d’entités
Regroupement d’entités ayant des caractéristiques similaires est désigné par un nom.
Exemples:
Classe d’Entité PRODUIT
Classe d’Entité USINE
4. Classe d’associations
Exemples:
Liaison TRAVAILLE (USINE, EMPLOYE)
Cette liaison apparaît dans le cadre d’une application de gestion de personnel. A travers cette
liaison on caractérise le fait qu’une usine emploie plusieurs personnes. Les CE concernées sont
désignées par leur nom: EMPLOYE et USINE.
5. Description
La description des classes d’entités sous la forme d’une liste linéaire de rubriques et du
nom de la CE.
Les rubriques sont appelées des propriétés: Données élémentaires permettant de décrire une
entité.
Employé
Numéro Nom Adresse
Valeur 10 Ali Gafsa
20 Mohamed Tunis
30 Samira Sfax
Rubrique
Nom de la CE
Entité
Base de Données 13
Département Technologies de l’Informatique
De même que les CE, on peut associer à la liaison une ou plusieurs descriptives.
Exemple la liaison COND-VENTE (condition de vente) que l’on peut rencontrer dans le
cadre de l’application gestion des approvisionnements, elle sert à caractériser les produits
fournis par un fournisseur et inversement: elle permet de déterminer le fournisseur qui est
associé à la meilleure condition de vente pour un produit donné.
Ainsi à la liaison COND-VENTE, on peut associer la rubrique PU_VENTE (prix unitaire
de vente).
La description d’une association fera intervenir un triplet:
[Code_pr,Code_fr,Pu_Vente]
Rubrique descriptive de la
Association entités
liaison
FOURNISSEUR-PRODUIT
Cond-vente
Code_pr Code_fr Pu_vente
P1 F1 12.500
P1 F2 13.000
P2 F1 15.200
6. Référence
a- Référence de la CE
Les valeurs de la référence permettent d’identifier les articles de la CE. Lors du choix de la
rubrique référence plusieurs cas peuvent se présenter:
1ier cas: s’il n’y a pas de rubriques susceptibles de jouer le rôle de référence, on peut
introduire une nouvelle rubrique pour assurer cette fonction.
2ième cas: plusieurs rubriques peuvent être nécessaires pour identifier un article, dans ce cas
la référence sera composée d’un groupe de rubriques.
3ième cas: plusieurs rubriques peuvent jouer le rôle de référence, dans ce cas une de ces
rubriques est choisie comme référence.
b- Référence de la liaison
Cas général: les valeurs de référence des entités feront partie des articles décrivant
l’association entre ces entités. Ces articles contiennent alors:
les valeurs des références identifiant les entités de l’association,
les valeurs des rubriques de liaison caractéristiques de l’association.
Base de Données 14
Département Technologies de l’Informatique
Si le cas général la référence de la liaison peut être composée des références des CE, dans
certains cas les articles de la liaison peuvent ne pas être identifiés de cette façon. La référence
devra contenir d’autres rubriques pour pouvoir identifier chaque article.
le schéma conceptuel d’une Bd peut être visualisé à l’aide d’un diagramme utilisant le
symbolisme suivant:
a- Classe d’Entité
Nom de la classe
d’entité
Employé Employé
ou Code_emp
Code_emp
Nom Nom
Prenom Prenom
Adresse Adresse
Date-entree Date-entree
Pour permettre une utilisation postérieure plus simple du schéma de la BD pour la description
des chemins d’accès, certaines contraintes doivent être respectées:
deux classes d’entités distinctes ne peuvent porter le même nom
l’affectation d’un attribut est nécessaire:
si une rubrique’ intervient dans la description de plusieurs classes
si une rubrique apparaît plusieurs fois dans la description d’une classe
d’entités.
La notion d’attribut:
Exemple:
EMPLOYE(Code, nom, adresse, qualification)
Ambiguïté
Base de Données 15
Département Technologies de l’Informatique
Pour enlever cette ambiguïté on utilise la notion d’attributs. Un attribut sert à préciser le rôle
d’une rubrique. On aura donc:
EMPLOYE(Code_emp, nom, adresse, qualification_emp)
L’utilisation de l’attribut: Les attributs sont tous distincts, il n’y aura plus d’ambiguïté
liée à des problèmes de polysémie.
b- Liaison
ou
Le type de la liaison:
Soient A et B deux classes d’entités avec: A[A1, A2, A3,….,An] et B[B1, B2, B3,…, Bn]
La liaison entre A et B est notée par:
A B de type [1: 1] si et seulement si
correspond
1 entité de la CE A =======> 1 entité de la CE B
et
correspond
1 entité de la CE B =======> 1 entité de la CE A
Base de Données 16
Département Technologies de l’Informatique
Exemple:
enseigne
Un enseignant =======> Un seul cours
On a donc la liaison Enseigner:
Est enseigné par ENSEIGNANT <======> COURS de
Un Cours =======> Un seul enseignant type [1: 1]
Soient A et B deux classes d’entités avec: A[A1, A2, A3,….,An] et B[B1, B2, B3,…, Bn]
La liaison entre A et B est notée par:
A B de type [1: N] si et seulement si
correspond
1 entité de la CE A =======> N entité de la CE B
et
correspond
1 entité de la CE B =======> 1 entité de la CE A
Exemple:
Passe
Un client =======> N commandes
On a donc la liaison Passation:
Est passée par CLIENT <======> COMMANDE de
Une commande =======> Un client type [1: N]
Si la contrainte n’est pas vérifiée la liaison est dite liaison hiérarchique partielle.
Soient A et B deux classes d’entités avec: A[A1, A2, A3,….,An] et B[B1, B2, B3,…, Bn]
La liaison entre A et B est notée par:
A B de type [N: M] si et seulement si
correspond
1 entité de la CE A =======> N entité de la CE B
et
Base de Données 17
Département Technologies de l’Informatique
correspond
1 entité de la CE B =======> M entité de la CE A
Exemple:
Base de Données 18
Département Technologies de l’Informatique
Auteur Fournisseur
Code_aut Code_four
Nom N Raison_soc_four
Prenom Adresse-four
Date-nais
Date_mort
natinnalite écrire
N
1
1 1
Editer Livre Fournir
Code_liv N
Titre
N Série
Prêter
Date_prêt
Date_remise
N
Editeur
Code_edit Lecteur
Raison_soc_edit
Adresse_edit
Code_lect
Nom_lect
Prenom_lect
Type_lect
Adresse_lect
Base de Données 19
Département Technologies de l’Informatique
QCM
vrai
faux
vrai
faux
Base de Données 20
Département Technologies de l’Informatique
vrai
faux
vrai
faux
5. Une demande de placement peut ne pas être formulée par une entreprise
vrai
faux
vrai
faux
vrai
faux
Base de Données 21
Département Technologies de l’Informatique
SERIE D’EXERCICES
Exercice 1:
Base de Données 22
Département Technologies de l’Informatique
Exercice 2:
La société Hoster spécialisée dans la gestion hôtelière souhaite automatiser son activité.
Actuellement, la société Hoster est chargée de gérer d’une manière centralisée 14 hôtels de 460
chambres au maximum chacun.
Ces hôtels sont répartis en 4 classes (**, ***, ****, ******). Pour chaque hôtel, il y a
au maximum 5 catégories de chambres différentes (avec douche, avec baignoire, etc.).
Le prix d’une chambre, fixe pour une classe d’hôtel et une catégorie donnée, sera
fonction du nombre d’occupants (une ou deux personnes).
Les prix des petits déjeuners et des consommations diverses sont propres à chaque
hôtel.
Une gestion simplifiée de cette activité consiste à:
Hypothèses simplificatrices:
un client ne peut réserver que des chambres d’un même hôtel,
un client ne peut réserver plusieurs chambres pour une même
période.
Question:
Proposer un modèle Entité/Association relatif à la gestion hôtelière de la société Hoster.
Exercice 3:
A l’Institut, chaque étudiant en Informatique doit effectuer un stage de 3 mois dans une
entreprise. Pour cela, le département informatique dispose d’une liste d’entreprises ayant
proposés des stages. Les étudiants prennent contact avec les entreprises qui les intéressent. Une
fois les conventions de stage signées, on désigne pour chaque stagiaire son responsable de
stage.
Le responsable doit veiller au bon déroulement du stage et aller rendre visite au
stagiaire dans son entreprise d’accueil.
Chaque enseignant du département doit ainsi, quelle que soit sa spécialité, encadrer au
moins trois étudiants et au plus cinq étudiants.
Le département d’informatique de l’Institut dispose des renseignements suivants: Pour
chaque étudiant: son numéro d’inscription, son nom, sa date de naissance, son groupe, et quand
sa convention de stage est signée, le nom de son entreprise d’accueil et la date de la
convention, puis le nom de son responsable.
Pour chaque entreprise: son nom, son adresse, son type (publique, privée), le nom du
responsable des stages dans l’entreprise qui assure le contact avec l’Institut.
Base de Données 23
Département Technologies de l’Informatique
Pour chaque enseignant: son nom, son prénom, sa fonction, son numéro de téléphone,
les entreprises qu’il a déjà visitées, avec pour chacune l’année de sa dernière visite.
Question:
Base de Données 24
Département Technologies de l’Informatique
CHAPITRE 3
MODELE RELATIONNEL
Objectifs
Comprendre le principe de modèle relationnel.
Distinguer les différentes opérations du modèle relationnel.
Plan du chapitre
I INTRODUCTION
II LES CONCEPTS DE BASE DU MODELE RELATIONNEL
III ALGEBRE RELATIONNELLE
Base de Données 25
Département Technologies de l’Informatique
I INTRODUCTION
Le modèle relationnel a été introduit par E. F. Codd [Codd70] qui travaillait au centre
de recherche d’IBM San-José. La première volonté du modèle relationnel fut d’être un modèle
ensembliste simple, supportant des ensembles d’enregistrements aussi bien au niveau de la
description qu’au niveau de la manipulation. Les premières idées d’un modèle ensembliste
avaient été proposées un peu avant, notamment dans [Childs68]. Le modèle relationnel est
aujourd’hui la base de nombreux systèmes.
Il repose sur des bases mathématiques aussi solides que possible, celle de la théorie des
ensembles ont nous allons rappeler les principales caractéristiques.
Un ensemble A est une collection d’objets distincts les uns des autres. Un de ces objets
a est un élément de A, et on note a A (a appartient à A).
En extension par la liste de ses éléments: A = {a,b,c}. Ceci n’est possible que pour un
ensemble fini.
En compréhension comme l’ensemble de tous les éléments d’un sur-ensemble E
vérifiant une certaine propriété exprimée par une formule logique. A = {x E / P(x)}
En informatique, la plupart des données manipulées peuvent être perçues comme des
ensembles, ceux ci étant définis un extension (fichiers de données par exemple) ou en
compréhension (par un algorithme ou une formule: il s’agit alors d’une spécification)
Dans le modèle de CODD l’objet de base est une relation au sens mathématique. Un
élément de la relation est appelé un tuple (ce qui est en fait une altération de l’expression
usuelle de n-uplet).
Base de Données 26
Département Technologies de l’Informatique
Pour distinguer de façon parfaitement claire les composantes d’une relation ou de deux
relations distinctes, surtout s’ils ont le même domaine, on associe à chacun des composantes un
nom que l’on appelle attribut.
Exemple:
Soient: D l’ensemble des chaînes d’au plus 40 caractères et E l’ensemble des entiers
compris entre 0 et 140, alors Individu (nom, prénom, âge) est une partie de DDE -donc une
relation-.
Ses attributs sont les applications
Nom: Individu D
Prénom: Individu D
Age: Individu E.
(Ben salah, Ali, 20) est un tuple de la relation. Une telle relation est représentée sur la figure 1
Une relation est souvent représentée comme une table chaque attribut correspond alors à
une colonne de la table. L’ordre dans lequel sont énumérés les attributs est indifférent.
Attribut
Un schéma de relation est la donnée du nom de la relation suivi de la liste de ses attributs
et de leurs domaines respectifs. Un tel schéma sera écrit sous la forme:
II.2 CLES
Une clé (on dit parfait une clé primaire) d’une relation R(A1, A2,…..,An) est un
ensemble minimal d’attributs Ai,…,AJ dont la connaissance permet d’identifier un tuple
unique de la relation. Toute relation possède au moins une clé. Dans la cas où il en existe
plusieurs, on en choisit une de façon plus au moins arbitraires (c’est elle que l’on appelle clé
primaire). Les autres sont qualifiées de clés candidates.
Exemple: Dans la relation individu ci-dessus, aucun attribut ou groupe d’attribut, ne
peut être pris comme clé, ce qui contredit le fait que l’on puisse considérer individu comme une
Base de Données 27
Département Technologies de l’Informatique
relation. Par contre, en ajoutant par exemple l’attribut NCIN (de domaine l’ensemble des suites
de 8 chiffres), la relation Individu (Ncin, nom, prénom, âge) possède une clé.
On appelle aussi clé étrangère: une clé primaire qui figure dans d’autres relations..
Exemple: Dans la relation 1 à N (Père-fils), la clé primaire du père doit être existante
dans le fils, c’est une clé étrangère
- code_clt - Num_cde
- nom_clt - Date_cde
-adr_clt
Clé étrangère
Clé primaire
Une relation possédant des clés étrangères représentera fréquemment une association entre
deux relations.
Point essentiel: à chaque mise à jour de la relation prêt, on souhaiterait que le SGBD
s’assure de ce que les contraintes référentielles sont bien respectées, que par exemple la valeur
de Code livre figure bien dans la relation livre. Ceci n’est malheureusement que rarement
implémenté.
Consiste à imposer que tous attribut participant à une clé primaire soit non nul. A moins
qu’il n’en soit spécifié autrement par une contrainte sémantique, le modèle relationnel
n’impose pas que les clés étrangères qui n’appartiennent pas à une clé primaire soient non
nulles. Cela peut permettre une certaine souplesse, par exemple d’enregistrer des employés qui
ne sont attachés à aucun service.
permettent de contrôler la validité des valeurs introduites lors des insertions ou mises à jour. La
non-nullité d’une colonne peut aussi être considérée comme une contrainte de domaine.
III.1 PRINCIPE
Le simple fait qu’un schéma relationnel puisse comporter plusieurs relations laisse
penser que nous serons amenés à manipuler ces relations de diverses façons afin de constituer
une nouvelle relation contenant l’information recherchée.
Le principe est alors d’écrire une fonction ensembliste qui à partir d’un ensemble
R1,R2,….,Rn de relations de départ calculera la nouvelle relation (R1,R2,….,Rn). Pour ce faire
on essayera de décomposer la fonction sous forme d’opérations élémentaires, comme dans
un langage fonctionnel.
Les opérations de base peuvent être classées en deux types: les opérations ensemblistes
traditionnelles et les opérations relationnelles. Les opérations ensemblistes sont des opérations
binaires, c’est à dire qu’à partir de deux relations elles en construisent une troisième. Les
opérations relationnelles sont des opérations unaires de projection et de restriction.
III.2.1 UNION
L’union est l’opération classique de la théorie des ensembles adaptée aux relations de
même schéma
Opération portant sur deux relations de même schéma RELATION1 et RELATION2 consistant
à construire une relation de même schéma RELATION3 ayant pour tuples ceux qui appartenant
à RELATION1 ou RELATION2 ou aux deux relations.
Plusieurs notations ont été introduites pour cette opération selon les auteurs:
RELATION1 RELATION2
UNION (RELATION1, RELATION2)
APPEND (RELATION1, RELATION2)
RELATION3
RELATION1 RELATION2
Base de Données 30
Département Technologies de l’Informatique
III.2.2 DIFFERENCE
LA différence est également l’opération classique de la théorie des ensembles adaptée
aux relations de même schéma
Opération portant sur deux relations de même schéma RELATION1 et RELATION2 consistant
à construire une relation de même schéma RELATION3 ayant pour tuples ceux qui appartenant
à RELATION1 et n’appartenant pas RELATION2.
La différence est un opérateur non commutatif: l’ordre des relations opérandes est donc
important. Plusieurs notations ont été introduites pour cette opération selon les auteurs:
RELATION1 RELATION2
DIFFERENCE (RELATION1, RELATION2)
REMOVE (RELATION1, RELATION2)
MINUS (RELATION1, RELATION2)
Base de Données 31
Département Technologies de l’Informatique
RELATION3
RELATION1 RELATION2
Opération portant sur deux relations de même schéma RELATION1 et RELATION2 consistant
à construire une relation RELATION3 ayant pour schéma la concaténation de ceux des
relations opérandes et pour tuples toutes les combinaisons des tuples des relations opérandes.
RELATION1 RELATION2
PRODUCT (RELATION1, RELATION2)
TIMES (RELATION1, RELATION2)
Base de Données 32
Département Technologies de l’Informatique
RELATION3
RELATION1 RELATION2
III.2.4 INTERSECTION
L’intersection est l’opération classique de la théorie des ensembles adaptée aux
relations de même schéma.
Base de Données 33
Département Technologies de l’Informatique
Opération portant sur deux relations de même schéma RELATION1 et RELATION2 consistant
à construire une relation de même schéma RELATION3 ayant pour tuples ceux qui appartenant
à la fois à RELATION1 et RELATION2.
Plusieurs notations ont été introduites pour cette opération selon les auteurs:
RELATION1 RELATION2
INTERSECT (RELATION1, RELATION2)
AND (RELATION1, RELATION2)
RELATION3
RELATION1 RELATION2
L’intersection est une opération redondante avec les opérations de base en ce sens qu’il est
possible de l’obtenir à partir de la différence à l’aide d’une des formules suivantes:
Base de Données 34
Département Technologies de l’Informatique
Opération sur une relation RELATION1 consistant à composer une relation RELATION2, en
enlevant à la relation initiale tous les attributs non mentionnés en opérandes (aussi bien sur au
niveau du schéma que des tuples) et en éliminant en double qui sont conservés une seule fois.
Les notations suivantes sont utilisées pour cette opération, en désignant par Attributi,
Attributj,…, Attributm les attributs de projection:
La notation graphique est aussi utilisée. Le trapèze horizontal signifie que l’on réduit le nombre
de colonnes de la relation: partant du nombre représenté par la base, on passe au nombre
représenté par l’anti-base.
RESULTAT
A1,A2,,Am
RELATION1
Base de Données 35
Département Technologies de l’Informatique
Exemple: Projection d’une relation INDIVIDU sur les attribut nom et ville:
III.3.2 SELECTION
La sélection ou restriction est aussi une opération relationnelle unaire qui produit une
nouvelle relation en enlevant des tuples à la relation opérande selon un critère.
Opération sur une relation RELATION1 produisant une relation RELATION2 de même
schéma mais comportant les seuls tuples qui vérifient la condition précisée en argument.
condition(RELATION1)
RELATION1[condition]
RESTRICT(RELATION1,condition).
Ainsi la notation graphique représentée, désigne que le trapèze vertical signifie que l’on réduit
le nombre de tuples de la relation: partant du nombre représenté par le coté gauche on passe au
nombre par le coté droit.
RESULTAT
Ai
Valeur
RELATION1
Base de Données 36
Département Technologies de l’Informatique
ville ="Gafsa"
III.3.3 JOINTURE
La jointure permet de composer deux relations à l’aide d’un critère de jointure. Elle
peut être vue comme une extension du produit cartésien avec une condition permettant de
comparer des attributs. Nous la définirons comme suit:
Opération consistant à rapprocher selon une condition les tuples de deux relations
RELATION1 et RELATION2 afin de former une troisième relation RELATION3 qui
contient l’ensemble de tous les tuples obtenus en concaténant un tuple de RELATION1 et un
tuple de RELATION2 vérifiant la condition de rapprochement.
La jointure de deux relations produit donc une troisième relation qui contient toutes les
combinaisons de tuples des deux relations initiales qui vérifient la condition spécifiée. La
condition doit bien sûr permettre le rapprochement des deux relations, et donc être du type:
<Attribut1><Opérateur><Attribut2>
où Attribut1 appartient à RELATION1 et Attribut2 à RELATION2, selon le type d’opérateur,
on distingue:
L’équi-jointure dans le cas où l’opérateur est =, qui est une véritable composition de
relations au sens mathématique du terme;
L’inéqui-jointure dans les autres cas, c’est à dire avec un des opérateurs <, , , , .
Dans le cas d’équi-jointure, les deux attributs égaux apparaissent chacun dans le résultat: il y a
donc duplication d’une même valeur dans chaque tuple. Afin d’éliminer cette redondance, on
définit la jointure naturelle comme suit:
L’opération de jointure est représentée par l’une des notations suivantes, la condition étant
simplement omise dans le cas de jointure naturelle:
Base de Données 37
Département Technologies de l’Informatique
RELATION1 RELATION2
Condition
JOIN(RELATION1,RELATION2,Condition)
RESULTAT
RELATION1 RELATION2
La jointure n’est pas toujours considérée comme une opération de base. En effet, si l’on étend
la définition de la restriction de manière à considérer des conditions multi attributs du type
<Attribut1><Opérateur><Attribut2>, alors la jointure peut être obtenue par un produit
cartésien suivi d’une restriction du résultat comme suit:
Base de Données 38
Département Technologies de l’Informatique
JOIN(RELATION1,RELATION2,condition)=
RESTRICT((RELATION1 X RELATION2),condition)
III.3.4 DIVISION
La division permet de rechercher dans une relation les sous-tuples qui sont complétés
par tous ceux d’une autre relation. Elle permet ainsi d’élaborer la réponse à des questions de la
forme "quelque soit x, trouver y" de manière simple.
De manière plus formelle, désignons par ai une valeur quelconque de l’attribut Ai. Un tuple est
alors une suite de valeurs <a1,a2,a3,….>. Utilisant ces notations, le quotient de D par d est
défini par:
Q={<a1, a2, ….ap> tel que quelque soit <ap+1,…,an> de d, <a1, a2, …, ap,
ap+1,.., an> appatient à D}.
Les notations possibles pour la division sont:
Dd
DIVISION(D,d)
RELATION3
RELATION1 RELATION2
Base de Données 39
Département Technologies de l’Informatique
Fournir[Nf,Np] Nf Np
F001 P001
F002 P001
F003 P003
F001 P002
F001 P003
Produit[Np] Np
P001
P002
P003
Fournir[Nf,Np] Produit[Np] Nf
F001
Base de Données 40
Département Technologies de l’Informatique
QCM
Vous répondez en cochant une à plusieurs réponses par question.
Base de Données 41
Département Technologies de l’Informatique
CHAPITRE 4
Objectifs
Décider s’il est nécessaire d’appliquer le processus de
normalisation.
Maîtriser le processus de normalisation.
Résoudre un problème en appliquant le processus de
normalisation.
Plan du chapitre
I INTRODUCTION
II DEPENDANCE FONCTIONNELLE SUR UNE RELATION (DF)
III NORMALISATION DES RELATIONS (FORMES NORMALES)
IV DEPENDANCES FONCTIONNELLES ET CONCEPTION DE SCHEMAS
Base de Données 42
Département Technologies de l’Informatique
I INTRODUCTION
Problème: un mauvais schéma relationnel peut entraîner des anomalies lors des
manipulations.
Avec cette relation on peut avoir des anomalies de mise à jour à savoir:
Anomalie d’insertion: si on a un nouveau type, on ne peut pas l’insérer car on n’a pas
un nouveau véhicule, c’est à dire que le Num_veh est indéterminé.
Anomalie de modification: si j’ai un ensemble des véhicules de même type, alors j’ai
une redondance au niveau des attributs marque et puissance. Autrement dit si je veut
modifier un type je suis obligé de modifier plusieurs fois: risque d’erreur.
Anomalie de suppression: pour un type bien défini, on a seulement un et un seul
véhicule, si ce véhicule est supprimé alors l’information concernant ce type sera perdue.
Solutions:
Base de Données 43
Département Technologies de l’Informatique
II.4 DEFINITIONS
R(X,Y,Z) schéma de relation,
X, Y, Z ensemble d'attributs avec Z éventuellement vide
A un attribut quelconque
CLE:
X est une clé de R Si et seulement si X Y,Z DFE (une relation peut avoir plusieurs clés)
1ière Forme Normale: une relation est en première forme normale ssi tout attribut a une valeur
atomique (vrai par définition du modèle relationnel).
2ième Forme Normale: une relation est en deuxième forme normale ssi elle est en 1FN et si
tous les attributs non clés sont en DFE avec les clés.
Par exemple: R(Num_veh, type, couleur, marque, puissance)
R n’est pas en 2FN car type puissance, et non pas Num_veh, type puissance
type marque, et non pas Num_veh, type marque
3ième Forme Normale: une relation est en troisième forme normale ssi elle est en 2FN et tous
les attributs non clés ne doivent pas être en dépendance transitive avec la clé.
Par exemple: assuré (Num_pol, nom, cod_pod, ville) n’est pas en 3ième forme normale à
cause de cod_pos ville
Il faut décomposer la relation: assuré(Num_pol, nom, cod_pod,)
R_assuré(cod_pod, ville)
BOYCE-CODD Forme Normale: une relation est en BCFN ssi elle est en 3FN et si les seules
DFE sont celles de la forme C X avec C clé (seules les clés sont en partie gauche de DF).
Base de Données 45
Département Technologies de l’Informatique
NV
Véhicule(NV, coul, typ,ncin)
Tupe_veh(Typ, marq,puis)
Personne(Ncin, nom, ville,codp)
Postale(Codp, ville)
Autre méthode:
Passage du modèle Entité-Association au modèle Relationnel:
Nous allons voir maintenant comment transformer la structure décrite E-A en un ensemble de
relations:
1. une entité sera naturellement représentée par une relation ayant comme attributs les
attributs de l’entité,
2. associations:
Base de Données 46
Département Technologies de l’Informatique
1: N: on met la clé primaire du père dans la relation fils et elle sera définie
comme clé étrangère dans la relation fils,
M: N: cette association sera représentée par une nouvelle relation dont les
attributs seront les clés primaires des entités qu’elle lie ainsi que les attributs
spécifique de la relation si l’association est porteuse de données. Les clés
primaires des entités reliées constitueront une clé primaire de la relation.
1: 1: cette association est un cas particulier, on peut prendre l’un père et l’autre
fils; et on passe à la règle de l’association 1: N.
1 Livre M
écrire Code_liv
Titre pret
Anne
Date_prêt
N Date_remise
N
Auteur
Lecteur
Code_aut
Nom Code_lec
Prenom Nom
Date_nais Prenom
Date_mort adresse
Natio
Base de Données 47
Département Technologies de l’Informatique
QCM
1. A quoi servent les dépendances fonctionnelles en bases de données ?
oui
non
des incohérences
des redondances
A,B
A,C
A,B,C
B,C
5. Pour chaque décomposition proposée choisissez celles qui sont en troisième forme
normale.
Base de Données 48
Département Technologies de l’Informatique
SERIE D’EXERCICES
Exercice 1:
Exercice 2:
Reproduire les Diagrammes E-A élaborés dans le chapitre 2 et élaborer la Base de données
relationnelle correspondante.
Base de Données 49
Département Technologies de l’Informatique
Exercice 3:
On considère une relation R construite sur les attributs Propriétaire, Occupant, Adresse, Noapt,
Nbpièces, Nbpersonnes, un nuplet (p, o, a, n, nb1, nb2) ayant la signification suivante:
la personne o habite avec nb2 personnes l'appartement de numéro n ayant nb1 pièces dont le
propriétaire est p.
Une analyse de cette relation nous fournit un ensemble initial E de dépendances fonctionnelles:
Exercice 4:
Un nuplet (c, p, h, s, e, n) a pour signification que le cours c est fait par le professeur p à l'heure
h dans la salle s par l'étudiant e qui a reçu la note n.
C --> P
H, S --> C
H, P --> S
C, E --> N
H, E --> S
Base de Données 50
Département Technologies de l’Informatique
3- Quelle est la forme normale de la relation R ? Si elle n'est pas en 3FN proposer une
décomposition en 3FN.
Base de Données 51
Département Technologies de l’Informatique
CHAPITRE 5
LE LANGAGE SQL:
LANGAGE DE DEFINITION
DE DONNEES
Objectifs
Maîtriser le langage de définition de données.
Appliquer le LDD à des exemples.
Plan du chapitre
I INTRODUCTION
II DEFINITION DE SCHEMAS
III LES TABLES
IV LES VUES
V LES INDEX
VI LES PRIVILEGES D’ACCES A LA BASE
Base de Données 52
Département Technologies de l’Informatique
I INTRODUCTION
Le langage SQL (Structured Query Language) peut être considéré comme le langage
d’accès normalisé aux bases de données. Il est aujourd’hui supporté par la plupart des produits
commerciaux que ce soit par les systèmes de gestion de bases de données micro tel que Access
ou par les produits plus professionnels tels que Oracle ou Sybase. Il a fait l’objet de plusieurs
normes ANSI/ISO dont la plus répandue aujourd’hui est la norme SQL2 qui a été définie en
1992.
II DEFINITION DE SCHEMAS
Le langage de définition des données est le langage permettant de créer ou de modifier
le schéma d'une relation et donc d'une table.
Il permet de créer, de modifier et de supprimer non seulement les tables, mais aussi les vues,
les index.
III LES TABLES
La table est la structure de base contenant les données des utilisateurs. Quand on crée
une table, on peut spécifier les informations suivantes:
la définition des colonnes,
les contraintes d'intégrité,
les caractéristiques de stockage,
les données résultant d'une éventuelle requête.
Base de Données 53
Département Technologies de l’Informatique
L'option NOT NULL assure que SQL interdit lors d'une insertion ou d'une modification que
cette colonne contienne la valeur NULL, par défaut elle est autorisée.
NUMBER [(longueur,[précision])
Ce type de données permet de stocker des données numériques à la fois entières et
réelles dont la valeur est comprise entre 10^-130 et 10^125/ avec une précision de 38
chiffres.
longueur: précise le nombre maximum de chiffres significatifs stockés (par défaut
38),
précision: donne le nombre maximum de chiffres après la virgule (par défaut 38), sa
valeur peut être comprise entre -84 et 127. Une valeur négative signifie que le nombre
est arrondi à gauche de la virgule.
Integer
Ce type de données permet de stocker des données numériques entières représentées sur
31 bits signés
CHAR(longueur)
Ce type de données permet de stocker des chaînes de caractères de longueur fixe.
Longueur doit être inférieur à 255, sa valeur par défaut est 1.
VARCHAR(longueur)
Ce type de données permet de stocker des chaînes de caractères de longueur variable.
Longueur doit être inférieur à 2000, il n'y a pas de valeur par défaut.
DATE
Ce type de données permet de stocker des données constituées d'une date et d'une heure.
LONG
Ce type de données permet des stocker des chaînes de caractères de longueur variable et
inférieure à 2^31 -1. Les colonnes de ce type sont soumises à certaines restrictions;
Contraintes d'intégrité
Base de Données 55
Département Technologies de l’Informatique
Les contraintes différentes que l'on peut déclarer sont les suivantes:
NOT NULL
La colonne ne peut pas contenir de valeurs NULL.
UNIQUE
Chaque ligne de la table doit avoir une valeur différente ou NULL pour cette (ou ces)
colonne.
PRIMARY KEY
Chaque ligne de la table doit avoir une valeur différente pour cette (ou ces) colonne. les
valeurs NULL sont rejetées.
FOREIGN KEY
Cette colonne fait référence à une colonne clé d'une autre table.
CHECK
Permet de spécifier les valeurs acceptables pour une colonne.
Base de Données 56
Département Technologies de l’Informatique
On peut ainsi, en un seul ordre SQL créer une table et la remplir avec des données
provenant du résultat d'un SELECT.
On n'a pas besoin alors de spécifier de type pour les colonnes: les types des données sont ceux
provenant du SELECT.
Par défaut les noms des colonnes de la nouvelle table sont les noms des colonnes du SELECT.
Si des expressions apparaissent dans le SELECT, les colonnes correspondantes doivent
impérativement être renommées.
Le SELECT peut contenir des fonctions de groupes mais pas d'ORDER BY car les lignes d'une
table ne peuvent pas être classées.
On peut, et même on doit, quand on crée une table définir les contraintes d'intégrité que devront
respecter les données que l'on mettra dans la table (voir un peu plus bas).
Deux types de modifications sont possibles: ajout d'une colonne et modification d'une colonne
existante. Il n'est pas possible de supprimer une colonne. Par contre une colonne qui n'est plus
utilisée peut être mise à la valeur NULL, auquel cas elle n'occupe plus d'espace disque. Si on
désire vraiment supprimer une colonne, il faut:
La commande suivante permet d'ajouter une ou plusieurs colonnes à une table existante
Base de Données 57
Département Technologies de l’Informatique
Les types possibles sont les mêmes que ceux décrits avec la commande CREATE TABLE.
Si la table contient déjà des lignes, la nouvelle colonne aura des valeurs NULL pour les lignes
existantes.
Il est possible de modifier la définition d'une colonne, à condition que la nouvelle définition
soit compatible avec le contenu de la colonne et en respectant les contraintes suivantes:
dans tous les cas il est possible d'augmenter la taille d'une colonne;
il est possible de diminuer la taille, ou même de changer le type d'une colonne vide;
on peut spécifier NOT NULL si la colonne ne contient aucune valeur NULL;
on peut dans tous les cas spécifier NULL pour autoriser les valeurs NULL.
La table nom_table est alors supprimée. La définition de la table ainsi que son contenu sont
détruits, et l'espace occupé par la table est libéré.
IV LES VUES
Les vues permettent d'assurer l'objectif d'indépendance logique. Grâce à elles, chaque
utilisateur pourra avoir sa vision propre des données.
On a vu que le résultat d'un SELECT est lui-même une table. Une telle table, qui n'existe pas
dans la base mais est créée dynamiquement lors de l'exécution du SELECT, peut être vue
Base de Données 58
Département Technologies de l’Informatique
comme une table réelle par les utilisateurs. Pour cela, il suffit de cataloguer le SELECT en tant
que vue.
Les utilisateurs pourront consulter la base, ou modifier la base (avec certaines restrictions) à
travers la vue, c'est-à-dire manipuler la table résultat du SELECT comme si c'était une table
réelle.
La spécification des noms de colonnes de la vue est facultative. Par défaut, les noms des
colonnes de la vue sont les mêmes que les noms des colonnes résultat du SELECT (si certaines
colonnes résultat du SELECT sont des expressions, il faut renommer ces colonnes dans le
SELECT, ou spécifier les noms de colonne de la vue).
Une fois créée, une vue s'utilise comme une table. Il n'y a pas de duplication des informations
mais stockage de la définition de la vue.
Exemple: Création d'une vue constituant une restriction de la table emp aux employés du
département 10.
Il est possible d'effectuer des insertions et des modifications à travers des vues, sous deux
conditions:
UPDATE emp10
SET sal = sal *1.1;
Toutes les lignes de la table emp, telles que le contenu de la colonne n_dept est égal à 10 seront
modifiées.
Base de Données 59
Département Technologies de l’Informatique
V LES INDEX
V.1 INTRODUCTION
Selon le modèle relationnel les sélections peuvent être faites en utilisant le contenu de
n'importe quelle colonne et les lignes sont stockées dans n'importe quel ordre.
SELECT *
FROM emp
WHERE nom = 'Mohamed’
Un moyen de retrouver la ou les lignes pour lesquelles nom est égal à Mohamed est de balayer
toute la table.
Un tel moyen d'accès conduit à des temps de réponse prohibitifs pour des tables dépassant
quelques centaines de lignes.
Une solution offerte par tous les systèmes de gestion de bases de données est la création
d'index, qui permettra de satisfaire aux requêtes les plus fréquentes avec des temps de réponse
acceptables.
Un index sera matérialisé par la création de blocs disque contenant des couples
(valeurs d'index, numéro de bloc) donnant le numéro de bloc disque dans lequel se trouvent les
lignes correspondant à chaque valeur d'index.
Base de Données 60
Département Technologies de l’Informatique
Créer un index
dans laquelle l'option UNIQUE indique que l'on interdit que deux lignes aient la même valeur
dans la colonne indexée.
Un index peut être créé dynamiquement sur une table contenant déjà des lignes. Il sera ensuite
tenu à jour automatiquement lors des modifications de la table.
Un index peut porter sur plusieurs colonnes, la clé d'accès sera alors la concaténation des
différentes colonnes.
Supprimer un index
L'espace libéré reste attaché au segment d'index de la table: il pourra être utilisé pour un autre
index sur la même table.
L'espace ne sera rendu à la partition que lors de la suppression de la table.
Base de Données 61
Département Technologies de l’Informatique
Les privilèges sur un objet (TABLE, VIEW) sont distribués soit pour un utilisateur
donné, soit pour tout le monde (PUBLIC).
La syntaxe:
La syntaxe:
Base de Données 62
Département Technologies de l’Informatique
SERIE D’EXERCICES
Exercice 1:
Questions
Base de Données 63
Département Technologies de l’Informatique
CHAPITRE 6
LE LANGAGE SQL:
LANGAGE DE MANIPULATION DE
DONNEES
Objectifs
Maîtriser le langage de manipulation de données.
Appliquer le LMD à des exemples.
Plan du chapitre
I INTRODUCTION
II INTERROGER SIMPLEMENT UNE BASE
III LES JOINTURES
IV LES SOUS INTERROGATIONS
V LES OPERATEURS ENSEMBLISTES
VI LES FONCTIONS DE GROUPE
VII LA MISE A JOUR D’UNE BASE
Base de Données 64
Département Technologies de l’Informatique
I INTRODUCTION
Ce chapitre expose la partie du langage SQL permettant de retrouver des informations
stockées dans une base de données. Il s'agit, d'un langage déclaratif dont la syntaxe est très
simple (comme beaucoup de langages de ce type) ce qui permet de se concentrer sur le
problème à résoudre.
Les exemples de ce chapitre sont bâtis sur une base de données composée des deux relations
suivantes:
dept(n_dept, nom,lieu)
La commande SELECT constitue, à elle seule, le langage permettant d'interroger une base de
données. Elle permet:
On peut introduire un commentaire à l'intérieur d'une commande SQL en l'encadrant par /* */.
Base de Données 65
Département Technologies de l’Informatique
SELECT *
FROM nom_table;
Dans laquelle:
nom_table est le nom de la table sur laquelle porte la sélection.
* signifie que toutes les colonnes de la table sont sélectionnées.
Par défaut toutes les lignes sont sélectionnées. On peut limiter la sélection à certaines colonnes,
en indiquant une liste de noms de colonnes à la place de l'astérisque.
La clause WHERE permet de spécifier quelles sont les lignes à sélectionner. Elle est
suivie d'un prédicat qui sera évalué pour chaque ligne de la table. Les lignes pour lesquelles le
prédicat est vrai seront sélectionnées.
SELECT *
FROM nom_table
WHERE predicat;
Base de Données 66
Département Technologies de l’Informatique
Un prédicat est constitué à partir d'expressions que l'on compare entre elles.
expr1 BETWEEN expr2 AND expr3: vrai si expr1 est compris entre
expr2 et expr3, bornes incluses.
expr1 IN (expr2, expr3,...): vrai si expr1 est égale à l'une des
expressions de la liste entre parenthèses.
expr LIKE chaine: où chaine est une chaîne de caractères pouvant
contenir l'un des caractères jokers:
_ remplace exactement 1 caractère
% remplace une chaîne de caractères de longueur quelconque, y
compris de longueur nulle.
Exemple: Quels sont les employés dont la commission est supérieure au salaire?
Base de Données 67
Département Technologies de l’Informatique
SELECT nom
FROM emp
WHERE nom LIKE 'M%';
Les opérateurs logiques AND (et) et OR (ou inclusif) peuvent être utilisés pour combiner entre
eux plusieurs prédicats. L'opérateur NOT placé devant un prédicat en inverse le sens.
L'opérateur AND est prioritaire par rapport à l'opérateur OR. Des parenthèses peuvent être
utilisées pour imposer une priorité dans l'évaluation du prédicat, ou simplement pour rendre
plus claire l'expression logique.
Exemple: Quels sont les employés du département 30 ayant un salaire supérieur à 250?
SELECT nom
FROM emp
WHERE n_dept = 30
AND salaire > 250;
La requête précédente donnerait le même résultat sans les parenthèses, résultat différent de
celui du SELECT suivant.
Valeurs NULL
Pour SQL, une valeur NULL est une valeur non définie. Il est possible d'ajouter une ligne à une
table sans spécifier de valeur pour les colonnes non obligatoires: ces colonnes absentes auront
la valeur NULL.
Base de Données 68
Département Technologies de l’Informatique
Par exemple les employés dont la rémunération ne prend pas en compte de commission auront
une valeur NULL, c'est-à-dire indéfinie, comme commission.
L'opérateur IS NULL permet de tester la valeur NULL: le prédicat expr IS NULL est vrai si
l'expression a la valeur NULL (c'est-à-dire si elle est indéfinie).
SELECT nom
FROM emp
WHERE comm IS NULL;
Remarques
La valeur NULL est différente de la valeur zéro qui, elle, qui est une valeur bien
définie.
Le prédicat expr = NULL est toujours faux, et ne permet donc pas de tester si
l'expression a la valeur NULL.
Une expression de la forme NULL + val donne NULL comme résultat quelle que puisse
être la valeur de val.
Nom de colonne
Les colonnes constituant le résultat d'un SELECT peuvent être renommées dans le
SELECT, ceci est utile en particulier lorsque la colonne résultat est une expression. Pour cela,
il suffit de faire suivre l'expression définissant la colonne d'un nom, selon les règles suivantes:
le nom (30 charactères maximum) est inséré derrière l'expression définissant la colonne,
séparé de cette dernière par un espace.
si le nom contient des séparateurs (espace, caractère spécial), ou s'il est identique à un
mot clé de SQL (ex: DATE), il doit être mis entre guillemets "".
Ce nom est celui sous lequel la colonne sera connue des interfaces externes. Sous SQLPLUS,
par exemple, il constituera le titre par défaut de la colonne, et servira de référence pour définir
un format pour la colonne.
Les lignes constituant le résultat d'un SELECT sont obtenues dans un ordre
indéterminé. On peut, dans un SELECT, demander que le résultat soit classé dans un ordre
ascendant ou descendant, en fonction du contenu d'une ou plusieurs colonnes (jusqu'à 16
Base de Données 69
Département Technologies de l’Informatique
critères de classement possibles). Les critères de classement sont spécifiés dans une clause
ORDER BY dont la syntaxe est la suivante:
Le classement se fait d'abord selon la première colonne spécifiée dans l'ORDER BY puis les
lignes ayant la même valeur dans la première colonne sont classées selon la deuxième colonne
de l'ORDER BY, etc... Pour chaque colonne, le classement peut être ascendant (par défaut) ou
descendant (DESC).
L'ORDER BY peut faire référence à une colonne par son nom ou par sa position dans la liste
des colonnes présentes derrière le SELECT (la première colonne sélectionnée a le numéro 1, la
deuxième a le numéro 2,...).
Exemple: Donner tous les employés classés par fonction, et pour chaque fonction classés par
salaire décroissant
Remarque: Dans un classement les valeurs NULL sont toujours en tête quel que soit l'ordre du
classement (ascendant ou descendant).
Exercice
Liste des employés ayant une commission (non nulle), classée par commission décroissante.
Base de Données 70
Département Technologies de l’Informatique
SELECT...
FROM nom_table1, nom_table2...
WHERE predicat;
Si on ne précise pas de condition de sélection, le résultat obtenu sera le produit cartésien des
tables présentes derrière le FROM.
Il n'existe pas d'associations implicites ou explicites entre les tables dans SQL. Les associations
entre les tables sont définies dynamiquement lors des interrogations, ce qui contribue à la
grande souplesse du langage SQL et rend possible toute association même si elle n'a pas été
prévue lors de la définition et du chargement de la base.
Equi-jointure
Le rapprochement de chaque ligne de la table EMP avec la ligne de la table DEPT ayant
même numéro de département permet d'obtenir la liste des employés avec la localité dans
laquelle ils travaillent. Ce rapprochement entre deux colonnes appartenant à deux tables
différentes mais ayant le même sens (ici le numéro de département) et venant
vraisemblablement d'une relation 1-n lors de la conception (ici 1 entité département pour n
entités employés) est assez naturel. C'est pourquoi ce type de jointure porte le nom de jointure
naturelle ou d'équi-jointure.
Exemple: Donner pour chaque employé son nom et son lieu de travail.
Le fait que la colonne contenant le numéro de département ait le même nom dans les deux
tables a rendu nécessaire le préfixage par le nom de table dans le critère de jointure (clause
WHERE ). Le nom de colonne NOM a lui aussi besoin d'être préfixé car il appartient aux deux
tables (nom de la personne dans l'une et nom du département dans l'autre). Par contre le nom de
colonne LIEU n'a pas besoin d'être préfixé car il n'y a pas d'ambiguïté sur la table à laquelle
cette colonne appartient.
Il peut être utile de rassembler des informations venant d'une ligne d'une table avec des
informations venant d'une autre ligne de la même table.
Base de Données 71
Département Technologies de l’Informatique
Remarque: Dans ce cas, il faut impérativement renommer au moins l'une des deux occurrences
de la table en lui donnant un synonyme, afin de pouvoir préfixer sans ambiguïté chaque nom de
colonne.
Autres jointures
Le critère d'égalité est le critère de jointure le plus naturel. Mais on peut utiliser d'autres
types de comparaisons comme critères de jointures.
Jointure externe
Lorsqu'une ligne d'une table figurant dans une jointure n'a pas de correspondant dans les
autres tables, elle ne satisfait pas au critère d'équi-jointure et donc ne figure pas dans le résultat
de la jointure.
Une option permet de faire figurer dans le résultat les lignes satisfaisant la condition d'équi-
jointure plus celles n'ayant pas de correspondant. Cette option s'obtient en accolant (+) au nom
de colonne de la table dans laquelle manquent des éléments, dans la condition d'équi-jointure.
Exemple: Le département 40 ne figurait pas dans le résultat du Select Précédent. Par contre, il
figurera dans le résultat du SELECT suivant.
Le (+) peut s'interpréter comme l'ajout d'une ligne fictive dont toutes les colonnes ont la valeur
NULL, et qui réalise la correspondance avec les lignes de l'autre table qui n'ont pas de
correspondant réel. Dans l'exemple ci-dessus, la valeur de NOM associée au département 40 est
la valeur NULL.
Base de Données 72
Département Technologies de l’Informatique
Exemple: Quels sont les employés ayant la même fonction que Mohamed?
SELECT nom
FROM emp
WHERE fonction = (SELECT fonction
FROM emp
WHERE nom ='Mohamed');
Remarques
une sous-interrogation qui ne ramène aucune ligne se termine avec un code d'erreur.
une sous-interrogation ramenant plusieurs lignes provoquera aussi, dans ce cas, une
erreur (pour traiter correctement ce cas, voir paragraphe ci-dessous)
l'opérateur IN
les opérateurs obtenus en ajoutant ANY ou ALL à la suite d'un opérateur de
comparaison classique (=, !=, >, >=, <, <=)
ANY: la comparaison est vraie si elle est vraie pour au moins un des éléments
de l'ensemble.
ALL: la comparaison sera vraie si elle est vraie pour tous les éléments de
l'ensemble.
Base de Données 73
Département Technologies de l’Informatique
Exemple: Quels sont les employés gagnant plus que tous les employés du département 30.
Il est possible de comparer le résultat d'un SELECT ramenant plusieurs colonnes à une
liste de colonnes. La liste de colonnes figurera entre parenthèses à gauche de l'opérateur de
comparaison.
Exemple: Quels sont les employés ayant même fonction et même supérieur que Mohamed?
Exemple: Quels sont les employés ne travaillant pas dans le même département que leur
supérieur hiérarchique.
SELECT nom
FROM emp e
WHERE n_dept != (SELECT n_dept
FROM emp
WHERE e.n_sup = num)
AND n_sup IS NOT NULL;
Exemple: quels sont les employés travaillant dans un département qui a procédé à des
embauches depuis le début de l’année 94
SELECT *
FROM emp e
WHERE Exits (SELECT *
FROM emp
WHERE embauche >= ’01-01-94’
AND n_dept = e.n_dept);
l'union: UNION
l'intersection: INTERSECT
la différence relationnelle: MINUS
SELECT...
{UNION | INTERSECT | MINUS
SELECT...
Pour cette section on supposera que deux tables EMP1 et EMP2 contiennent les informations
sur des filiales de l’entreprise.
Base de Données 75
Département Technologies de l’Informatique
Exemple: liste des départements qui ont des employés dans les deux filiales
Exemple: liste des départements qui ont des employés dans la première filiale mais pas dans la
deuxième
DISTINCT
Indique à la fonction de groupe de ne prendre en compte que des valeurs distinctes.
ALL
Indique à la fonction de groupe de prendre en compte toutes les valeurs, c'est la valeur
par défaut.
Base de Données 76
Département Technologies de l’Informatique
SELECT SUM(salaire)
FROM emp
WHERE n_dept = 10;
Exemple: Donner le nom, la fonction et le salaire de l'employé (ou des employés) ayant le
salaire le plus élevé.
Ces SELECT sont différents de ceux vus précédemment. Il est, par exemple, impossible
de demander en résultat à la fois une colonne et une fonction de groupe.
un SELECT comportant une fonction de groupe peut être utilisé dans une sous-
interrogation.
Valeurs NULL: Aucune des fonctions de groupe ne tient compte des valeurs NULL à
l'exception de count(*). Ainsi, SUM(col) est la somme des valeurs non NULL de la
colonne col. De même AVG est la somme des valeurs non NULL divisée par le nombre
de valeurs non NULL.
Il est possible de subdiviser la table en groupes, chaque groupe étant l'ensemble des
lignes ayant une valeur commune. C'est la clause GROUP BY qui permet de découper la table en
plusieurs groupes:
Si on a une seule expression, ceci définit les groupes comme les ensembles de lignes
pour lesquelles cette expression prend la même valeur. Si plusieurs expressions sont présentes
les groupes sont définis de la façon suivante: parmi toutes les lignes pour lesquelles expr_1
prend la même valeur, on regroupe celles ayant expr_2 identique,... Un SELECT de groupe
avec une clause GROUP BY donnera une ligne résultat pour chaque groupe.
Base de Données 77
Département Technologies de l’Informatique
Le prédicat dans la clause HAVING suit les mêmes règles de syntaxe qu'un prédicat figurant
dans une clause WHERE .
Cependant, il ne peut porter que sur des caractéristiques du groupe: fonction de groupe ou
expression figurant dans la clause GROUP BY, dans ce cas la clause HAVING doit être placée
après la clause GROUP BY.
Exemple: Donner la liste des salaires moyens par fonction pour les groupes ayant plus de deux
employés.
SELECT fonction,COUNT(*),AVG(salaire)
FROM emp
GROUP BY fonction
HAVING COUNT(*) > 2;
Remarque: Un SELECT de groupe peut contenir à la fois une clause WHERE et une clause
HAVING. La clause WHERE sera d'abord appliquée pour sélectionner les lignes, puis les
groupes seront constitués à partir des lignes sélectionnées, et les fonctions de groupe seront
évaluées.
Base de Données 78
Département Technologies de l’Informatique
SELECT n_dept,COUNT(*)
FR1OM emp
GROUP BY n_dept
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM emp
GROUP BY n_dept);
Exemple: la fonction MAX peut être appliquée aux nombres d'employés de chaque
département pour obtenir le nombre d'employés du département ayant le plus d'employés.
SELECT MAX(COUNT(*))
FROM emp
GROUP BY n_dept;
L'unité manipulée est la ligne. Il existe trois commandes SQL permettant d'effectuer les trois
types de modifications des données: ajout, modification et suppression.
Insertion de lignes
La commande INSERT permet d'insérer une ligne dans une table en spécifiant les
valeurs à insérer. La syntaxe est la suivante:
La liste des noms de colonne est optionnelle. Si elle est omise, la liste des colonnes sera par
défaut la liste de l'ensemble des colonnes de la table dans l'ordre de la création de la table.
Si une liste de colonnes est spécifiée, les colonnes ne figurant pas dans la liste auront la valeur
NULL.
Base de Données 79
Département Technologies de l’Informatique
Il est possible d'insérer dans une table des lignes provenant d'une autre table. La syntaxe
est la suivante:
Le Select Peut contenir n'importe quelle clause sauf un ORDER BY qui impliquerait un
classement des lignes contraire à l'esprit du relationnel.
Exemple: Insérer dans la table bonus les noms et salaires des directeurs.
Modification de lignes
UPDATE nom_table
SET nom_col1 = {expression1 | (SELECT...) },
nom_col2 = {expression2 | (SELECT...) }
...
nom_colp = {expressionp | (SELECT...) }
WHERE predicat
Les valeurs des colonnes <nom_col1, nom_col2,..., nom_colp sont modifiées dans toutes les
lignes satisfaisant au prédicat. En l'absence d'une clause WHERE , toutes les lignes sont mises
à jour.
Les expressions expression1, expression2,... peuvent faire référence aux anciennes valeurs de la
ligne.
UPDATE emp
SET salaire = salaire * 1.1
WHERE fonction = 'ingenieur';
Base de Données 80
Département Technologies de l’Informatique
Suppression de lignes
DELETE FROM
nom_table
WHERE predicat;
Toutes les lignes pour lesquelles prédicat est évalué à vrai sont supprimées. En l'absence de
clause WHERE , toutes les lignes de la table sont supprimées.
Base de Données 81
Département Technologies de l’Informatique
SERIE D’EXERCICES
Exercice 1:
Exercice 2:
Base de Données 82
Département Technologies de l’Informatique
Exercice 3:
Exercice 4:
Exercice 5:
Base de Données 83
Département Technologies de l’Informatique
Base de Données 84
Département Technologies de l’Informatique
Bibliographie
ie
- Gardarin G., Bases de Données - objet/relationnel, Eyrolles, 1999.
Eyrolles, 1998.
- Miranda S.M. & Busta J.M., L’Art des Bases de Données, Eyrolles, 1990
Base de Données 85