Vous êtes sur la page 1sur 34

Cours de Base de Données (60 h)

MI 2A
-----------------------------
Plan du cours
Introduction
I. Concepts de base des BDD
II. Etapes de modélisation
III. Le langage SQL de manipulation des données

Chapitre I. Concepts de base des BDD

Introduction
Environnement d’entreprise
- Décomposition par fonction : organigramme
- Décomposition par domaines d’activité
- Décomposition des domaines en processus
- Notion de processus,
o données, bruit, traitements,
o information non structurée
- Approche BDD : automatisation par modélisation et structuration des données

I.1. Les systèmes de gestion de fichiers

I.1.1. Définition

Les systèmes de gestion de fichiers sont liés aux systèmes d’exploitation. Le concept
de fichier est implémenté par les langages de programmation dont ceux de troisième
génération après l’assembleur offrant des primitives de manipulation des fichiers. Le langage
C permet d’illustrer ce concept de base de la programmation avec la manipulation de fichier
qui exige trois niveaux d’intervention et trois couches logicielles :
- Gestion du support physique : disques durs, disquette, streamers…
o Couche logicielle : pilote d’entrées-sorties (Driver)
- Gestion des structures internes des fichiers, et des méthodes d’accès : ouverture,
fermeture, lecture, écriture…
o Couche logicielle : système de gestion de fichiers (SGF)
- Gestion des contenus : calculs, tests, affichages ...
o Couche logicielle : programmes applicatifs : interaction avec les données

1
I.1.2. Limites

L’utilisation de fichiers impose à l’utilisateur de connaître :


- le mode d’accès (séquentielle, indexée, …)
- la structure physique des enregistrements
- et la localisation des fichiers qu’il utilise afin de pouvoir accéder aux informations
dont il a besoin.

Le principe d’usage des fichiers impose pour p le développement de toute nouvelle


application l’obligation d’écrire
écrire de nouveaux programmes et de créer éventuellement de
nouveaux fichiers engendrant au besoin une duplication des informations déjà présentes dans
d’autres fichiers (redondances des données).
données)
De même, touteoute modification de la structure des enregistrements (ajout d’un champ
par exemple) entraîne la réécriture de tous les programmes
programmes qui manipulent ces fichiers.

I.2. Les bases de données

Une base de données est un ensemble d’informations structurées.


structurées. Elle est utilisée pour
faciliter la mise en place des
es applications informatiques de gestion des données dans divers
domaines du monde réel.. Elles font l’objet d’opérations suivantes :
- stockage permanent sur un support,
- mises à jour,
- interrogation,
- partage d’information en servant de support à une ou plusieurs applications.
applications

De façon générale, une


ne collection de données est appelée base de données si :
- Elle dispose d’un format connu (défini au niveau du système et non uniquement au
niveau des programmes utilisant les données) et défini par des métadonnées (données
décrivant des données).
données). La conception du format de la base conduit à une u
implémentation indépendante des programmes appelés à manipuler ces données. Les
métadonnées sont constituées des tables et des champs qui permettent de stocker les
données.

2
- Les données sont stockées, recherchées, modifiées uniquement par un type spécial de
programmes appelé système de gestion de bases de données.
données
- Les données sont manipulées sous le contrôle de transactions (ensemble de règles
formelles assurant l’intégrité des données).
données

L’exploitation d’une base de données nécessite l’utilisation d’un système informatique


appelé SGBD ou Système de Gestion des Bases de Données.

I.3. Les Systèmes de gestion de bases de données (SGBD)

I.3.1. Définition

Un SGBD est un logiciel informatique spécialisé dans le traitement de gros volumes


d’informations et permettant à différents utilisateurs d’interagir
eragir avec la base de données à
travers les opérations suivantes :
- Mise en forme et sauvegarde
auvegarde des données,
- Mise à jour des données par la modification,
modification l’insertion, la suppression, …
- Recherche d’information multim critères.
Pour le développement et la mise en place d’une
d e BDD, le SGBD se présente en un
ensemble
nsemble de programmes et de langages de commande permettant :
- De définir les structures des "bases de données" et des relations entre
ent les éléments de
chaque base,
- De spécifier le traitement de ces données : interrogations, mises à jour, calculs,
extractions, ...

I.3.2. Représentation schématique

Le SGBD reçoit des commandes des programmes applicatifs


applicati et des utilisateurs et
commande les manipulations de données, généralement
nt par l'intermédiaire d'un SGF comme
illustré par la figure ci-dessous
dessous :

I.3.3. Fonctionnalités d’un SGBD

3
Le SGBD assure diverses fonctionnalités synthétisées dans la liste suivante :
- Contrôle de la redondance des informations,
- Partage des données entre les utilisateurs et entre les applications,
- Assurance de la fiabilité des données, de leur cohérence,
- Vérification des contraintes d’intégrité des données,
- Assurance de la sûreté du fonctionnement du système global,
- Implémentation de la notion de transaction atomique,
- Offre des techniques de sauvegarde et/ou de journalisation,
- Offre des procédures de reprise sur panne,
- Assurance de la sécurité d’accès aux données,
- Offre des commandes d’autorisation de manipulation des données,
- Implémentation du système de partage et d’accès concurrents,
- Offre des techniques de verrouillage des enregistrements,
- Offre des langages de requêtes pour l’interrogation de la BDD,
- Offre d’un langage de programmation avec interfaces,
- Résolution des problèmes de dysfonctionnement (typage et traitement ensembliste)

I.4. Les modèles de SGBD

Il existe cinq modèles de SGBD différenciés selon leur format de représentation des
données. Bien que chaque modèle soit adapté à des cas spécifiques, les 3 premiers constituent
des évolutions du système de représentation interne des données. Il s’agit du modèle
hiérarchique, du modèle réseau, du modèle relationnel qui constitue une étape centrale de la
première évolution. Les modèles additionnels sont constitués du modèle déductif et du modèle
objet.

I.4.1. Le modèle hiérarchique

Le modèle hiérarchique constitue le premier modèle de SGBD. Il classe les données


dans une organisation hiérarchique qui traduit les relations de type père-fils entre les tables. Il
génère ainsi une structure arborescente descendante qui impose la connaissance à priori de
cette structure de l’arbre pour accéder aux données. De plus, le changement de cette structure
impose le changement des algorithmes qui permettent d’accéder et de manipuler les données.
L’exemple ci-dessous représentant un système de gestion de la facturation des clients d’une
société de réparation d’ordinateurs permet d’illustrer cette organisation des données :

Client

Facture

Produit Matériel Prestation

4
I.4.2. Le modèle réseau

Le modèle réseau se base des liaisons logiques entre des données regroupées en
entités. Ces liaisons logiques se traduisent par le regroupement de ces données en relation
entre elles les unes à proximité des autres sur le disque.
Exemple : le modèle réseau ci-dessous est utilisé pour décrire un système de gestion des
emplois de temps

Enseignant Classe

Matière Horaire

I.4.3. Le modèle relationnel (SGBDR)

Le modèle relationnel est implémenté à l’aide des SGBDR ou Système de Gestion de


Bases de Données Relationnelles. Il regroupe les données en entité et établie des associations
entre elles. Sur l’espace physique, les données sont enregistrées dans des tableaux à deux
dimensions (lignes et colonnes). La manipulation de ces données se fait selon la théorie
mathématique des relations. L’illustration complète sera faite dans le prochain chapitre.
L’exemple ci-dessous représente le cas de liaison entre deux tables représentant une
association entre un client et son compte dans une banque.

Client
NuméroClt NomClt … Compte
NuméroCpte NuméroClt Libelle Débit …

I.4.4. Le modèle déductif

Le modèle déductif conserve la représentation des données sous forme de table comme
dans le modèle relationnel. A la différence, leur manipulation utilise le principe de calcul de
prédicats par usage des relations de la logique mathématique. Une base de données déductive
utilise les deux types de spécification que sont les faits constitués par les données de la base et
les règles d’inférence établies à l’aide des programmes d’exploitation des faits.

5
Il s’agit d’une variante des environnements de l’intelligence artificielle. Les faits sont
spécifiés de façon similaire aux relations en base de données sans nécessité d'inclure les noms
d'attributs. Les règles sont similaires aux vues relationnelles. Elles spécifient des relations
virtuelles qui ne sont pas stockées mais peuvent être construites à partir des faits.

I.4.5. Le modèle objet

Le modèle objet sera développé en programmation orientée objet. Avec cette approche
appliquée en BDD, les informations sont stockées sous forme d'objets qui représentent des
structures appelées classes. Les classes contiennent des données membres structurées sous
forme de champs. Les enregistrements constituent des instances de ces classes.

6
Chapitre II. Les étapes de modélisation

II.1. Définitions

II.1.1. Notion de processus

C’est un ensemble d’opérations déclenchées par un ou plusieurs évènements, qui sont


reliées les unes aux autres, jusqu’à la production d’un résultat à partir duquel le processus
prend fin. Un processus se décompose en deux parties distinctes : les traitements effectués et
les données manipulées par ces traitements.

II.1.2. Bruit et information structurée

La conception des BDD nécessite de procéder au filtrage de l’information de sa forme


non structurée vers sa forme structurée. Les exemples d’un CV ou d’un formulaire
d’inscription comportant des zones à renseigner permettent d’illustrer la notion d’information
structurée. Les lettres administratives ou les lettres de motivation peuvent véhiculer les
mêmes informations que les formulaires et le CV, cependant dans leur forme, l’information
n’est pas structurée et contient du bruit qui doit être épuré lors du stockage. Toute donnée est
assimilée à un bruit si son stockage n’apporte aucune information supplémentaire. L’exemple
suivant illustre le cas où deux réponses identiques dans le fond mais différentes dans la forme
sont écrites de la zone de demande de nom d’un étudiant :
Nom : Ali
Nom : Je m’appelle Ali
La première réponse est libre de tout bruit. A la différence, les caractères « Je m’appelle » de
la deuxième réponse constituent un bruit (de 12 caractères = 12 octets) à ne pas stocker.

II.1.3. Notion de données et de traitements

Les notions de données et des traitements disposent d’une importance primordiale


dans l’automatisation des processus d’une société, une entreprise ou une organisation. Par
exemple dans le processus de gestion des inscriptions, le dossier d’un étudiant est une donnée
tandis que l’étude du dossier est un traitement qui permet d’établir son acceptation ou son
rejet.

II.1.4. La méthode BDD

La méthode BDD est une démarche qui permet de structurer les données d’un
processus regroupées sous le qualificatif "d’informations". La démarche consiste à produire
des modèles successifs, à partir de la liste des documents utilisés dans le processus, jusqu’au
modèle final pouvant être implémenté dans un environnement BDD de l’ordinateur.

La démarche globale est la suivante :


- Recenser les documents utilisés, produire un dictionnaire de données, déduire les
entités et créer un modèle relationnel d’association entre entités ;
- A partir du modèle relationnel, déduire les modèles logique et physique en appliquant
les règles de conversion ;

7
- Proposer la liste des options de l’application finale composée de masques ou écrans
dont la plupart sont dérivés des tables du modèle physique
- Implémenter les masques dans un environnement BDD de l’ordinateur. Les masques
avec leurs fonctionnalités constituent l’application finale de gestion de la base de
données du processus étudié. Notre environnement d’implémentation sera le logiciel
My SQL

Les fonctions d’une application sont les suivantes :


- la création des enregistrements dans la base de données, les enregistrements sont des
informations structurées qui donnent des instances de chaque entité. Exemple : un
étudiant peut être enregistré dans la BDD avec toutes ses caractéristiques ;
- la mise à jour (modification et suppression) des enregistrements de la base ;
- la consultation (sous forme de liste, de recherche selon critère) des enregistrements de
la base ;
- le traitement ou la production des statistiques sur les données ;
- la production des états de sortie
- …

Synthèse des étapes de production du modèle relationnel

1. Elaborer le dictionnaire des données


2. Déduire les entités
3. Déduire les associations entre entités
4. Placer les cardinalités pour finaliser la production du modèle relationnel

II.2. Elaboration du dictionnaire de données

Le dictionnaire des données est un tableau qui permet de recenser, de classer et de trier
toutes les informations (les données) collectées lors des entretiens ou de l’étude des
documents. Il comporte des infirmations élémentaires selon le niveau de granularité imposé
par la nature du processus à automatiser. Par exemple, la date est une information élémentaire
pour le paiement d’une facture d’électricité alors qu’elle impose un niveau de décomposition
pour plus de granularité dans le cas d’une assurance pour laquelle l’année, le mois, le jour,
l’heure, disposent d’une importance capitale. Il est élaboré à partir des opérations suivantes :
- Analyse du recueil de données,
- Construction de la liste des données,
- Elimination des données redondantes directes ou indirectes,
- Conservation des données les plus pertinentes.

Il se présente sous la forme d’un tableau à 4 colonnes, qui sont les suivantes :
- Nomenclature : permet au concepteur de définir une abréviation de chaque
information élémentaire qui sera utilisée dans la suite des modèles. La règle à utiliser
pour le nommage est la même que celle des noms des variables en programmation.
- Libellé : décrit chaque information élémentaire
- Type : indique si l’information élémentaire comporte une valeur de type "Numérique",
"Alphanumérique" ou "Alphabétique"
- Taille : donne la taille maximale en nombre d’octets de l’information élémentaire.

NB :
- Chaque information élémentaire est en instance unique dans le dictionnaire,

8
- Les informations calculées sont exclues du dictionnaire, Seules les informations
permettant d’effectuer ce calcul seront retenues. Exemple, le Prix unitaire et la
quantité seront retenus mais pas le montant qui provient de la multiplication entre ces
deux informations

II.2.1. Formalisme

Nomenclature Libellé Type Taille

II.2.2. Déduction de la taille d’une information élémentaire

- Si le champ est de type alphabétique (A) ou alphanumérique (AN), la taille du champ


en nombre d’octets est égale au nombre de caractères contenus dans la plus grande
information que ce champ permettra de stocker.
Exemple :
Si dans un champ C il ne sera possible que de placer un mot de l’alphabet
française, alors la taille de C = 25 octets (le mot le plus long est
Anticonstitutionnellement, contenant 25 caractères)

- Si le champ est utilisé pour stocker une valeur numérique (N) non signée, la valeur
maximale du champ sert de clé de recherche de l’intervalle [Min, Max] auquel
appartient la taille du champ. Un nombre d’octets est associé à chaque intervalle.
o 1 octet (8 bits) : Min = 0, Max = 255 (= -1 + 2 à la puissance 8)
⇒ si la valeur maximale du champ ∈ [0, 255], alors la taille est 1 octet
o 2 octets (16 bits) : Min = 0, Max = 65535 (= -1 + 2 à la puissance 16)
⇒ si la valeur maximale du champ ∈ [255, 65535], alors la taille est 2 octets
o 3 octet (24 bits) : Min = 0, Max = 16 777 216 (= -1 + 2 à la puissance 24)
⇒ si la valeur maximale du champ ∈ [65535, 224-1], alors la taille est 3 octets
o …

- Les autres formats de stockage des valeurs numériques signées peuvent être utilisés
(voir le cours d’architecture 1ère année). Il s’agit de la MVS, MC1, MC2.

II.2.3. Phases d’élaboration du dictionnaire des données et exercice d’illustration

Phases d’élaboration du dictionnaire des données

1. recenser les documents utilisés


2. déduire les informations élémentaires
3. construire le dictionnaire des données.

Exercice d’illustration

Le responsable d’une filière de formation décide d’informatiser sa scolarité. Les


questions qu’il souhaite voir automatisées sont les suivantes :
1. Quelle est la liste des matières d’une classe donnée ?
2. Quelle est la liste des enseignants qui interviennent dans une classe ?
3. Quel est le volume horaire de chaque enseignant intervenant dans la filière ?
4. Quelle est la liste des étudiants d’une classe donnée dans une année académique ?

9
Questions :
1. Proposer un modèle relationnel qui permet de stocker toutes les informations
nécessaires à cette informatisation, déduire le MLD correspondant,
2. Proposer les requêtes SQL permettant de trouver les réponses aux quatre questions
précédentes.

Le dictionnaire des données est le suivant après la phase de recensement :


Désignation Nomenclature Type Taille (octet)
Matricule de l’étudiant MatEtud N 2
Nom de l’étudiant NomEtud A 100
Prénom de l’étudiant PreEtud A 100
Genre de l’étudiant (M/F) GenEtud A 1
Date de naissance de l’étudiant DatNaisEtud AN 10
Lieu de naissance de l’étudiant LieuNaisEtud A 50
Matricule de l’enseignant MatEns N 2
Grade de l’enseignant GradEns AN 20
Nom de l’enseignant NomEns A 100
Prénom de l’enseignant PreEns A 100
Genre de l’enseignant GenEns A 1
Date de naissance de l’enseignant DatNaisEns AN 10
Lieu de naissance de l’enseignant LieuNaisEns A 50
Numéro de la matière NumMat N 1
NomMat Nom de la matière A 50
Volume horaire de la matière VolHorMat N 1
Numéro de la classe NumCls N 1
Nom de la classe NomCls A 10
Année académique AnAcad AN 10

II.2.4. Exercice

Un Etablissement offre des formations à la carte. Les candidats doivent remplir le


formulaire ci-dessous pour le processus d’inscription en ligne. Sur la base des champs de ce
formulaire, remplir les lignes du dictionnaire des données suivant :

Nomenclature Libellé Type Taille

10
Identification du Candidat

Nom : N° Ordre

Prénom :

Adresse Postale :

Ville de résidence :

Code matière :

Nom matière : Enregistrer

Volume horaire :
Liste de matières
Code Matière Nom matière Volume horaire

Réservé à l’administration

Moyenne Annuelle du bulletin : ,

Appréciation : (Rayer la mention inutile) Admis/redouble/Réorienté

Date : (jj/mm/aaaa)
Signature

II.3. Déduction des entités

II.3.1. Définition

Une entité est un objet du réel perçu qui peut être concret ou abstrait, comportant un
ensemble de propriétés qui le décrivent, parmi lesquelles un identifiant. L’identifiant permet
de retrouver de façon unique une instance de cet objet.
Les entités sont déduites du dictionnaire des données par regroupement des
informations élémentaires qu’il contient. Une information élémentaire est extraite une seule
fois du dictionnaire pour être placée dans une entité en fonction de si elle est susceptible
d’être un attribut de cette entité. Si les informations élémentaires constituant une entité ne
comportent pas d’identifiant, il est rajouté à l’entité et au dictionnaire de données. Les
informations élémentaires restant dans le dictionnaire après la déduction de toutes les entités
sont généralement des attributs des associations entre entités. La considération de ces

11
informations élémentaires permet d’appréhender leur nature qui lie les entités déduites du
dictionnaire. A la fin de la déduction des entités et de toutes les associations, le dictionnaire
des données doit être vide.
L’une des règles utilisées pour le regroupement des informations élémentaires consiste
à déterminer l’existence des dépendances fonctionnelles entre elles. Par définition, deux
données A et B sont en dépendance fonctionnelle, si la connaissance de la valeur de A permet
d’identifier une et une seule valeur de B. Leur modélisation est la suivante : Source → Cible.
Exemple : COCLI → NOMCLI.

II.3.2. Formalisme d’une entité

Le formalisme d’une entité est une juxtaposition de 2 rectangles dont l’un est l’entête
comportant le nom de l’entité et le second comportant la liste des attributs ou propriétés de
l’entité commençant par l’identifiant qui apparaît souligné. Les attributs ou propriétés ou
champs sont les informations élémentaires extraites du dictionnaire des données. La figure ci-
dessous illustre ce formalisme :
Nom de l’entité

identifiant
propriété 1
propriété 2

propriété N
L’exemple suivant représente l’entité "véhicule" accompagnée de ses propriétés :
Véhicule

Immatriculation
Marque
Type
Genre
Couleur
II.3.3. Exercice d’illustration

Les entités suivantes peuvent être déduites du dictionnaire des données précédent lié à
l’automatisation d’une filière de formation.

ENSEIGNANT ETUDIANT MATIERE CLASSE

MatEns MatEtud NumMat NumCls


GradEns NomEtud NomMat NomCls
NomEns PreEtud VolHorMat
PreEns GenEtud
GenEns DatNaisEtud
DatNaisEns LieuNaisEtud
LieuNaisEns

12
II.3.4. Exercice

Déduire les entités à partir du dictionnaire précédent lié au formulaire d’inscription


aux formations en ligne à la carte.

II.4. Déduire les associations entre entités

II.4.1. Définition

Une association relie une ou plusieurs entités. Elle traduit la relation qui existe entre
ces entités dans le réel perçu. Elle peut prendre plusieurs formes en fonction des modèles
utilisés. Elles peuvent être porteuses de propriétés. Elles apparaissent différemment dans le
modèle hiérarchique, dans le modèle réseau et dans le modèle relationnel. Elles sont
représentés par des traits portant au besoin des propriétés et des cardinalités à chaque
extrémité.

II.4.2. Modèle relationnel

C’est un modèle extensible qui permet de résoudre les problèmes de cohérence et de


redondance des informations. Il permet également de développer des langages de
manipulation des données ou des langages procéduraux. Le nombre d’entités qui participent à
une relation dans le modèle relationnel est limité au maximum à 3.

Formalisme : Cas d’une relation binaire

E1 E2

Id1 Max1 Id2


pté11 Max2 pté21
pté12 PteA1 pté22
… … …
pté1N Pte AX pté2N

13
Formalisme : Cas d’une relation tri-naire

E2

Id2
pté21
pté22

pté2N

E1 E3
Max1
Id1 Max12 Id3
pté11 Max2 pté31
pté12 PteA1 pté32
… … …
pté1N Pte AX pté3N

NB :
- Dans un modèle relationnel, aucune entité n’apparaît isolée. Toutes les entités forment
un seul ensemble au moyen des relations qui les relient entre elles.

II.5. Les cardinalités

II.5.1. Définition

Les cardinalités permettent de décrire les participations minimales et maximales d’une


entité dans une association. Elles apparaissent sous forme croisée comme indiquée par la
figure ci-dessous. La cardinalité Max1 de E1 est placée du côté de E2 et vice versa pour
Max2. Les cardinalités d’une relation tri-naire sont établies en lisant la relation dans le sens de
sa force binaire entre les deux entités importantes.

Formalisme
Participation Participation
maximale de maximale de
l’entité E2 l’entité E1

E1 E2

Id1 Max1 Id2


pté11 Max2 pté21
pté12 PteA1 pté22
… … …
pté1N Pte AX pté2N

14
Exemple :
Un compte appartient au Un Client peut ouvrir au
maximum à combien de maximum combien de
clients ? Réponse 1 Comptes ? Réponse plusieurs

Client
Compte
1 ∞
NumClt
NumCpteClt
NomClt
CodConfClt
PreClt
TypCpte
AdrClt
VilleClt

II.5.2. Exercice d’illustration

Le modèle relationnel ci-dessous est dérivé de l’’exercice précédent d’automatisation


d’une filière de formation.

ENSEIGNANT ETUDIANT

MatEns MatEtud
GradEns NomEtud
NomEns PreEtud
PreEns GenEtud
GenEns DatNaisEtud
DatNaisEns LieuNaisEtud
LieuNaisEns ∞



∞ MATIERE
CLASSE
NumMat
∞ ∞ NomMat AnAcad
NumCls
NomCls VolHorMat

15
II.6. Règles de passage du modèle relationnel au modèle logique

Le modèle logique (MLD) est constitué essentiellement de tables dérivées du modèle


relationnel. Le formalisme d’une table respecte le modèle ensembliste dans lequel le nom de
l’entité commence la table, suivi d’une parenthèse ouvrante, puis de la liste des propriétés en
commençant par l’identifiant toujours souligné, la parenthèse fermante délimite la fin de la
table.
NOMTABLE(Identifiant, Pte1, Pte2, …)

La démarche recommandable pour la déduction du MLD consiste à :


1. Transformer toutes les entités dans le formalisme d’une table avec leurs propriétés en
suspendant la parenthèse fermante jusqu’à la fin du traitement des associations,
2. Appliquer l’une des 4 règles ci-dessous qui correspond à chaque association au cas par
cas,
3. Fermer toutes les tables avec les parenthèses fermantes après traitement de toutes les
associations.

II.6.1. Règle 1 : cas d’une relation de type père-fils

Les entités se transforment en tables. L’entité dont la cardinalité qui lui est rattachée
est "plusieurs" (∞) est appelée "fils" et porte l’identifiant de l’entité qui participe à 1 appelée
"père". Elle est appelée clé étrangère et est généralement précédée du caractère symbolique
"#". Si l’association porte des propriétés, celles-ci migrent dans l’entité fils.
Illustration :

E1 E2

Id1 1 Id2
pté11 ∞ pté21
pté12 PteA1 pté22
… … …
pté1N Pte AX pté2N

En appliquant la règle, le modèle physique obtenu est le suivant :


E1(Id1, pté11, pté12, …, pté1N, Id2, PteA1, …, PteAX)
E2(Id2, pté21, pté22, …, pté2N)

Exemple : la traduction de la relation entre Etudiant et Classe du modèle relationnel précédent


donne les tables suivantes :
ETUDIANT(MatEtud, NomEtud, PreEtud, GenEtud, DatNaisEtud, LieuNaisEtud,
#NumCls, AnAcad)
CLASSE(NumCls, NomCls)

16
II.6.2. Règle 1 : Cas d’une relation de 1 à 1

Cette relation est forte entre les deux entités et provoquent une migration croisée des
identifiants et des propriétés éventuelles dont elle est porteuse.

Illustration :

E1 E2

Id1 1 Id2
pté11 1 pté21
pté12 pté22
… …
pté1N pté2N

En appliquant la règle, le modèle physique obtenu est le suivant :


E1(Id1, pté11, pté12, …, pté1N, Id2)
E2(Id2, pté21, pté22, …, pté2N, Id1)

II.6.3. Règle 2 : cas d’une relation de ∞ à ∞

Les entités se transforment en tables. L’association devient une table dont l’identifiant
est la concaténation des identifiants des entités qui participent à la relation. Si l’association
porte des propriétés, celles-ci migrent vers la table représentant l’association.
Illustration :

E1 E2

Id1 ∞ Id2
pté11 ∞ pté21
pté12 PteA1 pté22
… … …
pté1N Pte AX pté2N

En appliquant la règle, le modèle physique obtenu est le suivant :


E1(Id1, pté11, pté12, …, pté1N)
E2(Id2, pté21, pté22, …, pté2N)
Ass12(Id1, Id2, PteA1, …, PteAX)

Exemple : la traduction de la relation entre Enseignant et Classe du modèle relationnel


précédent donne les tables suivantes :
ENSEIGNANT(MatEns, GradEns, NomEns, PreEns, GenEns, DatNaisEns,
LieuNaisEns)
CLASSE(NumCls, NomCls)
INTERVENIR(MatEns, NumCls)

17
II.6.4. Règle 3 : cas d’une relation de 3 entités

Les 3 entités se transforment en tables quelque soit les cardinalités. L’association


devient une table dont l’identifiant est la concaténation des 3 identifiants des entités qui
participent à la relation. Si l’association porte des propriétés, celles-ci migrent vers la table
représentant l’association.

Illustration :
E2

Id2
pté21
pté22

pté2N

E1 E3

Id1 Id3
pté11 pté31
pté12 PteA1 pté32
… … …
pté1N Pte AX pté3N

En appliquant la règle, le modèle physique obtenu est le suivant :


E1(Id1, pté11, pté12, …, pté1N)
E2(Id2, pté21, pté22, …, pté2N)
E3(Id3, pté31, pté32, …, pté3N)
Ass123(Id1, Id2, Id3, PteA1, …, PteAX)

Exemple : la traduction de la relation entre Enseignant, Matière et Classe du modèle


relationnel précédent donne les tables suivantes :
ENSEIGNANT(MatEns, GradEns, NomEns, PreEns, GenEns, DatNaisEns,
LieuNaisEns)
CLASSE(NumCls, NomCls)
MATIERE(NumMat, NomMat, VolHorMat)
DISPENSER(MatEns, NumCls, NumMat)

II.6.5. Exercice d’illustration

Le MLD global déduit à partir du modèle relationnel dérivé de l’’exercice précédent


d’automatisation d’une filière de formation est le suivant :

ENSEIGNANT(MatEns, GradEns, NomEns, PreEns, GenEns, DatNaisEns, LieuNaisEns)


ETUDIANT(MatEtud, NomEtud, PreEtud, GenEtud, DatNaisEtud, LieuNaisEtud, #NumCls,
AnAcad)
CLASSE(NumCls, NomCls)
MATIERE(NumMat, NomMat, VolHorMat)

18
LISTE1(NumCls, NumMat)
INTERVENIR(MatEns, NumCls)
DISPENSER(MatEns, NumCls, NumMat)

II.7. La normalisation

II.7.1. Objectif de la normalisation

La normalisation a pour but de structurer les données, de telle façon qu’elles soient
logiquement organisées, en supprimant toute redondance d’informations. Chaque donnée ne
doit être présente qu’une seule fois dans la base. Un schéma de relation qui ne respecte pas
une forme normale, doit être décomposé et adapté aux exigences de la conception qui impose
le respect des règles de chaque forme normale.

II.7.2. Première forme normale (1NF)

Pour qu'une entité soit en première forme normale (1NF), elle :


- doit avoir une clé primaire,
- doit être constituée de champs ou propriétés atomiques c’est à dire non
décomposables. Par exemple dans l’exercice précédent lié au système de gestion de la
scolarité, un attribut qui concatène le Nom et le Prénom de l’étudiant n’est pas
considéré comme atomique.
- ne doit pas contenir d'attributs ou d'ensembles d'attributs qui soient des collections de
valeurs. Il ne doit pas y avoir d’ensembles d’attributs qui soient en fait des listes de
valeurs tels que Article1, Article2, Article3 par exemple.
- ne doit pas avoir plusieurs valeurs séparées par des caractères comme des espaces ou
des virgules. C’est le cas d’une date pour une maison d’assurance à la différence, la
date est une propriété atomique pour l’inscription d’un étudiant.

II.7.3. Deuxième forme normale (2NF)

Pour qu'une entité soit en deuxième forme normale (2NF), il faut :


- qu'elle soit en première forme normale (1NF),
- que tous les attributs ne faisant pas partie de ses clés dépendent des clés candidates
complètes et non pas seulement d'une partie d'entre elles.

La deuxième forme normale est à vérifier sur les tables dont la clé est une composition
d’attributs. Une table en 1FN dont la clé de relation est mono attribut est, par définition, en
2FN.
Exemple :
Soit la table Client(NumCLI, NumAchat, DatAchat, NomCLI, MtAchat, NbPoint)
NB : cette relation n’est pas en 2NF car un attribut dépend d’une partie de la clé. Il faut alors
chercher les dépendances fonctionnelles, la décomposer et la rendre en 2NF. Dans ce cas, elle
sera décomposée en deux tables :
CLIENT(NumCLI, NomCLI)
ACHAT(NumAchat, DatAchat, MtAchat, NbPoint, #NumCLI)

19
II.7.4. Troisième forme normale (3NF)

Pour qu'une entité soit en troisième forme normale (3NF), il faut :


- qu'elle soit en deuxième forme normale (2NF),
- que tous les attributs ne faisant pas partie de ses clés dépendent directement des clés
candidates (tout attribut n’appartenant pas à la clé ne dépend pas d’un attribut non clé.)
La troisième forme normale est à vérifier sur les tables pour lesquelles il existe au
moins deux attributs n’appartenant à la clé. Une table en 2FN comprenant un seul attribut non
clé est, de fait, en 3FN.

II.7.5. Forme normale de Boyce Codd (BCNF)

Dans la pratique, un schéma relationnel dont toutes les tables sont en 3FN est dit
normalisé. Mais dans certains cas, R. Boyce et E. F. Codd ont repéré des faiblesses dans la
3FN. Pour qu'une entité soit en forme normale de Boyce Codd (BCNF), il faut :
- qu'elle soit en troisième forme normale (3NF),
- que tous les attributs ne faisant pas partie de ses clés dépendent exclusivement des clés
candidates.

II.7.6. Résumé des étapes de normalisation

20
Chapitre III. Le langage SQL de manipulation des données

III.1. Définitions

Le SQL (Structured Query Language) est un langage de définition et de manipulation


de bases de données relationnelles. Il a évolué en versions successives comme spécifié dans le
tableau suivant :

Année Version
1986 SQL-86 ou SQL-87
1989 SQL-89 ou SQL1
1992 SQL-92 ou SQL2
1999 SQL99 ou SQL3
2003 SQL:2003
2008 SQL:2008

Le langage SQL est composé de trois parties majeures et distinctes :


- Le DML (Data Manipulation Language) ou LMD (langage de manipulation des
données) : est un ensemble de primitives qui permettent de consulter ou de modifier le
contenu d’une base de données.
- Le DDL (Data Definition Language) ou LDD (langage de définition des données) :
comporte les primitives de modification de la structure de la base de données.
- Le DCL (Data Control Language) ou LCD (langage de contrôle des données) :
regroupe les primitives de gestion des privilèges ou droits des utilisateurs sur la base
de données.

Le langage SQL est un langage de requête qui permet de réaliser des opérations sur les
tables, des opérations de contrôle et des opérations de manipulation des données. Une requête
SQL peut être employée de plusieurs manières :
- Soit seule dans un éditeur de requête fourni par le logiciel de gestion de bases de
données,
- Soit directement intégrée dans un langage de programmation comme :
o phpMyAdmin,
o PHP pour interagir avec le gestionnaire de bases de données MySQL
o …

III.2. Opérations sur les tables

SQL fournit des instructions permettant de créer, supprimer, modifier, renommer des fichiers.
Ces instructions sont les suivantes :
- CREATE,
- DROP,
- ALTER,
- RENAME.

III.2.1. Exemple d’illustration

21
Le MLD suivant sera utilisé comme base d’illustration des différentes primitives qui
seront présentées dans ce chapitre :
Compte(Numcpte, TypeCpte, CodConf, NumClt)
Opération(NumOp, TypOp, DatOp, MtOp)
Client(NumClt, AdrClt, NomClt, PreClt, VilRes)
Effectuer (Numcpte, NumClt, NumOp)

III.2.2. La création simple d’une table

La création d’une table se réalise avec l’ordre CREATE.


Syntaxe :
CREATE TABLE "nom de table"
("colonne 1" "type de données pour la colonne 1",
"colonne 2" "type de données pour la colonne 2",
... )
Exemple : Création de la table Client.
CREATE TABLE Client
(NumClt INTEGER NOT NULL,
AdrClt CHAR(50) NOT NULL,
NomClt CHAR(100),
PreClt CHAR(100),
VilRes CHAR(50)
);

III.2.3. La création d’une table avec une clé primaire

Exemple : Dans la table Client, la clé primaire est NumClt. Une clé primaire est définie en
SQL avec la syntaxe suivante :
CREATE TABLE Client
(NumClt INTEGER NOT NULL,
AdrClt CHAR(50) NOT NULL,
NomClt CHAR(100),
PreClt CHAR(100),
VilRes CHAR(50)
Constraint C1 PRIMARY KEY (NumClt));

La présence d’une deuxième et d’une troisième (etc.) clés est signalée avec l’ajout des lignes
suivantes :
CONSTRAINT C2 PRIMARY KEY (NomChamp)
CONSTRAINT C3 PRIMARY KEY (NomChamp)
etc.

III.2.4. La création d’une table avec une clé étrangère

Exemple : La table Compte contient une clé étrangère NumClt. Cette indication est réalisée de
la façon suivante :

22
CREATE TABLE Compte
(Numcpte INTEGER NOT NULL,
TypeCpte CHAR(50),
CodConf CHAR(10),
NumClt INTEGER NOT NULL,
CONSTRAINT FK1 FOREIGN KEY (NumClt) REFERENCES Client (NumClt));

La présence d’une deuxième et d’une troisième (etc.) clés étrangères est signalée avec l’ajout
des lignes suivantes :
CONSTRAINT FK2 FOREIGN KEY (NomChamp) REFERENCES NomTable
(NomChamp)
CONSTRAINT FK3 FOREIGN KEY (NomChamp) REFERENCES NomTable
(NomChamp)
etc.

III.2.5. La suppression physique de tables

Cette opération est réalisée avec l’ordre SQL DROP.

Exemple : Suppression de la table "Effectuer".


DROP TABLE Effectuer;

III.2.6. Le redimensionnement d’un champ d’une table

Il peut être nécessaire de modifier la structure d’une table par exemple pour ajouter un
champ, redimensionner un champ ou supprimer un champ. Ces opérations sont réalisées avec
la primitive ALTER.

Exemple : Ajouter un champ EMail à la table Client.


ALTER TABLE Client
ADD EMail CHAR(40);

III.2.7. Le redimensionnement d’un champ d’une table

Exemple : Agrandir le champ EMail de la table Client.


ALTER TABLE Client
MODIFY EMail CHAR(60);

III.2.8. La suppression d’un champ dans une table

Exemple : Supprimer le champ EMail de la table Client.


ALTER TABLE Client
DROP COLUMN EMail;

III.2.9. La suppression d’une clé sur une table existante

Exemple : Supprimer la clé sur le champ NumClt de la table Client.


ALTER TABLE Client
DROP CONSTRAINT C1;

23
Exemple Ajouter une clé primaire sur le champ NumClt de la table Client.
ALTER TABLE Client
ADD CONSTRAINT C1 PRIMARY KEY (NumClt);

III.2.10. Le changement de nom d’une table existante

Pour renommer une table, le langage SQL offre la primitive RENAM.

Exemple : Renommer la table Client en Personne.


RENAME TABLE Articles TO Produits;

III.3. Le langage de contrôle des données

Le langage de contrôle des données comprend deux ordres :


- GRANT,
- REVOKE.

III.3.1. Attribution des droits à un utilisateur

GRANT permet de donner des droits à un utilisateur sur une base de données,
REVOKE supprime des droits acquis. GRANT porte sur les options suivantes :

Option Signification
ALTER Donne le droit de modifier la structure de la table
DELETE Donne le droit de supprimer des enregistrements
INSERT Donne le droit d’insérer des enregistrements dans une
table
SELECT Donne le droit d’exécuter des requêtes de sélection
UPDATE Donne le droit de modifier les données d’une table
ALL Donne tous les droits

Exemple 1 : Donner le droit à l’utilisateur Abdoul de modifier la structure de la table Client.


GRANT ALTER
ON Client
TO Abdoul;

Exemple 2 : Donner le droit à l’utilisateur Abdoul d’afficher le contenu de la table Client.


GRANT SELECT
ON Client
TO Abdoul;

Exemple 3 : Donner tous les droits à l’utilisateur Abdoul sur la table Client.
GRANT ALL
ON Client
TO Abdoul;

Exemple 4 : Permettre à tout le monde d’afficher le contenu de la table Client.


GRANT SELECT
ON Client
TO PUBLIC;

24
III.3.2. Suppression des droits

L’ordre REVOKE permet de reprendre tous les droits accordés aux utilisateurs.
Exemple 1 : Enlever le droit donné à Abdoul d’afficher la table Client.
REVOKE SELECT
ON client
FROM Abdoul;

Exemple 2 : Enlever tous les droits donnés sur la table Client à tous les utilisateurs.
REVOKE ALL
ON Client
FROM PUBLIC;

III.4. Opérations sur les données

III.4.1. Format général d’une commande SQL

Syntaxe simple :
Commande attributs
From tables
Where condition ;

Commande = select, insert, delete, update


Attributs = nom_table.champ
Condition = avec les opérateurs de comparaison et/ou opérateurs de connexion (AND, OR,
NOT)

III.4.2. L’insertion des données

Le mot clé INSERT permet l’ajout d’enregistrements dans les fichiers.


Exemple :
INSERT INTO Client(NumClt, AdrClt, NomClt, PreClt, VilRes)
VALUES(1, ’BP410’, ’Idrissa’,’Soumana’, ’Agadez’);
Ou
INSERT INTO Client
VALUES(1, ’BP410’, ’Idrissa’,’Soumana’, ’Agadez’);

III.4.3. La modification des données

Le mot clé UPDATE du langage SQL permet de modifier les données d’un fichier.

Syntaxe :
UPDATE "nom de table"
SET "colonne 1" = [nouvelle valeur]
WHERE {condition} ;

Exemple : Changer tous les types de compte du client 4 en "compte courant"


UPDATE Compte
SET TypeCpte = "compte courant"
WHERE NumClt = 4 ;

25
III.4.4. La suppression des données

La suppression des données se réalise avec le mot clé DELETE du langage SQL.
Syntaxe :
DELETE FROM "nom de table"
WHERE {condition}

Exemple : Supprimer les clients habitant la ville de "Hameaux".


DELETE
FROM Client
WHERE VilRes = ’Hameaux’;

III.4.5. Opérateur de projection

- forme sans restriction : Select [ALL/distinct] attributs


From table ;
- forme avec la restriction WHERE : Select [ALL/distinct] attributs
From table
Where condition;

Le mot réservé DISTINCT permet d’afficher les noms des clients en éliminant les
doublant de tuples.
Exemple : Quels sont les comptes du client de numéro 100 ?
Select Compte.*
From Compte Select Compte.Numcpte, Compte.TypeCpte,
Where Compte.NumClt=100 ; Compte.CodConf
From Compte
Where Compte.NumClt=100 ;
III.4.6. Les tris

Le langage SQL permet d’effectuer des tris selon différents critères en utilisant la
clause ORDER BY avec les mots clés ASC pour l’ordre croissant et DESC pour l’ordre
décroissant. Par défaut le tri est réalisé par ordre croissant.
Exemple 1: Afficher les noms et prénoms des clients triés par noms croissants.
SELECT NomClt, PreClt
FROM Client
ORDER BY NomClt ASC;

III.4.7. Les jointures

La jointure est une opération qui consiste à rapprocher les enregistrements (ou tuples)
de deux tables T1 et T2 selon une condition. Elle produit une troisième table temporaire qui
contient l’ensemble de tous les enregistrements obtenus en concaténant un tuple de T1 avec
tous les tuples de T2 vérifiant la condition de rapprochement.

Exemple 1 : Quelles sont les dates de toutes les opérations effectuées par le client 100?
Select opération.Datop
From opération,effectuer
Where (opération.NumOp=effectuer.NumOp ) AND (effectuer.NumClt=100) ;

26
Exemple 2 : Quels sont les nom et adresse du client propriétaire du compte 234 ?
Select Client.NomClt,Client.AdrClt
From client,compte
Where(client.NumClt=compte.NumClt)AND(compte.NumCpte=234) ;

Exemple 3 : Dans quel compte le client 100 a – t – il effectué l’opération 1 ?


Select Compte.NumCpte,Compte.typeCpte,Compte.Codconf
From Compte,effectuer
Where (effectuer.NumClt=100) AND (effectuer.NumOp=1) AND
(Compte.NumCpte=effectuer.NumCpte);

Exemple 4 : Quels sont les clients ayant effectués au moins une opération le 1/1/2010 ?
Select distinct client.*
From client, operation, effectuer
Where (client.NumClt = effectuer.Numclt) AND (operation.NumOp =
effectuer.Numop) AND (operation.DatOp=”1/1/2010”);

III.4.8. Synonyme d’une table

Il s’agit de la syntaxe SQL qui permet de donner un surnom à une table généralement
dans le but de faciliter l’écriture de la requête et éviter des noms trop longs. Dans l’exemple
ci-dessous, la lettre A est donnée comme surnom à la table Compte et est utilisée partout où
cette table peut être utilisée.
Select A.NumCpte
From Compte A
Where (A.NumClt = 100);

III.4.9. Renommer un attribut à l’affichage avec AS

Il s’agit de la syntaxe SQL qui permet d’afficher un texte à la place d’un attribut d’une
table généralement dans le but de faciliter la compréhension des informations affichées à
l’écran en résultat de la requête. Dans l’exemple ci-dessous, le texte "Numéro de Compte" est
affiché à la place de "NumCpte".
Select A.NumCpte AS Numéro de Compte
From Compte A
Where (A.NumClt = 100);

III.4.10. Les fonctions statistiques

Elles permettent de réaliser des opérations particulières sur les attributs d’une table. Le
tableau suivant présente une liste non exhaustive des fonctions disponibles et qui évoluent
selon les versions du langage SQL.

Mot clé Signification


AVG (Attribut) Calcule la moyenne des valeurs de l’attribut placé entre parenthèses
SUM (Attribut) Calcule la somme des valeurs de l’attribut placé entre parenthèses
MIN (Attribut) Détermine la plus petite valeur de l’attribut placé entre parenthèses
MAX (Attribut) Détermine la plus grande valeur de l’attribut placé entre parenthèses
COUNT Compte le nombre d’occurrence de l’attribut placé entre parenthèses
(Attribut)

27
Exemple 1 : Calculer la moyenne des montants des opérations du client de numéro 1.
SELECT AVG(MtOp) AS Montant Moyen
FROM Opération O, Effectuer E
WHERE (O.NumOp = E.NumOp) AND (E.NumClt = 1);

Exemple 2 : Calculer le nombre de comptes ouverts dans la banque.


SELECT COUNT(Numcpte) AS Nombre de Compte FROM Compte;

III.4.11. L’opérateur BETWEEN

Il est utilisé pour vérifier l’appartenance de la valeur d’un champ d’une table à une
plage de valeur.
Exemple :
Select A.NumOp
From Operation A
Where (A.DateOp between 1/1/2009 and 1/1/2010);

Select NumOp
From Operation
Where (DateOp between 1/1/2009 and 1/1/2010);

III.4.12. L’opérateur IN

Il permet de tester l’appartenance de la valeur d’un champ à un ensemble de valeurs.


Exemple :
Select NumClt
From Client
Where NomClt in ("Moussa", "Moustapha", "Toure");

III.4.13. L’opérateur LIKE

Il permet de comparer des chaînes de caractères. Il peut s’accompagner de méta-


caractères suivants ayant des significations particulières :
- le caractère ‘-‘ remplace un seul caractère
- le caractère ‘%’ remplace une chaine quelconque de plus de 2 caractères.
- L’utilisation de ESCAPE permet d’indiquer la recherche d’une chaîne contenant
n’importe où le caractère désigné. Les caractères spéciaux sont précédés du caractère
‘@’.

Exemple 1 : Donner les noms des clients commençant par la lettre ‘M’.
select NomAut
from Auteur
where PreAut Like ‘M%’ ;

Exemple 2 : Donner les noms des clients qui comportent la lettre ‘M’ à n’importe quelle
place.
Select NumClt
from Client
where NomClt Like ‘%M’ Escape ‘M’ ;

28
III.4.14. Requêtes (ou expression) et sous requêtes (ou sous expression)

Les sous requêtes ou requêtes imbriquées permettent de réaliser des traitements qui
pourraient s’avérer fastidieux à l’aide de plusieurs requêtes simples. Pour simplifier, le rôle
d’une sous requête est d’envoyer le résultat de son traitement dans la requête principale.
Exemple : Rechercher les numéros et les types des opérations dont la date est postérieure à
toutes les opérations de montant supérieur à 100 000.
Select NumOp, TypOp
from Operation
where DatOp > ( select DatOp
from Opération
where MtOp > 100 000);

Exemple : Rechercher les clients habitant la même ville que le client numéro 2 et ayant réalisé
des opérations supérieures à 15 000.
SELECT NomClt, PreClt
FROM Clients C, Effectuer E
WHERE C.VilRes = (SELECT VilRes
FROM Client
WHERE C.NumClt = 2)
AND C.NumClt = E.NumClt
AND E.NumOp IN (SELECT O.NumOp
FROM Opération O
WHERE O.MtOp > 15 000);

III.4.15. Utilisation du mot clé EXISTS

Le mot clé EXISTS permet de tester qu’une sous requête renvoie effectivement un
résultat.
Exemple : Afficher la liste de tous les clients si l’un d’eux habite Agadez.
SELECT NumClt, NomClt, PreClt
FROM Client
WHERE NOT EXISTS ( Select *
FROM Client
WHERE VilRes = ’Agadez’);

III.4.16. Les regroupements

Les regroupements permettent de créer des sous ensembles d’occurrences. Une seule
ligne regroupe ainsi les valeurs identiques en fonction de l’attribut spécifié. La requête
permettant ce regroupement s’exprime en utilisant la clause GROUP BY.

Exemple : Calculer le montant moyen des opérations par Date d’opération, dont le montant
est inférieur ou égal à 15000.
SELECT Catégorie, AVG(MtOp)
FROM Opération
WHERE MtOp <= 15000
GROUP BY DatOp;

29
III.4.17. La valeur NULL ou valeur indéfinie ou inconnue

Le mot réservé NULL est utilisé dans les cas où les valeurs des champs sont
manquantes.
Exemple : Y a-t-il des comptes n’appartenant à aucun client ?
Select Numcpte from Compte where NumClt IS NULL ;
Exemple : Quelles sont les opérations effectuées sur des comptes appartenant aux clients
enregistrés dans la banque ?
Select O.*
From Opération O, Effectuer E
Where (O.NumOp = E.NumOp) AND (E.NumClt IS NOT NULL) ;

III.4.18. L’opérateur INTERSECT

Les opérations portant sur des ensembles sont :


- UNION,
- INTERSECT,
- EXCEPT.

Certains SGBD ne rendent pas fonctionnels les mots clés INTERSECT et EXCEPT du
fait de leur absence de normalisation jusqu’à récemment. De ce fait, le mot clé EXCEPT peut
être remplacé par NOT EXISTS et INTERSECT par EXISTS.
Exemple :
Select NumClt
From Client
Where NomClt in ("Moussa", "Moustapha", "Toure")
INTERSECT
Select NumClt
from Client
where NomClt Like ‘%M’ Escape ‘M’ ;

III.4.19. L’opérateur UNION

Exemple :
Select NumClt From Client
Where NomClt in ("Moussa", "Moustapha", "Toure")
UNION
Select NumClt from Client
where NomClt Like ‘%Z’ Escape ‘Z’ ;

III.5. Exercices

Exercice 1

Soit le MLD suivant :


Cpte(NumCpte, LibCpte)
Jrnl(NumJrnl, NomJrnl)
Ecrit(NumEcr, LibOp, DateEnreg, NumJrnl)
Debt(NumCpte, NumEcr, MtDeb)
Cred(NumCpte, NumEcr, MtCred)

30
I.1. A partir de quel modèle relationnel Ce MLD a – t – il été créé ?
I.2. Proposer des requêtes SQL pour avoir
a) les montants enregistrés en « Debt » et en « Cred » à une date donnée
b) les LibCpte qui n’ont pas fait l’objet d’une « Ecrit »
c) les NomJrnl qui ont été utilisés dans les « Ecrit »

Exercice 2
1. Quel est le modèle relationnel correspondant au MLD suivant :
Prestation
Recu CdPrest
∞ LibPrest
Numrec PriPrest
Dtrec 1


1 1
facture
NumFact
DtFact

1

1
1 1
Materiel Composant
CdMtrl CdCompUt
DegMtrl ∞ NmCompUt
1
Nmcli PriCompUt
DtEntr
DtInter

2. Donner le MLD correspondant à ce modèle relationnel


3. Traduire les questions suivantes en requêtes SQL :
a. Quels sont les matériels ayant fait l’objet d’un dépannage ?
b. Quels sont les matériels ayant été dépanné plus d’une fois ?
c. Quels sont les factures impayées ?
d. Quels sont les prestations facturées à la date du 01/01/2011 ?

III.6. Travaux pratiques

Sujets à développer dans l’environnement Formulaire Web – PHP – My SQL

31
Chapitre I. Concepts de base des BDD ...................................................................................... 1
I.1. Les systèmes de gestion de fichiers ................................................................................. 1
I.1.1. Définition .................................................................................................................. 1
I.1.2. Limites ...................................................................................................................... 2
I.2. Les bases de données ....................................................................................................... 2
I.3. Les Systèmes de gestion de bases de données (SGBD) ................................................... 3
I.3.1. Définition .................................................................................................................. 3
I.3.2. Représentation schématique...................................................................................... 3
I.3.3. Fonctionnalités d’un SGBD ...................................................................................... 3
I.4. Les modèles de SGBD ..................................................................................................... 4
I.4.1. Le modèle hiérarchique............................................................................................. 4
I.4.2. Le modèle réseau ...................................................................................................... 5
I.4.3. Le modèle relationnel (SGBDR) .............................................................................. 5
I.4.4. Le modèle déductif ................................................................................................... 5
I.4.5. Le modèle objet ......................................................................................................... 6
Chapitre II. Etapes de production du modèle relationnel ........................................................... 7
II.1. Définitions ...................................................................................................................... 7
II.1.1. Notion de processus ................................................................................................. 7
II.1.2. Bruit et information structurée ................................................................................ 7
II.1.3. Notion de données et de traitements ........................................................................ 7
II.1.4. La méthode BDD ..................................................................................................... 7
II.2. Elaboration du dictionnaire de données .......................................................................... 8
II.2.1. Formalisme .............................................................................................................. 9
II.2.2. Déduction de la taille d’une information élémentaire ............................................. 9
II.2.3. Phases d’élaboration du dictionnaire des données et exercice d’illustration ........... 9
II.2.4. Exercice ................................................................................................................. 10
II.3. Déduction des entités .................................................................................................... 11
II.3.1. Définition ............................................................................................................... 11
II.3.2. Formalisme d’une entité ........................................................................................ 12
II.3.3. Exercice d’illustration............................................................................................ 12
II.3.4. Exercice ................................................................................................................. 13
II.4. Déduire les associations entre entités ........................................................................... 13
II.4.1. Définition ............................................................................................................... 13
II.4.2. Modèle relationnel ................................................................................................. 13
II.5. Les cardinalités ............................................................................................................. 14
II.5.1. Définition ............................................................................................................... 14
II.5.2. Exercice d’illustration............................................................................................ 15

32
II.6. Règles de passage du modèle relationnel au modèle logique ....................................... 16
II.6.1. Règle 1 : cas d’une relation de type père-fils ........................................................ 16
II.6.2. Règle 1 : Cas d’une relation de 1 à 1 ..................................................................... 17
II.6.3. Règle 2 : cas d’une relation de ∞ à ∞ .................................................................... 17
II.6.4. Règle 3 : cas d’une relation de 3 entités ................................................................ 18
II.6.5. Exercice d’illustration............................................................................................ 18
II.7. La normalisation ........................................................................................................... 19
II.7.1. Objectif de la normalisation .................................................................................. 19
II.7.2. Première forme normale (1NF) ............................................................................. 19
II.7.3. Deuxième forme normale (2NF) ........................................................................... 19
II.7.4. Troisième forme normale (3NF)............................................................................ 20
II.7.5. Forme normale de Boyce Codd (BCNF) ............................................................... 20
II.7.6. Résumé des étapes de normalisation ..................................................................... 20
Chapitre III. Le langage SQL de manipulation des données .................................................... 21
III.1. Définitions ................................................................................................................... 21
III.2. Opérations sur les tables .............................................................................................. 21
III.2.1. Exemple d’illustration .......................................................................................... 21
III.2.2. La création simple d’une table ............................................................................. 22
III.2.3. La création d’une table avec une clé primaire...................................................... 22
III.2.4. La création d’une table avec une clé étrangère .................................................... 22
III.2.5. La suppression physique de tables ....................................................................... 23
III.2.6. Le redimensionnement d’un champ d’une table .................................................. 23
III.2.7. Le redimensionnement d’un champ d’une table .................................................. 23
III.2.8. La suppression d’un champ dans une table .......................................................... 23
III.2.9. La suppression d’une clé sur une table existante ................................................. 23
III.2.10. Le changement de nom d’une table existante .................................................... 24
III.3. Le langage de contrôle des données ............................................................................ 24
III.3.1. Attribution des droits à un utilisateur ................................................................... 24
III.3.2. Suppression des droits .......................................................................................... 25
III.4. Opérations sur les données .......................................................................................... 25
III.4.1. Format général d’une commande SQL ................................................................ 25
III.4.2. L’insertion des données ........................................................................................ 25
III.4.3. La modification des données ................................................................................ 25
III.4.4. La suppression des données ................................................................................. 26
III.4.5. Opérateur de projection ........................................................................................ 26
III.4.6. Les tris .................................................................................................................. 26
III.4.7. Les jointures ......................................................................................................... 26

33
III.4.8. Synonyme d’une table .......................................................................................... 27
III.4.9. Renommer un attribut à l’affichage avec AS ....................................................... 27
III.4.10. Les fonctions statistiques ................................................................................... 27
III.4.11. L’opérateur BETWEEN ..................................................................................... 28
III.4.12. L’opérateur IN .................................................................................................... 28
III.4.13. L’opérateur LIKE ............................................................................................... 28
III.4.14. Requêtes (ou expression) et sous requêtes (ou sous expression) ....................... 29
III.4.15. Utilisation du mot clé EXISTS........................................................................... 29
III.4.16. Les regroupements ............................................................................................. 29
III.4.17. La valeur NULL ou valeur indéfinie ou inconnue ............................................. 30
III.4.18. L’opérateur INTERSECT .................................................................................. 30
III.4.19. L’opérateur UNION ........................................................................................... 30
III.5. Exercices ..................................................................................................................... 30
III.6. Travaux pratiques ........................................................................................................ 31

34

Vous aimerez peut-être aussi