Sunteți pe pagina 1din 83

1

CHAPITRE I. GENERALITE SUR LE SYSTEME


D’INFORMATION
I.1. DEFINITION DES QUELQUES CONCEPTS
I.1.1. INFORMATION

Toute organisation quelle qu’elle soit, doit consacrer une partie de son effort
à récolter, traiter, stocker et diffuser l’information issue de son propre fonctionnement.
L’information est indispensable dans le processus de décision d’une
organisation. 
Ainsi, pour une automatisation réussie, l’information devra être cernée et
classifiée de manière très précise et devra également pouvoir être représentable dans le
système informatique.

I.1.1.2. Les qualités requises

Une information doit réunir les qualités suivantes ;


1. La Pertinence
2. La Précision
3. La Sécurité
4. L’intégrité
5. La Confidentialité
6. Non redondance
7. La Convivialité
8. L’âge
9. La Fréquence
10. Cohérence
11. Rentabilité

Prof KAF
I.1.1.3. Mode de représentation de données
En vue de traiter de manière automatisée, les données doivent être
représentables sous formalisme acceptable par le système informatique qui sera employé.
Les formes de représentation (type ou format) classiques rencontrées en informatique
sont :
 Alphabet (des lettres uniquement) ;
 Alpha numérique (lettre, chiffre, symbole, etc.) ;
 Numérique (nombre)
 Date ;
 Logique booléen (vrai, faux, oui, non).

I.1.2. SYSTEME
Tous travaux informatiques s’effectuent dans un système. Ainsi, il existe
plusieurs définitions du mot SYSTEME.
Le système est un ensemble d’éléments en interaction dynamique, dont les
éléments sont organisés et coordonnées en vue d’atteindre un objectif, qui évolue dans un
même environnement.
Jean Louis LEMOIGNE définit un système comme suit :
 Quelque chose (n’importe quoi identifiable) ;
 Qui fait quelque chose (activité ou fonction) ;
 Qui est doté d’une structure ;
 Qui évolue dans le temps ;
 Dans quelque chose ;
 Pour quelque chose ;
Ainsi la faculté de sciences peut être considérée comme un système
constitué d’éléments en interaction dynamiques.
Du point de vue de la structuration, le système d’entreprise est définit comme suit :

Système de pilotage

Informations traitées

Système d’information

Informations collectées

Système Opérant

Figure 1 : Approche systématique de l’entreprise

Prof KAF
1. Le système de Pilotage 
Définit la politique de développement de l’entreprise, les stratégies qui
peuvent être à court, moyen ou long terme pour atteindre ses objectifs. Il décide des
actions à conduire sur le système opérant en fonction des objectifs et des politiques de
l’entreprise.
Ainsi, le système de pilotage à pour rôle la prise de décision. Une décision
est un choix parmi plusieurs autres. Elle est constituée du comité (les membres du comité
de gestion) ou des membres décisionnels. Il transmet au sous système opérant
2. Le système opérant
Concerne l’ensemble des activités, opérations, effectuées dans l’entreprise.
C’est le système qui exécute les ordres provenant du système de pilotage.
Il est constitué des exécutants. En d’autres termes le système opérant englobe toutes les
fonctions liées à l’activité propre de l’entreprise
Exécute les tâches, produits les biens selon les besoins des utilisateurs, au
système de pilotage Système de décision (ou pilotages, management, etc.). Guide de
l’organisation vers ses objectifs (activités de planifications et de contrôle. Système
opérant ou logistique, technologies, physique, de production, etc.
3. Le système d’information 
C’est le trait d’union entre le système de pilotage et le système opérant 
Ainsi, le système d’information peut être définit comme l’ensemble des informations
internes et externes circulants dans l’entreprise.

I.1.2.1 Système d’information

a. Définition
Le système d’information est un ensemble des moyens (humains et
matériels) et des méthodes se rapportant au traitement de l’information d’une
organisation. Ou encore l’ensemble des informations circulant dans l’organisation, elle est
le trait d’union entre le système de pilotage et le système opérant.
 Le système de pilotage décide des actions à conduire sur le système opérant en
fonction des objectifs et des politiques de l’entreprise,
 Le système opérant englobe toutes les fonctions liées à l’activité propre de
l’entreprise
 Le système d’information assurera le lien entre deux autres systèmes de
l’entreprise : le système opérant et le système de pilotage.
b. Rôle du système d’information

Dans la pratique, le rôle du système d’information peut être schématisé


comme suit :

Prof KAF
INFORMATIONS EXTERNES
INFORMATIONS INTERNES
ECRITES
ECRITES ORALES
ORALES PICTURALES
PICTURALES

APPROBATION

TRAITEMENT BRUT

STRUCTURATION

TRAITEMENT PROPREMENT DIT

RESULTAT

DIFFUSION

UTILISATEURS

Fig. 2 rôle du système d’information

c. Qualité d’un Système D’information

Un système d’information doit posséder les qualités ci-après :


 La fiabilité : le système d’information doit fournir les informations fiables, sans
erreurs, autrement un bon système d’information doit contenir moins d’erreurs
possibles.
 La rapidité : un bon système doit mettre à temps, dans un délai court les
informations ou les résultats à la disposition des utilisateurs.

Prof KAF
 La pertinence : un bon système doit être capable d’assurer une sécurité pour les
informations en son sein.
 La sécurité : un bon système d’information ne peut être accédé que par les
utilisateurs prédéfinis.

d. Classification des systèmes d’informations

La classification des systèmes d’informations tient compte des types de


traitements. Ainsi, on a :
1. Selon le degré d’automatisation, on distingue
 Le système manuel : le traitement des informations s’effectue à l’aide de la main
(stylo, crayons, etc.).
 Le système mécanique : le traitement des informations utilisant des instruments
auxiliaires tels que les machines à écrire.
 Le système informatique : dans ce cas, on utilise comme auxiliaire de traitement les
moyens électroniques, tels que des ordinateurs.
2. Selon le degré d’intégration des informations, on distingue :

Système indépendant : Dans le système indépendant, chaque service a son


propre système informatique, c’est-à-dire chaque système développe ses propres
applications. Il peut avoir aussi ses matériels et logiciels propres et pro logiciels ses
propres matériels)
- Avantages : chaque service est autonome
- Désavantages : multiplicité des matériels

SERVICE COMMERCIAL SERVICE COMPTABLE

SERVICE SERVICE DES RESSOURCES


DESAPPROVISIONNEMENTS HUMAINES

 Système dépendant ou intégré : il y a intégration au niveau d’échange des


informations entre différents services.
Dans le système intégré les différents services ou départements sont reliés entre
eux, ainsi l’intégration consiste par exemple à l’organisation d’un seul site de traitement.
D’où le système intégré recourt à l’approche base de données ou l’approche réseau

Prof KAF
SERVICE COMMERCIAL SERVICE COMPTABLE

SERVICE DES SERVICE DES RESSOURCES


APPROVISIONNEMENTS HUMAINES

3. Selon l’architecture de traitement 

Dans ce cas, on distingue :


 Le traitement centralisé (informations centralisées) : dans ce cas, le traitement, la
saisie et la diffusion s’effectuent dans un seul site. Qui peut être le centre de
traitement informatique.
 Le traitement décentralisé (informations décentralisées ou reparties) : le traitement
et la diffusion s’effectuent dans différents sites, appelé aussi postes. Ce type
d’information est avantageux parce que les différents postes peuvent être reliés
sous forme des réseaux. Dans ce cas, chaque poste de travail a son micro-
ordinateur. Les ordinateurs des différents postes peuvent être connectés en réseau.
Cette tendance de traiter les informations utilise l’approche base de données dans
l’organisation des informations.
 Le traitement mixte (informatique mixte ou distribuée) : la saisie et la diffusion des
informations s’effectue dans des sites secondaires, tandis que le traitement
s’effectue dans le site principal, c'est-à-dire il y a mariage de l’informatique
centralisé.

I.1.3. CONNAISSANCE.
La connaissance peut être considérée comme une combinaison d’intuitions,
de modèles, de méthodes de règles de gestion, de programme et de principes d’utilisation
qui guident les décisions et les actions.
On distingue deux types de connaissance :
 La connaissance formalisée ou explicite : c’est une connaissance qui peut se
transmettre notamment lors de formations ou dans les ouvrages, documents,
Internet, tec.
 La connaissance tactile : c’est une connaissance qui s’acquiert principalement par
la pratique.

Prof KAF
 Par exemple : savoir conduire une automobile ou savoir nager.

I.1.3.1 Système informatisé

Les systèmes informatisés sont définis comme l’ensemble de moyens


matériels (ordinateur + périphérique) des moyens humains (informaticiens), des
algorithmes, des méthodes, procédures permettant le traitement des informations d’une
façon automatique.
Ainsi, le système informatisé est un sous système du système d’information.
I.1.3.2 Relation entre Donnée, Information et Connaissance
Tout système d’information commence par une codification des événements
et des objets du monde réel à l’aide de différents symboles (chiffres, lettres,
photographies, sons, etc.) afin de présenter des objets ou des événements qui ont de
l’intérêt à un ou plusieurs membres d’une organisation (une commande, un client ou une
facture). Même l’acquisition et l’organisation des données ne sont pas les fruits du hasard
elles passent des mécanismes de filtrages reliés à la connaissance individuelle ou
collective.
Cette codification des événements et des objets permet de stocker des données brutes.
Ensuite, les informations sont des données brutes qui ont été traitées,
filtrées, organisées et formatées sous une forme significative et utile. Le passage des
données brutes demande un modèle d’interprétation issu des connaissances de l’utilisateur
de cette information. Par exemple, gestionnaire de vente s’informe quotidiennement des
résultats des ventes par territoire, par client et par vendeur afin de mieux comprendre les
activités commerciales de l’organisation, de les interprétés en les comparant aux résultats
planifiés et de les utiliser pour les actions à mettre en œuvre. Ainsi, en utilisant sa
connaissance de la vente, le gestionnaire filtre des événements et faits. Il utilise un modèle
interprétatif, à savoir des analyses écarts entre les résultats planifiés et les résultats
réalisés, comme source interne d’information. Ce système d’information est une source
parmi plusieurs autres (discussions avec des clients, des représentations, journaux
d’affaires etc.) pour comprendre les situations du marché et leurs évolutions.
Finalement, le gestionnaire utilise encore sa connaissance pour décider des
actions, des stratégies, et des plans aptes à lui donner les résultats voulus. L’évaluation
des résultats planifiés par rapport aux résultats réels permet un retour d’expérience qui
devrait favoriser une meilleure connaissance.

Prof KAF
Connaissance (schémas, Apprentissage
modèles, programmes)

Modèle Programmes
Filtrage interprétatif
principes
etc.

Apprentissage

Evénement Observation saisie


(Fonction Données Information Utilisation Résultat
Objet d’information) (symboles) Interprétation (renseignemen
t

Fig. 3 Relation entre Données, Information, Connaissance.

I.2 LA METHODE MERISE

I.2.1 PRESENTATION DE LA METHODE MERISE

I.2.1.1 Introduction
La conception d'un système d'information n'est pas évidente car il faut
réfléchir à l'ensemble de l'organisation que l'on doit mettre en place. La phase de
conception nécessite des méthodes permettant de mettre en place un modèle sur lequel on
va s'appuyer. La modélisation consiste à créer une représentation virtuelle d'une réalité de
telle façon à faire ressortir les points auxquels on s'intéresse. Ce type de méthode est
appelé analyse. Il existe plusieurs méthodes d'analyse, la méthode la plus utilisée en
France étant la méthode MERISE.

Prof KAF
Le but de cette méthode est d'arrivé à concevoir un système d'information.
La méthode MERISE est basée sur la séparation des données et des traitements à effectuer
en plusieurs modèles conceptuels et physiques. La séparation des données et des
traitements assure une longévité au modèle. En effet, l'agencement des données n'a pas à
être souvent remanié, tandis que les traitements le sont plus fréquemment.
I.2.1.2. Historique

La méthode MERISE date de 1978-1979, et fait suite à une consultation


nationale lancée en 1977 par le ministère de l'Industrie dans le but de choisir des sociétés
de conseil en informatique afin de définir une méthode de conception de systèmes
d'information. Les deux principales sociétés ayant mis au point cette méthode sont le CTI
(Centre Technique d'Informatique) chargé de gérer le projet, et le CETE (Centre d'Etudes
Techniques de l'Equipement)

I.2.1.3 Présentation
La méthode de recherche en informatique par sous-ensemble, Merise est une
méthode de conception et de réalisation des projets informatiques. Elle préconise une
démarche en étape et fait appel à des modèles pour représenter les objets qui composent le
système information, les relations existant entre ces objets ainsi que les règles des gestions
sous jacentes.
En tant que conception, Merise a comme atouts majeurs :
 Une approche du SI menée parallèlement et simultanément sur les données et les
traitements.
 Une description du système d’information par niveau.

a. Niveau d’abstraction.

Il existe un consensus sur le découpage d’un processus de modélisation en


trois étapes principales, correspondants à une modélisation de la future base de données à
trois niveaux d’abstraction différents.
b. Niveau conceptuel.
Ce premier niveau représente le contenu de la base en termes conceptuels,
indépendants de toute considération informatique. Il correspond à la description des
finalités de l’entreprise en expliquant sa raison d’être. Il traduit les objectifs et les
contraintes qui pèsent sur l’entreprise. Ces finalités constituent généralement le niveau le
plus stable. A ce niveau on essaie d’isoler le système en le délimitant. C’est aussi, ici,
qu’on découvre ce qu’il faut faire. Et quelles les données à utiliser 
Il se traduit en termes de :
 Modèle conceptuel de données (MCD)
 Modèle conceptuel de Traitement (MCT)

Prof KAF
c. Le niveau organisationnel
Le niveau organisationnel permet de définir l’organisation qu’il est
souhaitable de mettre en place dans l’entreprise pour atteindre les objectifs visés, on parle
alors de choix d’organisation pour lesquels la marge de manœuvre est plus importante. Il
précise les postes de travail, la chronologie des opérations, les choix d’automatisation,
tout en intégrant les contraintes éventuelles.
Il consiste donc à se poser la question du point de vue des traitements : Qui,
Où, et Quand ? Et on envisage le partage des taches entre les hommes et la machine. Ce
niveau se traduit en termes de :
La conception du système d'information se fait par étapes, afin d'aboutir à un système
d'information fonctionnel reflétant une réalité physique. Il s'agit donc de valider une à une
chacune des étapes en prenant en compte les résultats de la phase précédente. D'autre part,
les données étant séparées des traitements, il faut vérifier la concordance entre données et
traitements afin de vérifier que toutes les données nécessaires aux traitements sont
présentes et qu'il n'y a pas de données superflues.
Cette succession d'étapes est appelée cycle d'abstraction pour la conception
des systèmes d'information:
L'expression des besoins aboutit au MCC (Modèle conceptuel de la communication) qui
définit les flux d'informations à prendre compte.
L'étape suivante consiste à mettre au point le MCD (Modèle conceptuel des
données) et le MCT (Modèle conceptuel des traitements) décrivant les règles et les
contraintes à prendre en compte.
Le modèle organisationnel consiste à définir le MLD (Modèle logique des
données) qui représente un choix logiciel pour le système d'information et le MOT
(Modèle organisationnel des traitements) décrivant les contraintes dues à l'environnement
(organisationnel, spatial et temporel).
Enfin, le modèle physique reflète un choix matériel pour le système d'information.

Statique Dynamique
Niveau
(données) (traitement)
Indépendant du système :
Conceptuel MCD MCT
QUOI ?
Organisationnel ou MLD MOT Choix du SGBD
logique (ou ?) (QUI ? QUAND ?) QUI ? QUAND ? OU ?
Opérationnel ou Haute connaissance du
MPD MOPT
physique SGBD : COMMENT

I.2.1.4 Caractéristique de la méthode Merise

Elle comprend deux approches :


1. Approche Analytique 

Prof KAF
Elle consiste à sélectionner un domaine sans tenir compte des interactions
avec des autres domaines ou projets.
2. Approche Systémique
Consiste à étudier un domaine en tenant compte des interactions avec les
autres domaines. L’approche systémique nous conduit à faire l’étude de la structure
statique d’une organisation et de sa représentation dans le système d’information qui
s’étend jusqu’à la prise en compte de son évolution.

I.2.2. NOTIONS FONDAMENTALES DE LA MODELISATION DE


SYSTEME D’INFORMATION.
La méthode MERISE s’appuie sur la séparation de données et des
traitements dans le développement d’un système d’information.
Dans ce paragraphe, nous présenterons quelques notions de modélisation relatives aux
données d’une part aux traitements d’une autre.

I.2.2.1 Les concepts de base

a. Entité.
Une entité est la représentation d'un élément matériel ou immatériel ayant
un rôle dans le système que l'on désire décrire. On appelle classe d'entité un ensemble
composé d'entités de même type, c'est-à-dire dont la définition est la même. Le
classement des entités au sein d'une classe s'appelle classification (ou abstraction). Une
entité est une instanciation de la classe. Chaque entité est composée de propriétés,
données élémentaires permettant de la décrire.
Une entité est aussi un objet, ou un individu au sens large, du système
d’information pourvu d’une existence propre ; conforme au choix de gestion de
l’entreprise et, le plus souvent, porteur d’une ou plusieurs propriétés.
Elle est formalisée par un rectangle comme suit :

Libellé

Propriété 1
Propriété 2
Propriété 3
.
.
Propriété N

Prof KAF
Les classes d'entités sont représentées par un rectangle. Ce rectangle est
séparé en deux champs : Le champ du haut contient le libellé. Ce libellé est généralement
une abréviation pour une raison de simplification de l'écriture. Il s'agit par contre de
vérifier qu'à chaque classe d'entité correspond un et un seul libellé, et réciproquement.
Le champ du bas contient la liste des propriétés de la classe d'entité.

b. Attribut (ou propriété)


Un attribut ou propriété est une donnée élémentaire perçue sur le système
d’information. Le nom associé à un attribut est souvent porteur de sens. Un attribut peut
concerner une entité ou une association.
L’occurrence d’une entité est un élément individualisé appartement à cette
entité. C’est donc un exemplaire de l’objet ou de l’entité.
Exemple :
Client
Client

002
001 Robert
Sam 55
22

La décomposition d’une propriété en propriétés plus simples ne doit pas être


systématique et doit surtout tenir compte de son l’exploitation dans le système. Si cette
exploitation est toujours globale, l’atomisation n’est pas nécessaire, dans les autres cas il
faut procéder à l’isolement de chacune des composantes de la propriété et donc introduire
de nouvelles propriétés.

c. Identifiant
L’identifiant est une propriété permettant de distinguer, sans ambiguïté,
l’occurrence d’une entité. On visualise cet identifiant en le plaçant généralement comme
première propriété et éventuellement en le soulignant ou parfois de le faire précéder d’une
dièse (#).

Prof KAF
L’identifiant est formalisé comme suit :

Client

#N° Client
Nomcl
Prénom
AgeCl
VilleCl

d. Relation ou association
Une association est un lien sémantique entre deux ou plusieurs entités. Elle
est pourvue existence propre mais, elle peut être porteuse de propriétés.
Une classe de relation contient donc toutes les relations de même type (qui relient donc
des entités appartenant à des mêmes classes d'entité).
Une classe de relation peut lier plus de deux classes d'entité. Voici les
dénominations des classes de relation selon le nombre d’intervenants :
- une classe de relation récursive (ou réflexive) relie la même classe d'entité
- une classe de relation binaire relie deux classes d'entité
- une classe de relation ternaire relie trois classes d'entité
Une classe de relation n-aire relie n classes d'entité. Les classes de relations
sont représentées par des hexagones (parfois des ellipses) dont l'intitulé décrit le type de
relation qui relie les classes d'entité (généralement un verbe). On définit pour chaque
classe de relation un identificateur de la forme Ri permettant de désigner de façon unique
la classe de relation à laquelle il est associé. On peut éventuellement ajouter des
propriétés aux classes de relation.
Dans la pratique, elle peut être traduite par une action ou par un verbe en action.
L’association est formalisée par une ellipse comme suit :

Nom de l’objet Nom de l’objet

Propriété 1 Propriété 1
Propriété 2 Nom association Propriété 2
Propriété 3 Propriété 1 Propriété 3
. Propriété 2 .
. .
. .
Propriété n Propriété n
Prof KAF
Une association peut être caractérisée par sa dimension selon le nombre
d’entités qu’elle implique. Ainsi, on a des relations de dimension 2 ou binaire qui
associent deux entités, de dimension 3 ou ternaire qui associent trois entités, de dimension
n, ou n-aire qui associent n entités.

e. Cardinalité

Les cardinalités permettent de caractériser le lien qui existe entre une entité
et la relation à laquelle elle est reliée. La cardinalité d'une relation est composée d'un
couple comportant une borne maximale et une borne minimale, intervalle dans lequel la
cardinalité d'une entité peut prendre sa valeur :
- la borne minimale (généralement 0 ou 1) décrit le nombre minimum de fois qu'une
entité peut participer à une relation.
- la borne maximale (généralement 1 ou n) décrit le nombre maximum de fois qu'une
entité peut participer à une relation.
Un couple de cardinalités placé entre une entité E et une association A
représenté le nombre minimal et maximal d’occurrences de l’association A qui peuvent
être « ancrées » à une occurrence de l’association E. Le tableau ci-après récapitule les
valeurs que peut prendre ce couple.

La cardinalité représente le nombre de fois minimale et maximale d’une entité par rapport
à une association.

Prof KAF
La cardinalité minimale exprime le nombre de fois minimal ou une
occurrence de l’entité participé aux occurrences de l’association. Cette cardinalité est
souvent 0 ou 1.
La cardinalité maximale exprime le nombre de fois maximal ou une
occurrence de l’entité participe aux occurrences de la relation. Cette cardinalité est
souvent 1 ou n (n indique une cardinalité maximum non connue à priori).

Le formalisme de la cardinalité est le suivant :


Appartement Propriétaire

NumLocation Num
1.1 1.n
Categorie Possède Prénom
Type Adresse
NbrePersonne Code postale
Adresselocation ville
Photo Numtél
Equipement E-mail

Le schéma ci haut peut être interprété comme :


 un appartement est possédé par un et un seul propriétaire.
 chaque propriétaire possède au moins un appartement et au plus n appartement.
Dans la pratique les cardinalités sont indiquées à partir des règles de gestion,
d’organisation ou de calculs.

f. Contrainte d’intégrité fonctionnelle (CIF)

Quand on détermine, entre une relation et une entité, une cardinalité


présentant les valeurs 0,1 ou 1.1 d’une part, et 1,n d’autre part, la relation est
particulière,on l’appelle alors contrainte d’intégrité fonctionnelle (CIF) et afin de bien la
représenter, son symbole sera également différent. On peut dire que la relation est de type
Père Fils.
En effet, la principale raison d’être de la mise en évidence de CIF est
optimisée par la suite le passage aux fichiers ou base de données.
Une CIF indique que l’une des entités est totalement déterminée par la connaissance de
l’autre (ici, on peut dire que connaissant un appartement on peut déterminer son
propriétaire).

Prof KAF
Appartement Propriétaire

NumLocation Num
Categorie CIF Prénom
Type Adresse
NbrePersonne Code postale
Adresselocation Ville
Photo Numtél
Equipement E-mail

Les Formes normales

Première forme normale

A un instant donné, dans une entité, pour un individu, un attribut ne peut prendre qu’une valeur et
non un ensemble ou une liste de valeurs (les attributs doivent être atomiques)

Deuxième forme normale

L’identifiant peut être composé de plusieurs attributs mais les autres attributs de l’entité doivent
dépendre de l’identifiant en entier.

Troisième forme normale de Boyce – codd


Tous les attributs d’une entité doivent dépendre directement de son identifiant et d’aucun autre
attributs.

Prof KAF
I.2.3 NOTION PAR RAPPORT AUX TRAITEMENTS

I.2.3.1 Evénement

Un événement correspond à une sollicitation du système d’information qui


doit réagir par l’exécution d’une opération permettant de répondre à un événement en lui
apportant le résultat approprié. On peut donc dire qu’il est caractérisé par le fait que
« quelque chose s’est passé »

Il existe deux types d’événement :


 Evénement externe qui provoque un changement de l’univers extérieur à
l’organisation.
 Evénement interne qui provoque un changement interne au système d’information.

I.2.3.2 Opération

L’opération peut se définir comme une suite d’action qui ne peut être
interrompue. Cette suite d’action peut être réalisée sur les données en réactions à
l’événement déclenclencheur, en vue d’y apporter une réponse appropriée.
Les opérations peuvent regroupées sous l’appellation générique de processus, dès lors,
qu’elle concerne un même secteur d’activité

La synchronisation peut se définir comme étant une condition logique aussi


appelée condition booléenne à satisfaire préalablement au déclenchement de l’opération,
lors de l’apparition de l’événement. Rappelons qu’une condition logique se traduit en
utilisant un ou plusieurs opérateurs de types : ET, OU, NON_OU, NON_ET, OU
EXCLUSIF…

I.2.3.3 Résultat

Le résultat est le produit de l’opération. Il pourra être l’événement


declencheur d’une autre opération.

Prof KAF
Evénement ext2 : Réception des pièces manquantes du dossier n° D
Evénement ext3 : La date actuelle est JJ/MM/AAAA
Evénement int1 : Dossier de pré inscription n° D accepté le JJ/MM/AAAA
Evénement int2 : Dossier de pré-inscription n° D mis en attente le JJ/MM/AAAA
Evénement int3 : Avis de suppression du dossier n° D émis le JJ/MM/AAAA
Synchronisation : Si ext2 et int2 Avec ext2.D = int2.D
Synchronisation : Si int2 et ext3 Avec Pour tout int2 ayant
int2.JJ/MM/AAAA+ 8 = ext3.JJ/MM/AAAA

Prof KAF
CHAPITRE II. BASES DE DONNEES ET
ARCHITECTURE CLIENT - SERVEUR

II.1 INTRODUCTION
II.1.1  HISTORIQUE

La gestion des informations se faisait jadis à partir de fiches


manuscrites puis dactylographiées, classées bien souvent selon un index.
Cas d’une gestion des étudiants par ordre alphabétique sur le nom, avec un index ou une
coche sur la première lettre du nom, pour améliorer le classement et la recherche.
Ces fiches regroupaient des informations se reportant à un même sujet.

Selon cas précédent : le nom, le prénom, la date de naissance, l’adresse, la


promotion, numéro matricule…), avec éventuellement une information particulière qui
servait à identifier plusieurs étudiants ayant le même nom et le même prénom, soit un
code ou un numéro matricule.
Ces principes de regroupement d’informations, d’identifiant, de fiche et de
fichier servirent de modèle aux premiers fichiers informatiques : notion qui apparut dans
les années cinquante.
Avec l'informatique, un certain nombre d'opérations ont été automatisées et
l'enregistrement des informations est donc passé de la fiche manuelle à un support
informatique (bande magnétique, disque dur, disquette etc.). Ces informations ont été
organisées dans des fichiers.

II.1.2 LE SYSTEME DE GESTION DES FICHIERS (SGF)

II.1.2.1 Généralités

a. Fonctionnement d'un SGF

Les fichiers composant le SGF sont des fichiers de données et des fichiers
de programmes :
Les fichiers de programmes permettent deux types de traitements :

- traitement interactif : une action extérieure implique un résultat immédiat de la part


du
système ;
- traitement par lots : le traitement comporte une série de commandes qui traitent
plusieurs éléments et dont le résultat n'est pas immédiat

Prof KAF
b. Objectifs d'un SGF

Le Système de Gestion de Fichiers a pour but, en parfaite collaboration avec


le système d'exploitation d'assurer les tâches suivantes :
o Gérer automatiquement les mémoires secondaires : disques, bandes,
mémoire de masse;
o Gérer les entrées-sorties ;
o Permettre la création et la suppression des fichiers contenant les données ;
o Permettre les accès en lecture et en écriture ;
o Protéger les fichiers contre les défaillances du système (pannes matériels ou
logicielles) ;
o Permettre le partage des fichiers entre plusieurs utilisateurs ;
o Protéger les fichiers contre les accès non autorisés ;
o Permettre l'utilisation de langage de programmation pour manipuler et
traiter les informations.

II.1.2.2 Les inconvénients des SGF

Au-delà de l'organisation interne de chaque fichier et des mécanismes


permettant de manipuler les enregistrements de ces fichiers, la difficulté majeure demeure
dans l'existence de différents fichiers au sein du système d'information d'une entreprise ou
d'un organisme.

a. Inconvénients directs

1. Redondance des informations

La même information est dupliquée dans plusieurs fichiers où elle peut, en


plus, être structurée de manières différentes.
Cette redondance a pour effet direct une augmentation du volume de l'ensemble des
fichiers.

2. Inconsistance des données

Les copies d'une même donnée ne concordent pas obligatoirement entre


elles. Cas des codifications de grades, orthographes différentes pour le même nom.

3. Difficulté à rapprocher les informations

Prof KAF
La tâche la plus couramment effectuée en terme de traitement des données
consiste à associer des informations à d'autres informations, éparpillées un peu
partout dans le système d'information de l'entreprise.
Ce sont ces associations entre informations qui sont traduites dans un MCD par la mise en
place de Relations.
Or les données sont de structures différentes et ne sont pas reliées
physiquement entre elles, ce qui rend très difficile l'exécution de ces rapprochements :
le développeur doit se charger d'effectuer ces rapprochements par comparaison des
rubriques des fichiers concernés, en tenant compte de leur organisation, de leurs
méthodes d'accès et en espérant qu'il n'y ait pas d'inconsistance .

b. Inconvénients indirects

1. Difficultés d'accès

Les données étant dupliquées et éparpillées, il y a plusieurs moyens d'y


accéder sans savoir à l'avance quel est le mieux adapté au traitement ou à la recherche
souhaitée (par quel bout doit-on s'y prendre ?).
On a donc besoin d'un système global pouvant s'adapter aux demandes spécifiques et
immédiates des utilisateurs.
De plus, il est difficile d'écrire des programmes qui permettent d'accéder
aux informations de manière globale ; il devient nécessaire d'établir des relations entre les
fichiers.

2. Multiplicité des mises à jour

Les données étant dupliquées, la modification d'une information entraîne


autant de mises à jour qu'il y a d'endroits où cette information est stockée.

Exemple : Un stagiaire féminin du nom de Bobange se marie et décide de porter son nom
d'épouse, Kanku. Il devient obligatoire de modifier la rubrique Nom dans chaque fichier.

Cette multiplicité des mises à jour est aggravée par les difficultés
d'accès et par l'inconsistance des données ainsi que par le facteur temps qui rend le
système incohérent tant que l'ensemble des mises à jour n'est pas fini.

3. Problèmes d'intégrité

Pour garantir un minimum de cohérence au système, on peut mettre en place


un certain nombre de règles concernant les données : les contraintes d'intégrité. Parmi ces
contraintes d'intégrité, on peut citer :

- l'unicité de valeur d'un attribut ;

Prof KAF
- le contrôle des valeurs possibles d'un attribut ;
Exemple : solde >0 ; année naissance < année courante …
- la référence ou appartenance à un ensemble variable de valeurs.

4. Problèmes de sécurité

De la même manière, il devient impossible de mettre en place les


verrouillages nécessaires pour empêcher une personne d'accéder aux informations dont
elle n'a pas le "besoin d'en connaître".

5. Indépendance données / traitements

Les langages de programmation utilisés pour manipuler les SGF comportent


une très grosse partie dédiée à la déclaration et à la définition des informations traitées
ainsi qu'à l'accès et à la manipulation de ces données. Cette lourdeur est démultipliée en
cas de maintenance corrective ou évolutive de l'application.

De plus il est dans l'intérêt d'un propriétaire de données de pouvoir faire


évoluer indépendamment les traitements et éventuellement changer le langage de
programmation sans remettre en cause toute l'organisation de ces données.
Organiser la gestion de données à partir d'un système de gestion de fichiers est une
solution qui n'est pas satisfaisante : lourde à gérer, trop dépendante de l'organisation
physique.

II.2 NOTION SUR LES BASES DE DONNEES


II.2.1 DEFINITIONS DE QUELQUES CONCEPTS

1. Base de donnée (Data Base) :

Une Base de Données est un ensemble structuré de données, enregistrées


sur des supports, accessibles par l'ordinateur, représentant les informations du monde réel
et pouvant être interrogées et mises à jour par une communauté d'utilisateurs.

a. Définition normalisée

Une base de données est un ensemble de données organisé en vue de son


utilisation par des programmes correspondant à des applications distinctes et de manière à
faciliter l'évolution indépendante des données et des programmes.

b. D’autres définitions de la base de données

Prof KAF
D'autres définitions reprennent les mêmes éléments tout en insistant sur
certains aspects :

o Une base de données est une collection de fichiers (entités) reliés entre eux par des
liens logiques et/ou physiques et organisés de manière à répondre efficacement à
une grande variété de questions ;
o Une BD peut apparaître comme une collection d'informations modélisant une
entreprise du monde réel, servant de support à une application informatique et
dont les données peuvent être interrogées au moins par leur contenu ;
o Une BD est destinée à la gestion, au stockage, à l'actualisation et à la consultation
d'entités de différentes natures (et de leurs données), sachant que ces entités ont un
lien les unes avec les autres.

2. Banque de donnée (Data Bank) :

C’est l’ensemble d’information directement exploitable et recouvrant un


domaine particulier des connaissances. Ex : La banque de données sur la défense
nationale et sécurité,….

3. Entrepôts de données :

Les entrepôts de données intègrent les données de l’entreprise dans une base
unique de puis laquelle les utilisateurs peuvent facilement extraire des indications pour
l’aide à la décision.

4. Système de gestion des bases de données (SGBD) :

Est un logiciel qui permet d’interagir avec une base de données. Il permet à
l’utilisateur de définir des données, de consulter la base ou de la mettre à jour.

II.2.2 LES CRITERES D’UNE BASE DE DONNEES

1. Exhaustivité : implique que l’on dispose de toutes les informations relatives au sujet
donné.
2. La non redondance : implique l’unicité des informations dans la base de données .En
général on essaie d’éviter la duplication des données car cela pose des problèmes de
cohérence lors des mises à jour de ces donnés.
3. La structure : implique l’adaptation du mode de stockage des renseignements aux
traitements qui les exploiterons et les mettrons à jour ; ainsi qu’au coût de stockage de ces
renseignements dans l’ordinateur.

Prof KAF
Le stockage physique d’une base de donnée consiste en un ensemble
d’enregistrements physiques. Organisés à l’aide des listes, des pointeurs et différentes
méthodes d’indexation.

II.3 LE SYSTEME DE GESTION DE BASES DE DONNEES

II.3.1 INTRODUCTION

On ne gère plus un ensemble de fichiers comme jadis mais un ensemble de


données structurées. En ce sens, le SGBD est donc :
Le système de gestion d'un ensemble cohérent de données non redondantes.
De plus, le SGBD doit répondre aux besoins de toute l’entreprise et non plus d’une
application particulière, et ce, dans la limite des droits de chacun. On doit donc aussi
considérer le SGBD comme :
Un ensemble de logiciels de gestion, de contrôle d'accès aux données et aux programmes
les manipulant.

II.3.2 LES OBJECTIFS ET AVANTAGES D'UN SGBD

1. Centraliser l'information
En visant cet objectif, on cherche naturellement à supprimer la redondance,
à assurer l’unicité des saisies et mises à jour et à centraliser les contrôles.
C'est la modélisation conceptuelle qui va permettre, dans un premier temps, de répondre à
ce souci. Assurer l'indépendance données – traitements. Il s'agit ici de pouvoir faire
évoluer indépendamment les données et les traitements.
Cette indépendance sera assurée grâce à une approche en plusieurs niveaux
de la base de données.
2. Permettre les liaisons entre ensembles de données

On doit pouvoir ainsi établir des liaisons entre ensembles de données qui
n'ont que peu de points communs (faculté, départements, auditoires, cours.).
Dans un premier temps, ces rapprochements seront matérialisés dans la base de
données par des liens physiques visibles et manipulables par certains utilisateurs de la
base de données. On pourrait alors qualifier cela de "ficelles" existant entre les données

3. Intégrité et cohérence : Intérêt des contraintes

Prof KAF
L'information étant stockée de manière unique, il faut d’autant plus s'assurer
de son intégrité, de sa fiabilité et de sa cohérence. Pour cela, il faut pouvoir définir des
contraintes d'intégrité ou des contraintes de cohérence entre données, contraintes qui
doivent être prises en compte aussi bien pour la définition que pour le traitement des
données et sans faire appel à la programmation (ou le moins possible, pour ne pas
invalider les efforts fournis en terme d'indépendance données / traitements).

4. Partage des données

Les applications doivent pouvoir partager les informations de manière


transparente. Les différentes actions de mise à jour des données doivent pouvoir être
effectuées concurremment mais en respectant certaines règles de préséance entre
applications et/ou utilisateurs :
Exemple : Si un opérateur sollicite une opération de lecture d'une donnée, cela autorise
les autres opérateurs à procéder eux-mêmes à la lecture de cette même donnée, mais
interdit toute opération de mise à jour (création, modification ou suppression) de la
donnée.
De la même manière toute opération de mise à jour d'une donnée interdit toute autre
opération (mise à jour et lecture).

Ces autorisations et interdictions sont gérées par un mécanisme de


verrouillage. Cependant, il peut arriver que ces règles ne suffisent pas à réguler les
opérations de consultation et de mises à jour des informations, ce qui provoque une
situation dite d’inter blocage :
Inter blocage : blocage mutuel des deux opérations du fait des mécanismes de
verrouillage mis en œuvre.

5. Sécurité

Il est indispensable d'envisager des procédures garantissant des


récupérations contre tout type d'incident (matériel, logiciel), qu'il s'agisse de
destructions logiques (anomalies de mise à jour) ou physiques, que ces destructions
soient partielles ou totales.
Avant de présenter les mécanismes qui assurent cette sécurité, il est nécessaire de définir
les notions de transaction et de requête.

Requête : Unité élémentaire de traitement permettant d'agir sur un SGBD.


Exemple : - Lecture des toutes les informations relatives aux étudiants ;

- inscription d'un nouvel étudiant ;


- Création d'un utilisateur du SGBD …

Prof KAF
Transaction : Ensemble de 1 à n requêtes nécessaires à la réalisation d'une opération
particulière.
Exemple : - Retrait d'argent d'un compte avec vérification préalable du solde ;
- Enregistrement de la livraison d'un produit avec mise à jour de la quantité en stock …

a. Atomicité des transactions

Pour que ces opérations soient réalisées de manière fiable en obtenant des
résultats cohérents, il est indispensable que l'intégralité des requêtes constituant une
transaction soit exécutée et que les résultats définitifs soient enregistrés dans la base de
données.
En fait, un SGBD devra veiller à ce qu'une base de données reste dans un
état cohérent. Pour cela les transactions ne doivent pas être exécutées partiellement : elles
doivent être réalisées, soit entièrement, soit pas du tout. D'où le qualificatif d'atomique
(qui constitue un tout indissociable).

Exemple : Si on considère une opération de transfert d'un montant M d'un compte


bancaire C1 sur un compte bancaire C2, on peut concevoir que cette transaction
nécessite les requêtes suivantes :
Si un incident survient entre les requêtes R2 et R3, la base de données est dans un état
logiquement incohérent : le débit est effectué sur C1, le solde de C2 est erroné, le
montant M a disparu
Une grande partie du fonctionnement d’un SGBD est guidée par le respect de cette
contrainte d'atomicité des transactions.

b. Validation et annulation des résultats d'une transaction

- La commande COMMIT

Lorsqu'une transaction s'est déroulée correctement et dans son intégralité,


plus rien n'empêche que les résultats soient enregistrés définitivement. Cette validation
des résultats est assurée par la commande :
Commit : Commande exécutée par le système, qui rend effectifs les résultats d'une
transaction.
Cette commande est aussi mise à la disposition des utilisateurs qui ont la
possibilité d'en demander l'exécution après chacune de leurs requêtes. De plus,
l'exécution de cette commande libère les verrous posés par chacune des requêtes de la
transaction.

- La commande ROLLBACK

Prof KAF
Si une transaction ne s'exécute pas complètement, le système dispose de la
commande ROLLBACK, lui permettant d'annuler les effets partiels de la transaction :
Roll Back : commande exécutée par le système, qui annule les résultats d'une
transaction.
Comme pour la commande COMMIT, l'utilisateur a la possibilité
d'employer cette commande, pour éviter, par exemple, qu'une opération malheureuse ne
vienne endommager la base de données (suppression intempestive, annulation de toutes
les requêtes en cas de message d'erreur .). La commande ROLLBACK libère également
les verrous posés par les différentes requêtes.
Exemple : Opération de crédit d'un montant de 100,00 FF sur un compte C1 :

c. Les mécanismes de sécurité

Les points de reprise lorsque le SGBD redémarre après un incident, il doit


impérativement le faire à partir d'une situation de référence dans laquelle les données des
bases de données sont dans un état stable. Pour garantir cela, le SGBD effectue à
intervalles réguliers des points de reprise.
Point de reprise : Etat stable créé par le SGBD à intervalles réguliers. Le SGBD effectue
un bilan des transactions en cours et valide les transactions terminées (les résultats de
ces transactions sont écrits sur disque)

 Le journal des transactions

A l'issue du point de reprise, toutes les transactions sont enregistrées dans


un journal : Journal des transactions : Fichier mémorisant l'état des bases de données à
l'issue du dernier point de reprise ainsi que toutes les transactions effectuées par le
SGBD depuis ce dernier point de reprise.

 La procédure de reprise

Lors de la reprise après incident, le système redémarre depuis le point de


reprise précédent en appliquant le journal des transactions, pour se retrouver dans la
même situation qu'avant l'incident : il s'agit d'une procédure de reprise.

 Duplication des données

Pour se protéger des destructions physiques massives d'informations, seules


les duplications (sauvegardes) par des dispositifs réguliers (hebdomadaires, journaliers.)
ou permanents (mirroring, réplication.) constituent une garantie suffisante.

6. Confidentialité

Prof KAF
Un SGBD doit offrir une protection des données afin d'éviter les accès
illicites.
On peut notamment assurer la confidentialité en mettant en oeuvre des procédures :
- d'identification ; Exemple : nom d'utilisateur ou login
- d'authentification ; Exemple : mot de passe
 d'autorisation d'accès. Exemple : définition des possibilités de consultation de
création, de modification, de suppression d'une ou plusieurs entités au profit des
utilisateurs.
N.B. : Le souci d’identification et d’authentification pour accéder à un SGBD se
superpose systématiquement au même besoin pour le système d'exploitation.
Pour éviter qu'un utilisateur ne soit obligé de s’identifier et de s'authentifier
deux fois (une fois pour accéder à sa machine et une fois pour accéder au SGBD), il peut
être possible de reprendre les éléments d'identification et d'authentification du SE (même
nom d'utilisateur, même mot de passe). Ce dispositif s'appelle le "mapping".

II.4. TYPES D’UTILISATEURS.

 L’administrateur de la base
L’administrateur de la base de données est chargé du contrôle de la base de
données, précisément l’accès aux données.
 Le Programmeur :
Ecrit des applications qui utilisent la base de données et crée les tables et les
structures associées (vues, index,…) utilisées par ses applications.
 L’utilisateur final :
N’a accès qu’aux données qui lui sont utilises par l’intermédiaire des
applications ou en interrogeant directement les tables ou vues sur lesquelles
l’administrateur de base de données lui a accordé des droits.

II.5. TYPES DE SGBD

II.5.1. SGBD HIERARCHIQUE :

Longtemps considéré comme le seul modèle permettant aux SGBD


d’atteindre les performances exigées en production, le modèle hiérarchique possède
effectivement la capacité de traiter rapidement des informations organisées sous la forme
d’une hiérarchie stricte mais, par contre, interdit tout autre type de représentation, limitant
ainsi considération la d’expression du modèle.
Le SGBD le plus connu dans cette catégorie est IMS, produit ancien de
IBM, très répandu dans les applications de production. Les concepts de la base du modèle
sont le champs, plus petite unité de données possédant un nom, et l’article.
L’article : suite de champs, portant un nom et constituant l’unité d’échange
entre la base de données et les applications. Les articles sont reliés entre eux par de liens
hiérarchiques : à un article père possèdent N articles fils.

Prof KAF
La notion de type d’article qui désigne le schéma d’un article (description
contenant) sa distingue ici de celle d’occurrences d’article qui représentent les différentes
valeurs stockées de la base.
On peut formuler quelques remarques sur la structure hiérarchique :

 Il y a un seul type article racine ;


 La racine peut avoir un nombre quelconque de types d’articles d’enfant ;
Chaque type d’article enfant de la racine peut avoir un nombre quelconque de types
d’articles d’enfant, et ainsi de suite ;
 A une occurrence d’un type d’article donné, peuvent correspondre 0,1 ou N
occurrence de chaque type d’article d’enfant ;
 Une occurrence d’article enfant ne peut exister sans l’occurrence d’un article.

Nota : Détruire une occurrence d’article père, détruit par conséquent également les
occurrences des ses enfants.

II.5.2 SGBD RESEAU


Le SGBD réseau se conforme aux normes fixées par le groupe CODASYL
(Conférence On Data System Languages) en 1971. Les SGBD réseaux les plus
représentés sur le marché sont les systèmes IDS II (Information Data Store), conçu par
BACHMAN et WILLIAMS, ou IMS 2 d'IBM.

Ce type de SGBD propose de trouver une solution pour :


 gérer les relations porteuses de cardinalités maximales à n ;
 prendre en compte la cardinalité mini à 0 ;
 gérer les relations de type n-aire
 obtenir plusieurs points d'accès, autres que le sommet de l'arbre.

Pour cela, il modifie l'une des règles de dépendance entre les entités :
Une entité "fille" peut avoir plusieurs entités "mères".

Enfin les SGBD de type CODASYL permettent de mettre en place d'autres


points d'entrée dans la base de données : les Data-Record-Key. Ces clés d'accès sont
positionnées sur les segments régulièrement sollicités pour certains traitements, ce qui
permet d'améliorer les temps d'accès aux données et d'alléger les traitements de recherche
de ces mêmes données.

1. Avantages

Il est clair que ce type de SGBD apporte une plus grande souplesse et une
plus grande rapidité aux différents traitements.

Prof KAF
2. Inconvénients

Les chemins d'accès aux données restent très dépendants de la structure


adoptée. Le langage navigationnel qui permet d'accéder et de manipuler les données reste
lourd : il faut connaître le chaînage et les jeux de pointeurs mis en place en plus de la
signification des données. En dehors de traitements préétablis, la base de données n'est
accessible qu'à des spécialistes.
Le schéma de la base de données, avec les jeux de pointeurs et les clés
d'accès aux records, nécessite une compilation à chaque modification de structure et la
refonte des différents programmes.
L'évolution ou la modification de telles bases de données restent donc délicates à mener.

II.5..3 SGBD RELATIONNEL


Les Systèmes de Gestion de Bases de Données de 2ème génération, dits
SGBD relationnels marquent une évolution importante de la mécanique de rapprochement
d'informations. Suite à ses recherches au centre d’IBM à San José, le mathématicien E.F.
CODD propose en 1970 une théorie rigoureuse pour l'élaboration d'un modèle de données
constitué de relations, c'est à dire de tableaux à deux dimensions.
La première volonté du modèle relationnel fut d’être un modèle ensembliste simple. Les
objectifs recherchés étaient :

o de traiter les données de façon formelle, en s’appuyant sur les théories


mathématiques de CODD (algèbre relationnelle);
o d’assurer une indépendance entre la structure de stockage des données et les
programmes, afin de pouvoir faire évoluer les uns parallèlement aux autres ;
o d’augmenter la productivité des programmeurs, en leur fournissant des
outils et des langages rendant plus facile la manipulation des données.

Les années qui ont suivies l'apparition du modèle relationnel ont vu


s'élaborer une théorie solide qui permet aujourd'hui de construire et d'exploiter des bases
de données d'une manière très efficace en proposant :

o une structure relationnelle de stockage des données ;


o la disparition de la représentation en graphe des données (représentation de
BACHMAN) ;
o la suppression des "ficelles" physiques liant les données entre elles ;
o la facilitation de l'accès aux données pour les utilisateurs, notamment non
informaticiens.

Le rapprochement entre données est possible grâce à l'existence de


domaines communs dans l'ensemble des relations (tables) de la base de données. Les
recherches et mises à jour sont effectuées à l’aide d’un langage non procédural et

Prof KAF
non navigationnel, permettant de spécifier les données que l’on veut obtenir sans dire
comment y accéder, ainsi que de traitements ensemblistes. C’est donc le moteur du SGBD
qui doit déterminer le meilleur plan possible d’accès aux données.

NOTA : Le SGBD Relationnel a comme objectifs

 Proposer des schémas de données faciles à utiliser


 Améliorer l'indépendance entre données et traitements
 Mettre à la disposition des utilisateurs des langages de haut niveau
 Optimiser les accès à la base
 Permettre le développement de nombreuses applications

II.5.4 SGBD OBJET

 Les SGBD objet enregistrent les données sous forme d’objets : les données sont
enregistrées avec les procédures et les fonctions qui permettent de les
manupiler
 Ils supportent la notion d’héritage entre classes d’objets complexes (les
pointeurs remplacent les jointures pour les structures hiérarchiques)
 A priori, beaucoup d’avantages sur le relationnel, mais manque de
normalisation et de standard inertie de l’existant (presque toutes les bases
actuelles sont de type relationnel)

II.6 MODELES DE DONNEES

II.6.1. NIVEAU D’ABSTRACTION

Il est nécessaire de décrire l’application selon les différents niveaux


d’abstraction pour faciliter :
o le développement des applications (ne pas être noyé dans par les détails et
contraintes techniques au début de son étude)
o l’adaptation de l’application aux futures modifications de l’environnement
technique et logiciel

Pour les données, on distingue généralement les trois niveaux : conceptuel,


logique et physique.
a. Niveau Conceptuel :
Décrit les données sous forme indépendante du matériel et du SGBD
b. Niveau Logique

Prof KAF
Adopte le niveau conceptuel au type de SGBD utilisé pour le SGBD
relationnels, il traduit le niveau conceptuel sous forme de relations.
Pour le SGBD objet, le model conceptuel est traduit sous forme de classes (direct depuis
un schéma UML)
REMARQUE : niveau logique pour le SGBD relationnels, les relations sont normalisées
pour éviter les problèmes liées à une mauvaise répartition entre les relations. Des besoins
d’optimisation peuvent conduire à dénormaliser certaines relations
c. Niveau Physique
Décrit l’implantation du niveau logique à l’aide du matériel et du SGBD
choisi. On précise les emplacements des données en utilisant les possibilités sur les
différents supports.
On peut optimiser les accès aux données en utilisant les possibilités particulières offertes
pour les SGBD

II.6.2. MODELE RELATIONNEL

Le modèle relationnel est un model qui a été formalisé par CODD en 1970.
ce modèle stocke les données dans les tables sans préjuger de la façon dont les
informations sont stockées dans la machine. D’où un ensemble de données sera donc
modélisé par un ensemble de tables.
Le succès du modèle relationnel auprès des chercheurs, concepteurs et
utilisateurs est dû à la puissance et à la simplicité de ses concepts. En outre contrairement
à certains autres modèles, il repose sur les bases théoriques.

1. Définition
D’une manière générale, on peut dire que le modèle relationnel permet une
présentation de l’univers décrite sous la forme de tableaux à deux dimensions. Ce modèle
repose sur quelques concepts très simples.
2. Relation
La relation est encore appelée table relationnelle ou table.
Afin d’expliquer ce concept, on peut utiliser les deux ensembles suivants :
PRODUITS = {P1, P2, P3}
FOURNISSEUR = {F1, F2}
Le produit cartésien PRODUIT x FOURNISSEUR est défini par :
P x F = {P1-F1 ; P1-F2 ; P2-F1 ; P2-F2 ; P3-F1 ; P3-F2}
Généralités sur les Bases de Données
Ce produit cartésien peut être représenté par la relation suivante :

PRODUITS FOURNISSEUR
P1 F1
P1 F2

Prof KAF
P2 F1
P2 F2
P3 F1
P3 F1

Le résultat de ce produit cartésien est un ensemble de valeurs.


Chaque ligne est un élément de l’ensemble mais seule une partie d’entre elles va être
intéressante, car elle représente la réalité de l’univers de travail.
Si l'on considère que, dans la réalité F1 vend P1 et que F2 vend P2 et P3, on
obtient le tableau suivant, sous ensemble du précédent :
PRODUITS FOURNISSEUR
P1 F1
P2 F2
P3 F2

Ce qui permet de définir une table relationnelle de la manière suivante :

Une table relationnelle est un sous-ensemble du produit cartésien d’une liste de


domaines. Ce sous-ensemble peut-être représenté par un tableau à deux dimensions
(lignes, colonnes).
En conséquence, on peut dire qu’une relation :
- n'a pas deux lignes identiques ;
- que l'ordre des lignes n'est pas significatif ;
- que l'ordre des colonnes n'est pas significatif.
On la note : R (A1, A2, An) où R est le nom de la relation.
Exemple : CLIENT (N° client, nom_cli, adresse, N° ccp)

3. L'attribut

Afin de pouvoir distinguer les colonnes d’une relation, et ainsi rendre leur
ordre sans importance, il est nécessaire d’associer un nom à chaque colonne.
Un attribut d’une table relationnelle est le nom d’une colonne de cette relation. Le nom
de cette colonne doit être unique pour la relation considérée. Les valeurs acceptées dans
chaque colonne respectent un certain nombre de règles et/ou appartiennent à un ensemble
défini de valeurs :
Un attribut est défini par rapport à un domaine.

4. Le domaine

Un domaine est un ensemble dans lequel les données prennent valeur, c'est-
à-dire dans lequel elles sont significatives.
Il peut être défini :

Prof KAF
- en extension, en donnant la liste des valeurs composantes ;
- en intention, en définissant une propriété caractéristique des valeurs du domaine.
A titre d’exemple, on peut considérer :
- le domaine des couleurs de l’arc-en-ciel, ce qui suffit à définir en intention ce domaine ;
- {rouge, orangé, jaune, vert, bleu, indigo, violet} si l'on souhaite définir en extension ce
même domaine. C'est l'utilisation de ce concept de domaine qui va faciliter les
rapprochements entre informations contenues dans des tables différentes, stockées dans
des colonnes aux noms différents et parfois même n'ayant d'autre lien entre elles que cette
appartenance à un même domaine.

5. Le degré 
Le degré d’une table est le nombre d’attributs composant cette table.

6. Le tuple
Tuple est l’ensemble des valeurs de chaque attribut pour un élément de la
relation. C'est en fait une ligne de la table ou une occurrence du lot d'informations. Une
relation est donc un ensemble de tuples et elle ne possède pas 2 tuples identiques.

7. La valeur
La valeur est le contenu d'un attribut pour un tuple donné.

En résumé

INDENTIFIANT NOM PRENOM GRADE


120120 KABAMBA Vincent Sergent
120121 BAJOMBA Bacc Adjudant
130131 KIAYIMA Bill Lieutenant
130130 KANKU Bobo Major

ATTRIBUTS

RELATION
ttribut1 Attribut2 Attribut3 Attribut4
Prof KAF
DEGRE=4

Fig 1. le résumé

8. Les différentes clés

1) Clé candidate d'une relation

Une clé candidate est un ensemble minimal d'attributs dont la connaissance


des valeurs permet d'identifier de façon unique un tuple de la relation considérée.
Une clé candidate peut donc être simple (mono-attribut) ou composée c'est à dire
comprendre plusieurs attributs. Dans ce cas, l’ensemble de ces attributs sera nécessaire
pour déterminer le tuple de façon unique.
Une relation possède donc toujours une clé : au moins l'ensemble de ses attributs, puisque
ses tuples diffèrent au moins par les valeurs d'un attribut.
Une relation peut donc aussi avoir plusieurs clés candidates.

2) Clé primaire

Un champ ou un ensemble de champs permettant d’identifier sans


ambiguïté tout enregistrement d’une table. Par essence les clés primaires sont uniques
(elles n’acceptent pas les doublons).
La clé primaire d'une table est choisie parmi les clés candidates. On la désigne souvent
par le terme de "clé".
Dans une relation exprimée en intention, les attributs constituant la clé sont, par
convention, soulignés.
Exemple : R (A1, A2, An)

3) Clé étrangère

Un champ ou un ensemble de champs à l’intérieur d’une table qui se


trouvent être la clé primaire d’une autre table.
Une clé étrangère, dans une relation, est constituée par un attribut ou un ensemble
d'attributs qui joue le rôle de clé primaire dans une autre relation.
Dans une relation exprimée en intention, les attributs ayant valeur de clé étrangère sont,
par convention, suivis d'un astérisque (*).
Exemple : R (A1, A2, An*)

9. Schéma d’une relation

Comme tout modèle de données, le modèle relationnel permet de décrire


des données dont les valeurs varient en fonction du temps. En particulier, les relations
varient car des tuples sont ajoutés, supprimés ou modifiés. Cependant la structure de la
relation est invariante, c’est ce que l’on appelle le schéma de la relation.

Prof KAF
Le schéma d’une relation est composé de son nom suivi de la liste de ses attributs
Exemple : RELATION (attribut 1, attribut 2, attribut 3,...attribut n)
Il est à souligner que le schéma d’une relation représente son intention, c’est à dire les
propriétés communes et invariantes des tuples qu.elle va contenir au cours du temps. Au
contraire, une relation représentée en extension est une représentation des tuples qu’elle
contient à un instant donné.
Exemple
STAGIAIRES (N° Identité, Nom, Prénom, Grade Définition en intention de la table
INDENTIFIAN NOM PRENOM GRADE
T
120120 KABAMBA Vincent Sergent Déf. en extension de la
120121 BAJOMBA Bacc Adjudant table
130131 KIAYIMA Bill Lieutenant
130130 KANKU Bobo Major

10. Les types de relations

Dans un modèle relationnel, on distingue plusieurs types de relations entre


les entités. Lors du passage du modèle conceptuel (logique) au modèle Physique ces
relations seront représentées soit par l’insertion de clés étrangères dans certaines tables,
soit par la création de nouvelles tables. Voici les relations utilisées en pratique :
Le modèle conceptuel représente toutes les relations existantes entre les entités. Par
exemple, il peut y avoir une entité Client et une entité Commande entre lesquelles il existe
une relation 1-vers-N.

Le modèle physique est la concrétisation du modèle logique une fois la base


cible choisie. Les entités deviennent des tables, les propriétés deviennent des champs dans
les tables, et on voit apparaître les clés étrangères ainsi que les tables donnant corps à
certaines relations multiples.

1. Relation Un -vers-Un

Une relation Un -vers-Un existe quand pour chaque clé primaire il y a zéro
ou une valeur correspondante pour un autre champ ou un autre enregistrement. Lorsque la
relation concerne des champs, ceux-ci sont généralement placés dans une même table,
mais cela n’est pas obligatoire. Lorsque la relation concerne des entités (des
enregistrements dans le modèle physique) elle peut s’entendre entre deux entités ou bien
d’une entité vers elle -même. Ce dernier cas permet la représentation de hiérarchies (par
exemple l’entité “ employé ” peut avoir une relation vers une autre entité “employé ” avec
la définition “ a pour chef... ”).
Un tel bouclage dune table sur elle-même s'appelle aussi une auto-jointure

Prof KAF
2. Relation Un -vers-N

Une relation Un -vers-N (un vers plusieurs) existe quand, pour chaque
enregistrement dans une table il existe zéro ou plusieurs enregistrements liés dans une
autre table (exemple : un client a plusieurs commandes).
3. Relation N-vers-Un

Une telle relation existe lorsque plusieurs enregistrements d’une même table
font référence de façon non ambiguë à un seul enregistrement d’une autre table. On
appelle parfois cette relation une relation “ Lookup ” ou table de référence car elle
représente une référence vers la clé primaire d’une autre table. Une relation N-vers-Un
impliquant des clés étrangères peut généralement être renversée (en Un -vers-N), alors
qu’une relation Un -vers-N impliquant que des clés primaires (liens identifiants) ne peut
pas être renversée en N-vers-Un.

4. Relation N-vers-N

Une telle relation existe lorsque plusieurs enregistrements d’une même table
sont liés à plusieurs autres enregistrements d’une autre table. Cette relation est réversible
par essence. Un exemple classique est celui des commandes et des articles : plusieurs
commandes peuvent faire références au même article, et plusieurs articles peut être
utilisés dans une même commande. Les bases de données relationnelles ne peuvent
représenter directement les relations N-vers-N, le concepteur de la base doit créer une
table intermédiaire (contenant des couples formés des clés primaires des deux tables en
relation plus d’éventuelles propriétés spécifiques à la relation). Si on utilise un outil de
type AMC Designor ou Win-Design, c’est cet outil qui lors de la traduction du modèle
logique en modèle physique fera apparaître la table intermédiaire automatiquement. Nous
verrons un tel exemple plus loin.

11. Passage du Modèle Conceptuel des Données au Modèle Logique

Au cours de l'analyse préalable à la mise en place d'une base de données, les


concepteurs utilisent pour modéliser les données du système d'information les concepts et
les règles du MCD. Le modèle obtenu est un schéma conceptuel de la future base, qu'il
faut ensuite transformer en un schéma interne pour préparer son implantation physique
sur les structures de stockage. Ce schéma interne correspond exactement à la définition
du Modèle Logique de Données, employé dans la méthode Merise.
Pour réaliser ce passage du MCD au MLD, il existe un certain nombre de règles édictées
en fonction de la nature de la relation (au sens Merise du terme) existant entre un ou
plusieurs objets.

Prof KAF
12. La transformation des objets du MCD
Dans tous les cas de figure :
o Les objets sont transformés en RELATION (ou TABLE).
o L'identifiant de l'objet devient la CLE PRIMAIRE unique de la table.
o Les propriétés deviennent des ATTRIBUTS de la table.

13. La transformation des relations conceptuelles

1. Cas des relations dites "de N vers N" :

 Une relation conceptuelle porteuse de cardinalités maximales égales à n sur chacun


de ses liens, qu’elle soit ou non porteuse de données, se transforme en une table
relationnelle.
 La clé primaire de cette table est composée des identifiants des objets participant à
la relation.
 Les propriétés portées par la relation conceptuelle deviennent les attributs non-clé
de la table.

Remarque : dans la relation Enseigner, les attributs Numclasse, Nummat et Numsalle


constituent la clef primaire composée, chacune jouant en même temps le rôle de clé
étrangère vis-à-vis de sa table de référence.

Prof KAF
14. Unicité d’occurrence

Lors de la définition des concepts de base d'une relation, il a été vu que :


o une relation est un ensemble de tuples ;
o une relation n'a pas deux lignes (tuples) identiques ;
o l'ordre des tuples d'une relation n'a pas d'importance ;
o l'ensemble ou un sous-ensemble des attributs composant la relation
suffit à identifier de manière unique chaque tuple (définition de la clé
candidate) ;
o chaque relation se voit attribuer une clé primaire, définie parmi les clés
candidates, pour identifier chaque tuple de la relation.

En conséquence, la règle d'unicité d'occurrence prévoit que :


Pour assurer l'unicité des tuples d'une relation, il ne peut exister deux tuples acceptant
les mêmes valeurs pour les attributs participant à la clé primaire.

II.7 LE SQL

II.7.1 DEFINITION
SQL (Structured Query Language, en français Langage de requêtes
structuré) est un langage de définition de données (LDD, ou en anglais DDL Data
Definition Language), un langage de manipulation de données (LMD, ou en anglais
DML, Data Manipulation Language), et un langage de contrôle de données (LCD, ou en
anglais DCL, Data Control Language), pour les bases de données relationnelles.
.
a. SQL est un langage de définition de données

SQL est un langage de définition de données (LDD), c'est-à-dire qu'il


permet de créer des tables dans une base de données relationnelle, ainsi que d'en modifier
ou en supprimer.

b. SQL est un langage de manipulation de données

SQL est un langage de manipulation de données (LMD), cela signifie qu'il


permet de sélectionner, insérer, modifier ou supprimer des données dans une table d'une
base de données relationnelle.

Prof KAF
c. SQL est un langage de protections d'accès

Il est possible avec SQL de définir des permissions au niveau des


utilisateurs d'une base de données. On parle de DCL (Data Control LanGUAGE ).
II.7.2. TYPOLOGIE DU LANGAGE

Il est possible d'inclure des requêtes SQL dans un programme écrit dans un
autre langage (en langage C par exemple), ainsi que d'envoyer directement les requêtes
SQL telles quelles au SGBD.
Il est possible d'ajouter des commentaires grâce :
• au caractère %. Tous les caractères situés après celui-ci sur la même ligne ne
seront pas interprétés
• aux délimiteurs /* et */. Tous les caractères compris entre les délimiteurs sont
considérés comme des commentaires Les commentaires ne peuvent pas être
imbriqués

Le langage SQL n'est pas sensible à la casse (en anglais case sensitive), cela
signifie que l'on peut aussi bien écrire les instructions en minuscules qu'en majuscule.
Toutefois, cette insensibilité à la casse n'est que partielle dans la mesure où la
différenciation entre minuscules et majuscules existe au niveau des identificateurs 'objets.

3. Le langage de manipulation de données

Le SQL est à la fois un langage de manipulation de données et un langage


de définition de données. Toutefois, la définition de données est l'oeuvre de
l'administrateur de la base de données, c'est pourquoi la plupart des personnes qui utilisent
le langage SQL ne se servent que du langage de manipulation de données, permettant de
sélectionner les données qui les intéressent

1. La commande SELECT

Le SELECT est la commande de base du SQL destinée à extraire des


données d’une base ou calculer de nouvelles données à partir d’existantes…
Voici la syntaxe générale d'une commande SELECT :

SELECT [DISTINCT ou ALL] * ou liste de colonnes


FROM nom de table ou de la vue
[WHERE prédicats]
[GROUP BY ordre des groupes]
[HAVING condition]
[ORDER BY ] liste de colonnes

Prof KAF
NOTA : dans cette syntaxe, les mots clef du SQL sont en majuscule droite, les paramètres
en minuscule et entre crochets on trouve les parties optionnelles.
En fait l'ordre SQL SELECT est composé de 6 clauses dont 4 sont optionnelles. Clauses
de l'ordre SELECT :

- SELECT : Spécification des colonnes du résultat


- FROM : Spécification des tables sur lesquelles porte l'ordre
- WHERE : Filtre portant sur les données (conditions à remplir pour que les lignes soient
présentes dans le résultat)
- GROUP BY : Définition d'un groupe (sous ensemble)
- HAVING : Filtre portant sur les résultats (conditions de regroupement des lignes)
- ORDER BY : Tri des données du résultat

NOTA : La plupart du temps, la difficulté réside dans la compréhension de la différence


entre le filtre WHERE et le filtre HAVING ; le filtre WHERE permet de filtrer les
données des tables tandis que le filtre HAVING permet de filtrer les données du résultat.
REMARQUE : pour spécifier une valeur littérale il faut l'entourer de guillemets simples.
Un premier exemple basique :
Exemple :

CLI_NOM CLI_PRENOM

DUPONT Alain
MARTIN Marc
SELECT CLI_NOM, CLI_PRENOM BOUVIER Alain
FROM T_CLIENT DUBOIS Paul
WHERE TIT_CODE = 'M.' DREYFUS Jean
FAURE Alain
PAUL Marcel
DUVAL Arsène
PHILIPPE André
CHABAUD Daniel
BAILLY Jean-François

Permet de trouver les noms et prénoms des clients dont le titre est ‘M.’ (monsieur).

NOTA : comme tous les paramètres à prendre sous forme de littéraux doivent être
exprimées entourés d'apostrophes (simples côtes), il faut dédoubler un tel caractère s'il
s'avère présent dans la chaîne utilisée.

1.1 L’opérateur * (étoile)

Le caractère * (étoile) récupère toutes les colonnes de la table précisée dans


la clause FROM de la requête. Juste après le mot clef SELECT, on précise les colonnes de
la table qui doivent être présentées dans la réponse. L’utilisation du caractère étoile

Prof KAF
ramène toutes les colonnes de la table dans la réponse. Dans le cas contraire il faut
expressément nommer chacune des colonnes et les séparer par des virgules.
Exemple :

SELECT *
FROM T_CLIENT
WHERE TIT_CODE = “M”
CLI ID TIT CODE CLI NOM CLI PRENOM CLI ENSEIGNE
1 M. DUPONT ALAIN NULL
2 M. MARTIN MARC Trans. MARTIN
3 M. BOUVIER ALAIN NULL
4 M. DUBOIS PAUL NULL
5 M. DREYFUS JEAN NULL
6 M. FAURE ALAIN Boulangerie
11 M. PAUL MARCEL Cie internationale
Machines Electromécaniques

Notons la présence à plusieurs reprises du mot clef "NULL" dans la


colonne CLI_ENSEIGNE. Non il ne s'agit pas d'une enseigne particulière, mais
simplement de l'absence d'information. Nous verrons que l'absence d'information, c'est le
marquer "NULL" qui diffère de la chaîne de caractère vierge ("") ou encore du zéro.

1.2 L’opérateur DISTINCT (ou ALL)

Lorsque le moteur construit la réponse, il rapatrie toutes les lignes


correspondantes, généralement dans l’ordre où il les trouve, même si ces dernières sont en
double, c'est-à-dire qu'il récupère toutes les lignes (ALL par défaut). C’est pourquoi il est
souvent nécessaire d’utiliser le mot clef
DISTINCT qui permet d‘éliminer les doublons dans la réponse.

1.3 Opérateur AS

Permet d’ajouter autant de colonnes, en principe l’opérateur AS sert à


donner un nom à de nouvelles colonnes créées par la requête.

1.4 Opérateur de concaténation ||

L'opérateur || (double barre verticale) permet de concaténer des champs de


type caractères
Néanmoins on trouve dans certains SGBDR le + comme opérateur de concaténation,
comme la fonction CONCAT.

1.5 Opérateur mathématiques de base (+,-, *, /,)

Prof KAF
On peut utiliser les opérateurs mathématiques de base (+,-, *, /,), pour
combiner différentes colonnes.

1.6 Particularité du "FROM"


Il est possible de surnommer une table dans la clause FROM, dans ce cas, la
syntaxe de la partie FROM de la commande SELECT est la suivante : FROM
nom_de_table ou nom_de_la_vue surnom

1.7 Utilisation du caractère double quotte (guillemet)

Lorsqu’un nom d’un élément d’une base de données (table, colonne par
exemple) est identique à un mot clef du SQL, il convient de l’entourer de guillemets
(double quote). En principe, les mots réservés du SQL sont déconseillés pour nommer des
objets du modèle physique de données...
Imaginons une table de nom JOIN, composée des champs suivants

2. Clause ORDER BY

ORDER BY colonne1 | 1 [ASC ou DESC] [, colonne2 | 2 [ASC ou DESC].


Cette clause permet de définir le tri des colonnes de la réponse, soit en précisant le nom
littéral de la colonne, soit en précisant son n° d'ordre dans l'énumération qui suit le mot
clef SELECT. ASC spécifie l’ordre ascendant et DESC l’ordre descendant du tri. ASC ou
DESC peut être omis, dans ce cas c'est l'ordre ascendant qui est utilisé par défaut.
Bien que la clause ORDER BY ne soit pas nécessaire, il est souvent utile de trier la
réponse en fonction des colonnes. En revanche le temps de réponse s'en ressent souvent.
Pour spécifier l'ordre de tri, on doit placer les noms des colonnes séparées par des virgules
juste après le mot Clef "ORDER BY", dans l'ordre voulu. On peut aussi utiliser le rang de
chaque colonne dans l'ordre spécifié dans la clause SELECT.

NOTA : le tri est un tri interne, il ne faut donc placer dans cette clause que les noms des
colonnes présentées dans la clause SELECT. Souvent, le fait de placer DISTINCT suffit,
en général, à établir un tri puisque le moteur doit se livrer à une comparaison des lignes
mais ce mécanisme n'est pas garantit car ce tri s’effectue dans un ordre non contrôlable
qui peut varier d’un serveur à l’autre.
La clause ORDER BY est la dernière clause de tout ordre SQL et ne doit figurer qu'une
seule fois dans le SELECT, même s'i l existe des requêtes imbriquées ou un jeu de
requêtes ensemblistes

3. La clause WHERE

WHERE prédicats

Prof KAF
Le prédicat doit contenir n’importe quelle expression logique renvoyant une valeur vraie.
Ainsi, une requête aussi stupide que la suivante, est supposée fonctionner :

Attention : la plupart des SGBDR ne comporte pas de colonne de type booléen. Une
requête comme la première risque d'échouer.

3.1 Opérateurs de comparaison Dans la clause WHERE, vous disposez de différents


opérateurs de comparaisons logiques :
WHERE valeur1 [NOT et] = ou < ou <= ou > ou >= ou <>valeur2 [OR ou AND ...]

3.2 Opérateur IN

L'opérateur IN permet de rechercher si une valeur se trouve dans un


ensemble donné, quel que soit le type des valeurs de référence spécifiées (alpha,
numérique, date…). Bien entendu, il est possible d’inverser le fonctionnement de
l’opérateur IN en lui adjoignant l’opérateur NOT.

3.3 Opérateur BETWEEN

L'opérateur BETWEEN permet de rechercher si une valeur se trouve dans


un intervalle donné, quel que soit le type des valeurs de référence spécifiées (alpha,
numérique, date…)
Ainsi, la requête vue dans l'exemple 12 peut s'écrire :

NOTA : les opérateurs IN et BETWEEN sont très pratiques dans le cas où l’on désire
effectuer des requêtes où l’utilisateur peut saisir une liste de choix multiples (IN) ou une
plage de valeur (BETWEEN).

3.4 Opérateur LIKE

L'opérateur LIKE permet d’effectuer une comparaison partielle. Il est


surtout employé avec les colonnes contenant des données de type alpha. Il utilise les
jokers % et _ (‘pour cent’ et
‘blanc souligné’). Le joker % remplace n'importe quelle chaîne de caractères, y compris la
chaîne vide. Le blanc souligné remplace un et un seul caractère.

On recherche le client dont le nom commence par B. Mais si les données


sont susceptibles de contenir un des deux caractères joker, alors il faut recourir à une
séquence d’échappement, à l’aide du mot clef ESCAPE…

3.5 Résumé des opérateurs pour les prédicats de la clause WHERE Voici un tableau
résumant les principaux opérateurs utilisés pour la construction des prédicats :
o connecteurs logiques {OR | AND}

Prof KAF
o opérateur de négation NOT
o parenthèses (...)
o opérateurs mathématiques + - * /
o comparaison logique IS [NOT] {TRUE | FALSE | UNKNOWN}
o comparaison avec valeur IS [NOT] NULL
o intervalle valeur BETWEEN borne_basse AND borne_haute
o comparaison partielle de chaîne de caractères valeur LIKE motif [ESCAPE
Échappement]
o comparaison à une liste de valeur [NOT] IN (liste)

4. Fonctions diverses

4.1 Transtypage à l'aide de la fonction CAST

Il permet de changer le type de données d'une colonne afin d’effectuer une


comparaison de données de type hétérogène par exemple entre un champ contenant des
données numériques et un champ contenant des données de type chaîne de caractères…
Sa syntaxe est CAST (colonne AS nouveau type). L’opérateur CAST permet de
transtyper les valeurs contenues dans une colonne. Bien entendu il faut qu'un type de
donnée puisse être convertis dans un autre type (compatibilité de types) afin que le
réponse ne soit pas entaché d'erreurs ou d'omissions.

4.2 Mise en majuscule / Minuscule

Les opérateurs LOWER et UPPER permettent de mettre en majuscule ou en


minuscule des chaînes de caractères dans les requêtes.

NOTA : pour effectuer une recherche en ne tenant aucunement compte de la différence


entre majuscules et minuscules, il faut utiliser l’opérateur UPPER (ou lower mais
attention à la transformation des accents)

4.3 Supprimer les blancs (ou tout autre caractères)

La fonction TRIM permet de supprimer en tête ou en queue (ou les deux) le


blanc ou tout autre caractère spécifié.
TRIM ([LEADING ou TRAILING ou BOTH] [caractère] FROM nom de colonne)
LEADING : suppression en tête
TRAILING : suppression en queue
BOTH : suppression en tête et en queue Dans notre table téléphone, nous voulons
supprimer le zéro de tête des n° afin de pouvoir les communiquer aux étrangers qui n’ont
pas besoin de composer ce chiffre (ils doivent simplement composer le 00 33 suivi du
numéro à 9 chiffres).

Prof KAF
NOTA : certains serveurs SQL proposent différentes fonctions comme LTRIM et RTRIM
pour une suppression des blancs en tête ou en queue.

4.4 Extraire une sous chaîne


La fonction SUBSTRING permet d’extraire une sous chaîne d’une chaîne
de caractère. Elle a besoin de l’ordre du premier caractère et du nombre de caractères sur
lequel elle doit opérer.
SUBSTRING ( nom de colonne FROMnTOm)
Extrait la sous chaîne de nom de colonne en commençant à n sur m caractères.

4.5 Opérateur de traitement des dates

4.5.1 Extraire un paramètre temporel d'une date

L’opérateur EXTRACT permet d’extraire depuis une date, le jour le mois


ou l’année…
EXTRACT (YEAR ou MONTH ou DAY FROM nom de colonne )
Dans la table des réservation on recherche l'identifiant des chambres ayant
été réservées au cours du mois de mai de n'importe quelle année et pour 3 personnes
NOTA : il est dommage de constater que la fonction EXTRACT du standard SQL,
souvent fort utile, est rarement présente dans les moteurs de bases de données. Ni Access,
ni Oracle, ni Sybase, ni SQL Server en sont doté. Seul le middleware BDE de Borland
Inprise Corel permet d'exploiter pleinement cette fonction avec les SGBDR Paradox,
dBase, FoxPro, InterBase, MSSQL, Sybase, Informix, DB2, Oracle.

4.5.2 Heure et date courante

L’heure courante, la date courante et le combiné date/heure courant peuvent


être obtenu à l’aide des fonctions CURRENT_DATE, CURRENT_TIME et
CURRENT_TIMESTAMP

4.6 Opérateurs statistiques

Il est possible de réaliser des comptages statistiques sur les colonnes, à


l'aide des opérateurs AVG (moyenne), MAX (maximum), MIN (minimum), SUM (total),
COUNT (nombre). On les appellent aussi fonctions d'agrégations.

4.7 Autres fonctions normalisées

Prof KAF
o BIT_LENGTH Taille d'une colonne de type BIT ou BIT VARYING (nombre
de bits) CHAR_LENGTH Taille d'une colonne de type caractère (nombre de
caractères)
o OCTET_LENGTH Taille d'une colonne de type caractère (nombre d'octets)
o CURRENT_DATE Date en cours
o CURRENT_TIME Heure en cours
o CURRENT_TIMESTAMP Date et heure en cours
o CONVERT Conversion paramétrée d'une chaîne de caractères
o POSITION Position d'une chaîne de caractères dans une sous chaîne
o TRANSLATE Traduction d'une chaîne de caractères dans un format spécifié

4.8 Autres opérateurs mathématiques (non normalisés)

Les opérateurs ci dessous peuvent être implémentés dans différents moteurs.

 ABS valeur absolue


 MOD modulo
 SIGN signe
 SQRT racine carrée
 CEIL plus petit entier
 FLOOR plus grand entier
 ROUND arrondi
 TRUNC tronqué
 EXP exponentielle

 LN logarithme népérien
 LOG logarithme décimal
 POWER puissance
 COS cosinus
 COSH cosinus hyperbolique
 SIN sinus
 SINH sinus hyperbolique
 TAN tangente

 Pi TANH tangente hyperbolique


 PI constante

Prof KAF
48

Certains sont rarement implémentés du fait que les SGBDR sont axés sur
l’informatique de gestion, la collecte et le traitement d’informations et non le calcul
mathématique.

5. Négation de valeurs NOT

C'est l'opérateur NOT qui réalise la négation de valeurs et inverse la valeur


logique d'un prédicat.
L'opérateur NOT peut être combiné avec la plupart des opérateurs de comparaison. Mais
il devient très intéressant lorsqu'il est combiné aux opérateurs IN, BETWEEN, LIKE et
NULL

II.8 LA NORMALISATION

II.8.1. BUT ET PRINCIPE

Il y a plusieurs bonnes raisons de normaliser une base de données, la


première relève uniquement du bon sens : La BD, et tous les serveurs SQL, ont été
conçus sur la base de l’hypothèse que les bases qu’ils auraient à traiter seraient
normalisées. De ce fait, ces SGBD-R sont plus efficaces lorsque la base utilisée est
normalisée. Cela peut paraître une évidence, mais tout va mieux lorsqu’on le dit...

Parmi les raisons plus spécifiquement liées au relationnel, la normalisation


apporte : des requêtes plus simples à écrire, des données plus facilement accessibles ;
une meilleure intégrité des données ; la diminution des erreurs lors de l’insertion ou de la
suppression de nouvelles données et une utilisation optimale des ressources.
Il faut tout de même préciser que la normalisation des bases de données
n’est pas une fin en soi, seulement un outil pratique et performant et que chaque
concepteur de base de données doit décider si, dans un cas précis, la normalisation est la
solution la plus efficace.
La dénormalisation est une opération parfois nécessaire, toutefois il faut
bien l’entendre dans le sens que son nom indique : la suppression d’une normalisation
existante... Il est donc toujours préférable, au niveau conceptuel, de commencer par
concevoir une base de données normalisée. Ensuite, et seulement ensuite, on peut
dénormaliser en justifiant et en assumant chaque opération ponctuelle de ce type.

Normaliser une base consiste à appliquer des règles regroupées sous la


dénomination de « Formes normales ». Ces règles sont aussi utilisées, dans l’autre sens,
pour valider l’état de normalisation d’une base Les formes normales sous entendent que
chaque table possède une clé primaire. Chaque forme porte un numéro d’ordre (ou un
acronyme).

II.8.2. PRATIQUE DE LA NORMALISATION

 En pratique, normaliser un schéma relationnel c’est remplacer chaque relation du


schéma par des relations qui sont dans la forme normale voulue.
49

 Le schéma est équivalent si la jointure naturelle sur les attributs communs des
relations obtenues par éclatement redonne la relation de départ.
 Normaliser une relation consiste à extraire les DF internes qui posent des
problèmes, en les transférant dans de nouvelles relations.

II.8.3. THEOREMES IMPORTANTS


Cas simple pour lequel on peut éclater une relation en deux relations, en
étant certain de retrouver la relation de départ par jointure sur les attributs communs.
 Théorème de décomposition sans perte de données : soit une relation R (A, B, C)
ou A, B et C sont des ensemble d’attributs disjoints, avec B C, alors R (A, B,
C) = R A, B] j(B) R A, B] (on peut dire que l’on ’’extrait’’ la DF de R).
Exemple d’éclatement sans perte de données :
Employé (Matricule, Nomemp, dept)
Département ( Dept, Nomdept)

a. Première forme normale (1FN):

Il s’agit de la première règle qu’on pourrait dire fondatrice. Elle fait partie
de la définition formelle des bases de données relationnelles.
Cette règle stipule que les champs de chaque table doivent être atomiques et qu’il ne
peut exister de champs répétitifs. De plus, chaque champ doit avoir une signification
précise constante dans le temps. En d’autres termes chaque entité doit posséder un
identifiant qui caractérise ses individus de manière unique. 

b. Deuxième forme normale (2FN) :

Une relation respecte la seconde forme normale lorsque toutes ses


propriétés non-clé sont totalement dépendantes fonctionnellement de la totalité de la clé
primaire.
Si X et Y sont des colonnes et que X est une clé, alors pour tout Z qui est un sous-
ensemble de X, il ne peut y avoir Z Y. En d’autres termes une relation est en 2FN
Si elle est en 1FN et si chaque attribut qui ne fait partie d’aucune clé candidate ne
dépend pas d’une partie stricte d’une clé candidate.

c. Troisième forme normale (3FN) :

Une relation est dite dans la troisième forme normale si aucun champ non-
clé n’est en dépendance transitive avec la clé primaire.
Ce qu’on peut noter aussi : soit trois colonnes (A, B, C), A étant la clé primaire, si (A
B) et que (B C) on peut en déduire que (A C), dans ce cas il existe une relation
transitive entre A et C et la table n’est pas dans la 3NF. Ou encore une relation est en
3FN si tout attribut qui ne fait pas partie d’une clé candidate ne peut dépendre que d’une
clé candidate.
En fait il s’agit toujours de bon sens et cette définition peut se comprendre
facilement : si la valeur d’un champ non-clé peut être déduite de la valeur d’une autre
50

champ non-clé alors sa relation à la clé primaire est, par force, transitive (puisqu’elle
transite par un autre champ) et la table n’est pas dans la troisième forme normale.

d. Forme normale de Boyce-Codd (FNBC)

Cette forme normale est une extension de la troisième forme, elle seule
supprime toute dépendance transitive. Si la table possède plus d’un candidat pour la clé
primaire, elle doit être examinée selon le point de vue de chacune de ces clés
potentielles. Si après un tel examen elle se trouve toujours être dans la troisième forme
normale (quel que soit la clé primaire choisie) alors elle est dans la forme normale de
Boyce-Codd.
Une FNBC est toujours en 3FN mais l’inverse n’est pas vrai car pour la 3FN on
n’impose rien pour les DF dont le but est un attribut clé

II.9 L'ALGEBRE RELATIONNELLE

Collection d’opérations formelles agissant sur des relations et produisant


des relations en résultat.
Analogie: l’algèbre relationnelle est aux relations ce que l’arithmétique est aux nombres
entiers.
But: spécifier des interrogations sur une base de données pour en tirer des informations.
Moyen:
o combinaison de relations entre elles;
o sélection de tuples;
o sélection d’attributs.
Quatre opérations ensemblistes :
o union
o intersection
o différence
o produit cartésien
Trois opérations spécifiques des BD relationnelles :
o sélection
o projection
o jointure

a. Opérations ensemblistes

Union (), intersection ( ) et différence ( -)

Opérations binaires
51

Restriction: les deux relations doivent avoir le même schéma de relation


(les noms d’attribut peuvent être éventuellement différents)
Type du résultat: si r et s sont des relations sur le schéma R, alors r s, r
 s et r-s sont toutes des relations sur le schéma R.

Exemple: Soit les relations auteur et rédEnChef sur le schéma

PERSONNE(NOM,PRÉNOM)

Produit cartésien (x)


 Opération binaire
 Résultat: relation qui a pour schéma la juxtaposition des deux schémas opérande
et pour tuples toutes les combinaisons de tuples des deux relations opérande
Exemple:
52

b. Opérations spécifiques des BD relationnelles.

b.1 Opération de sélection

Sélection ()
 opération unaire
 résultat: relation composée des tuples qui vérifient une condition spécifiée dans la
sélection
 expression de la condition:
- des opérandes (noms d’attribut et valeurs de dom.)
- des opérateurs logiques (=, <,, >,,)
- des connecteurs logiques (,et)
Exemple:
 (COUL.=rouge) (QUALITÉ très bonne) (vins)
53

C. Opération de projection

Projection ( )
 opération unaire qui consiste à enlever à la relation initiale tous les attributs non
mentionnés dans la projection et à éliminer les tuples à double
 résultat: relation restreinte aux attributs spécifiés dans la projection

Exemple :
54

c. Opération de jointure

1. Jointure ( )

2. opération binaire (sur les relations r et s )

Résultat: relation qui contient l’ensemble de tous les tuples obtenus en


concaténant un tuple de r et un tuple de s vérifiant une condition (condition de jointure)
expression de la condition de jointure :
<condition ><condtion>...<condition> où chaque <condition> est de la forme
(AB), A est un attribut de r , B un attribut de s , A et B ont le même domaine et est
un opérateur de comparaison (=,>,...)

e. Opération de jointure (variantes)

 Equi-jointure
 si le seul opérateur utilisé dans la condition de jointure est l’égalité, l’opération
est appelée équi-jointure Jointure naturelle
 dans le cas de l’équi-jointure, les colonnes jointes ont toujours un contenu
identique, on en supprime une, dans ce cas l’opération est appelée jointure
naturelle
 restriction: il faut que les attributs à joindre portent le même nom
55

 Expressions algébriques

Le résultat d’une opération algébrique est une relation –> cette nouvelle relation peut à
son tour être utilisée dans une opération algébrique Règles d’écriture On obtient une e
xpression a lgébrique b ien f ormée (eabf) en applicant les règles suivantes:

 un nom de relation est une eabf


 si E 1 et E 2 sont des eabf, alors 4) (E 1 E 2 ), (E 1 E 2 ) et (E 1 E 2 ) sont
des eabf pour autant que E 1 et E 2 aient le même schéma 5) (E 1 E 2 ) est
une eabf 6) (E 1 <condition> E 2 ) est une eabf si tous les attributs de la
condition aux schémas de E 1 et de E 27) <liste d’attributs> (E 1) est une
eabf si tous les attributs de la liste au schéma de E 18) <condition> (E1) est
une eabf si tous les attributs de la condition au schéma de E 1
 rien d’autre n’est une eabf

Ensemble d’opérations complète pour l’algèbre relationnelle


56

On peut monter que {,,,,} est un ensemble complet, c’est à dire que l’on peut
exprimer les autres opérations comme une séquence d’opérations de cet ensemble:

Exemples d’expressions algébriques

Portant sur les trois relations cru vins cépage-région CRU


(nom-cru :string, commune :string, région : string, coul .: couleurs) où couleurs = {rosé,
blanc, rouge} Prédicat: ||cru( nom-cru ,commune,région,coul.)|| “Le cru qui s’appelle
nom-cru est produit dans la commune de commune se trouvant dans la région derégion
et la couleur du cru est coul .”

1. VINS

(région :string, coul .:couleurs, mill .:entier, qualité :qualités) où qualités = {médiocre,
passable, moyenne, bonne, très bonne, excellente}||vins( région , coul ., mill ., qualité) ||
“Le millésime mill.des vins coul . de région est de qualités qualité”.

2. CÉPAGE-RÉGION

(Cépage : sortes-de-raisin, r.prod.:string,coul .: couleurs) où sortes-de-raisin =


{chardonnay, sémillon, pinot noir, cabernet-sauvignon}
||cépage-région(cépage , r.prod. ,coul .)|| “Dans la région de r.prod le vin coul.
Est produit principalement avec du cépage
57

II.10. ARCHITECTURE CLIENT - SERVER

Dans un monde où la course à la productivité conduit les technologies à évoluer de plus en plus
vite, le client-serveur s'est taillé une part de choix depuis le début des années 1990. En effet, il
faut pouvoir disposer de systèmes d'information évolutifs permettant une coopération fructueuse
entre les différentes entités de l'entreprise. Les systèmes des années 70 et 80 ne répondaient pas
à ces exigences.
58

Les contraintes de l'entreprise

Les entreprises sont soumises à des contraintes de plus en plus fortes, aussi bien du monde
extérieur que de l'intérieur de l'entreprise. Les contraintes externes sont imposées par les clients
de plus en plus exigeants, la régulation de plus en plus complexe, la compétition de plus en plus
dure qui conduit à réduire le temps de passage d'un produit de la conception à la vente. Plus
précisément, il s'agit donc de :
 mieux satisfaire les clients, par exemple en leur présentant des informations
consolidées et claires ;
 respecter les régulations en vigueur, malgré leur évolutivité, par exemple en étant
capable de générer rapidement de nouvelles déclarations ;
 produire mieux et plus vite les nouveaux produits, de sorte à participer à la
compétition active vers la nouveauté, et à réduire le time ta market.

Définition

Ce paragraphe propose une vue d'ensemble de l'architecture client-serveur et définit les notions
de base indispensables à la compréhension du modèle. Qu'est-ce que le client-serveur? C'est
avant tout un mode de dialogue entre deux processus. Le premier appelé client demande
l'exécution de services au second appelé serveur. Le serveur accomplit les services et envoie en
retour des réponses. En général, un serveur est capable de traiter les requêtes de plusieurs
clients. Un serveur permet donc de partager des ressources entre plusieurs clients qui s'adressent
à lui par des requêtes envoyées sous forme de messages.

Le client-serveur étant un mode de dialogue, il peut être utilisé pour réaliser de multiples
fonctions. Il existe donc différents types de client-serveur qui ont été définis dans un schéma
célèbre publié pour la première fois par le Gartner Group. On distingue plus particulièrement le
client-serveur de présentation, le client serveur de données et le client-serveur de procédures.
Avec le client serveur de présentation, le client assure seulement l'affichage et la saisie des
informations. Avec le client-serveur de données, le serveur accomplit la gestion des données.
Dans le cas du serveur de procédures, le serveur exécute des procédures pour le compte des
clients; ces procédures peuvent accéder aux données. Ces deux derniers types de client-serveur
convergent aujourd'hui vers une architecture client-serveur de données et procédures

Notions de base

Le modèle de communication client-serveur est orienté vers la fourniture de services par un


processus serveur à un processus client. Un échange consiste donc en la transmission d'une
requête à un serveur, qui exécute l'opération demandée et envoie en retour la réponse. Nous
définissons ci-dessous plus précisément ces concepts de base.

Notion 1 : Client (Client)


Processus demandant l'exécution d'une opération à un autre processus par envoi d'un message
contenant le descriptif de l'opération à exécuter et attendant la réponse à cette opération par un
message en retour.

Notion 2 : Serveur (Server)


Processus accomplissant une opération sur demande d'un client et transmettant la réponse à ce
client.
59

Notion 3 :Requête (Request)


Message transmis par un client à un serveur décrivant l'opération à exécuter pour le compte du
client.

Notion 4 :Réponse(Reply)
Message transmis par un serveur à un client suite à l'exécution d'une opération contenant les
paramètres de retour de l'opération.

En résumé, la figure suivante illustre ces notions: un client exécute une application et demande
l'exécution d'une opération à un serveur par le biais d'une requête. Il reçoit une réponse, lui
indiquant par exemple que l'opération a été bien exécutée. Les appels au service de transport
mis en jeu sont au nombre de quatre: SendRequest() permet au client d'émettre le message
décrivant la requête à une adresse correspondant à la porte d'écoute du serveur, ReceiveReply()
permet au client de recevoir la réponse en provenance du serveur ; ReceiveRequest() permet au
serveur de recevoir la requête sur sa porte d'écoute, SendReply() permet au serveur d'envoyer la
réponse sur la porte d'écoute du client.

Différents types de clients server

On distingue : le client server de présentation, de données, de procédure.

Client server de données et procédure

La tendance est donc d'aller vers un système d'information du type client-serveur de données et
procédures. De plus en plus souvent, ce type de client-serveur permet de mettre en commun des
procédures communes autour de la base de données au niveau du serveur, et donc de répartir les
traitements entre client et serveur.
Plus précisément, les composants d'une telle architecture (cf. figure 5) sont les suivants :
1. Les clients. Ils supportent le code de l'application non lié directement aux données. Ce code
est réalisé grâce à un outil de développement d'application. Il implémente les dialogues
interactifs avec les utilisateurs, les traitements spécialisés des messages, l'affichage des
résultats.
2. Le serveur. Il assure le stockage, la distribution, la gestion de la disponibilité et de la sécurité
des données. Il permet l'accès transactionnel et décisionnel aux informations.

Classiquement, il regroupe les fonctionnalités du SGBD et sera aujourd'hui bâti autour du


modèle relationnel, qui est simple, clair, et évolutif. Il devra aussi autoriser la mise en commun
de traitements communs, souvent liés aux données de la base, par le moyen de procédures
stockées.
60

3. Le réseau. Avec les protocoles réseau de transport et d'échange de requêtes, il permet le


transfert des demandes et des résultats. Il assure la connectabilité des outils clients au serveur;
l'outil de connectabilité permet l'encodage des requêtes en messages sur le client, et le décodage
sur le serveur, et vice versa pour les réponses.
61

ANNEXE
62

A - GENERALITES
Qu'est-ce que SQL ?

L'utilisation du langage SQL (Structured Query Language) permet de normaliser le


developpement des applications de bases de donnees relationnelles dans les
entreprises.

SQL est un langage evolue de manipulation de bases de donnees relationnelles, il


opere sur des ensembles logiques de donnees appeles relations.

SQL comprend un ensemble de commandes permettant de definir, de mettre a jour et


d'afficher les informations des tables.

SQL a ete developpe chez IBM dans le milieu des annees 70. Adopts des sa
parution par de nombreuses societes, il est considers aujourd'hui comme une norme
dans les environnements de grandes et moyennes entreprises.
B - REQUETES DE SELECTION SUR UNE TABLE

1 - L'instruction SELECT
SELECT nom champ1, nom champ2, ... FROM table ;

Le nom de champ sert d'en tete de colonne, pour utiliser un autre titre, appele alias, utiliser
('instruction AS

Ex : Liste des employes et date de naissance


SELECT nom, date_naissance as «date de naissance» FROM employes
Remarque : SELECT * FROM table;
Cette instruction permet d'afficher toutes les colonnes.

Exercices :

1- Liste de toutes les informations des employes

2 - Liste des employes (nom, prónom)

3 - Liste des clients (societe, contact))

2 - Clause DISTINCT

N'affiche qu'un exemplaire de chaque jeu de lignes identiques. SELECT DISTINCT nom
champl, nom champ2, ... FROM table ;

Ex : Liste des produits achetes


SELECT DISTINCT ref produit FROM Details_commandes

3 - Clause WHERE

L'instruction WHERE permet d'introduire une condition pour specifier les lignes a afficher.
SELECT nom champ1, nom champ2, ...
FROM table
WHERE condition

Ex : Liste des clients dont la fonction est chef des ventes


SELECT code_client, societe
FROM clients
WHERE fonction = 'chef des ventes'
Remarque :
Pour construire une condition on dispose de plusieurs operateurs : = , >= , <=, > , < , <> et ! qui
est la negation soit : !> , !< , !=
Pour combiner plusieurs conditions, utiliser les operateurs logiques AND, OR et NOT.
Pour comparer un champ a du texte, on utilisera le caractere " ' " pour encadrer le texte. Pour
comparer un champ a une valeur numerique, ce caractere ne doit pas etre employe.
Exercices :

4 - Liste des clients habitant London

4bis- Liste des clients habitant Marseille et Nantes

5 - dates des commandes realisees par l'employó 8

6 - Date d'embauche de l'employó nommó King

7 - Quantitó en stock et libel/6 du produit ref 39

7bis- Employes embauches apres le 25 janvier 93

4 - Utilisation des attributs Between, In, Like

Ces instructions permettent de specifier les conditions de recherche.

- Between peut-titre utilise pour verifier si une valeur de colonne (caractere, date,
numerique) se situe entre 2 valeurs.

Ex : Liste des produits dont la quantite en stock est comprise entre


100 et 200 SELECT ref produit, unites_en_stock
FROM produits
WHERE unites_en_stock BETWEEN 100 and 200

- In verifie si une valeur de colonne correspond a l'une de celle specifie dans la liste

- Not In verifie si une valeur de colonne ne correspond pas a l'une de celle specifie
dans la liste
Ex : Liste des clients n 'habitant pas a Paris, Monteal ou
Londres SELECT societe, ville
FROM clients
WHERE ville NOT IN ('Paris', 'Montreal','London')

- Like selectionne les lignes en comparant la valeur d'une colonne de type caractere a
une chaine de caracteres specifiee.

Remarque : Le caractere % represente n'importe quel nombre de


caracteres. Le caractere _ represente un seul caractere
quelconque.

Ex : Liste des clients du departement


75 SELECT societe,
code_postal FROM clients
WHERE code_postal like 75%'

Ex : Liste des employes dont la fonction contient le mot "


assistant " SELECT *
FROM employes
WHERE fonction like '%assistant%'
Exercice :

8 – Nom de sociótó, contact du client habitant une adresse dont le nom contient le
mot "place "

5 - Utilisation d'expressions
Dans la clause SELECT on peut :
- inserer des instructions descriptives qui seraient repetees a chaque ligne,
- definir une nouvelle colonne (colonne calculee)
SELECT nom champl, nom champ2, ..., expression calculee, "expression repetee"
FROM table ;

Ex d'expression numerique :
Liste des lignes commandes avec le total facture par ligne (hors remise)
SELECT ref produit, quantite, prix_unitaire, quantite * prix_unitaire as total
FROM details commandes
Liste des lignes commandes dont le montant est inferieur a 100 f
SELECT n_commande, prix_unitaire * quantite as montant
FROM details_commandes
WHERE prix_unitaire * quantite <100

Ex d'expression sur les dates :


Liste des commandes avec le nombre de jour entre la date de livraison et la date de
commande
SELECT n_commande, (a_livrer_avant)-(date_commande)
FROM commandes

Ex d'expression sur les caracteres :


Afficher sur une seule colonne le nom et prenom des employes
SELECT nom +' + prenom
FROM employes

Exercices :

9 - Nom du produit et evaluation du stock des produits references 38

6 - Utilisation de fonctions
II existe 3 principaux types de fonctions dans le langage SQL : les fonctions mathematiques et
statistiques, les fonctions de date et les fonctions relatives aux caracteres.

a) Fonctions mathematiques et statistiques


COUNT 0 compte le nombre les lignes

SUM 0 additionne les valeurs dune colonne numerique


MIN 0 trouve la valeur minimale dune colonne de type
caractere ou numerique MAX 0 trouve la valeur maximale dune colonne de type

caractere ou numerique AVG 0 calcule la moyenne des valeurs dune colonne

Ex : Nombre d'employes
SELECT COUNT (*) FROM employes ;

Ex : Prix unitaire maximum, minimu et moyen


SELECT MAX(prix_unitaire), MIN(prix_unitaire), AVG(prix_unitaire) FROM
produits

Exercices :

10 - Prix unitaire du produit le plus cher

10 bis – Dólai moyen, maximum et minimum entre commande et livraison

11 - Nombre de commandes effectuóes par le client code LILAS

11 bis – Date de naissance de remployó le plus jeune

b) Fonctions de date

Current Date : renvoie la date du jour

Month() : renvoie le mois d'une colonne de type date


Year() : renvoie l'annee d'une colonne de type date

Day() : renvoie le jour d'une colonne de type date


Ex : Liste des employes nes au mois de janvier
SELECT *
FROM employes
WHERE month(date_naissance)=1

Exercices :

12 - Liste des employes embauches en 1992

13 - Liste des employes embauches en 1993 et 1994

c) Fonctions relatives aux caracteres

LEFT(colonne, i) : renvoie les i caracteres situes a gauche de la colonne RIGHT(colonne,


i) : renvoie les i caracteres situes a droite de la colonne LENGTH(colonne) : renvoie le
nombre de caracteres d'une colonne

SUBSTR(colonne, i, j) : renvoie les j caracteres de la colonne a partir de la ierne position


Ex : Liste des produits dont la reference se termine par 5
SELECT ref produit
FROM produits
WHERE right(ref produit,1)='5'

Ex : Nombre de clients dans le departement


67
SELECT COUNT (*)
FROM clients
WHERE LEFT(Code_postal,2)='67'

7- Classement des donnees

La clause ORDER BY specifie la liste des colonnes sur lesquelles l'affichage doit titre
the (ASC ou DESC).

Ex : Liste des employes classes selon la date


d'embauche SELECT nom, date_embauche
FROM employes
ORDER BY date_embauche

Exercice :

14 - Classer par ordre dócroissant de prix, les produits vendus dans I'entreprise

8 - Regroupement d'enregistrements

a) - Clause GROUP BY
Cette clause regroupe les lignes ayant des valeurs identiques dans une ou plusieurs colonnes issues de
('instruction SELECT, en une ligne.

I Remarque : Chaque colonne figurant dans la clause select doit figurer dans la clause Group
B y . Ex : Nombre d 'articles differents par fournisseur
SELECT n_fournisseur, count(*)
FROM produits
GROUP BY n_fournisseur

Ex : Nombre d'employes par fonction


SELECT fonction, count (*)
FROM employes
GROUP BY fonction

Exercices :

15 - Quantites commandóes par produit

16 - Nombre de produits commandos par commande


17 - Nombre de fois oil chaque produit est commandó

b) - Clause Having
Cette clause permet de restreindre la selection des groupes figurant dans le resultat. Elle precise la
condition a laquelle chaque groupe doit repondre.
Ex :Nombre d'articles par commande, pour les n° de commandes
apres 10030 SELECT n_commande,count(*) as «Nombre
d'articles» FROM details_commandes
GROUP BY n_commande
HAVING n_commande>10030

Exercices :

18 - Nombre de produits commandós dans la commande 10250

19 - Liste des codes produits commandós au moms 50 fois

C - REQUETE DE SELECTION MULTITABLES - LES JOINTURES


Une jointure realise une liaison entre deux tables en se basant sur l'egalite entre l'un des attributs de
chaque table.
Deux solutions sont possibles pour ecrire une jointure interne.
Citer les attributs recherches dans la clause SELECT et preciser dans la clause WHERE la condition
d'egalite entre les attributs qui realisent la jointure entre les tables. La clause FROM doit contenir le nom
de toutes les tables. La clause WHERE permet toujours de definir les criteres de selection combine
avec la condition de jointure par un operateur AND.
On peut egalement definir la jointure en precisant les attributs de liaison entre les tables par la clause
JOIN....ON.... Cette clause permet de separer la condition de jointure et les conditions additionnelles de
filtres.
Remarque : le produit cartesien de deux tables est equivalent a une jointure sans la condition de jointure.

Explication de la jointure

Exemple : Liste des ventes par employe

Commandes Employes

N commande Code client N employe ... N employe Nom Prenom ...

01 Al 100 100 Dupont Pierre

02 Al2 100 101 Martin Paul

03 A7 100 102 Dubois Jack

04 Al 0 101

Apres jointure le resultat donnera


N_commande Code_client N_employe Nom Prenom ...

01 Al 100 Dupont Pierre

02 Al2 100 Dupont Pierre

03 A7 100 Dupont Pierre

04 A10 101 Martin Paul

1 - Jointure de 2 tables

Ex : Liste des ventes des employes


SELECT employes.nom, commandes.n_commande
FROM employes,commandes
WHERE employes.n_employe=commandes.n_employe
Autre ecriture :
SELECT employes.nom, commandes.n_commande
FROM employes JOIN commandes ON
employes.n_employe=commandes.n_employe;

Ex : Vente du vendeur Fuller


SELECT commandes.n_commande, employes.Nom
FROM employes,commandes
WHERE employes.n_employe = commandes.n_employe
AND nom = 'Fuller';
Autre ecriture :
SELECT commandes.n_commande, employes.Nom
FROM employes JOIN commandes ON
employes.n_employe = commandes.n_employe
WHERE nom = 'Fuller

Ex : Liste des commandes avec dates et vendeurs


SELECT n_commande, date_commande, Nom
FROM commandes, employes
WHERE employes.n_employe = commandes.n_employe;
Autre ecriture :
SELECT n_commande, date_commande, Nom
FROM commandes JOIN employes ON
employes.n_employe = commandes.n_employe

Ex : Nombre de ventes de chaque vendeur


SELECT employes.n_employe, nom, COUNT(*)
FROM employes, commandes
WHERE employes.n_employe = commandes.n_employe
GROUP BY employes.n_employe,nom
Autre ecriture :
SELECT employes.n_employe, nom, COUNT(*)
FROM employes JOIN commandes ON
employes.n_employe = commandes.n_employe
GROUP BY employes.n_employe,nom

Exercices :

19 bis - Numóro et nom des employes ayant pris plus de 10 commandes en


France

20 - Libelló des sociótós frangaises ayant commandó avant le 31/07/1993

21 - Liste des commandes et date des commandes du client code BONAP

22 - Calendrier des ventes de remployó Fuller

22 bis - Nombre de commandes par pays selon la nationalitó du client

22 ter - Liste et nombre de commandes des clients frangais ayant realise


plus de 10 commandes en 1993 ou plus tard
- Jointure de plus de 2 tables

La jointure fonctionne selon le meme principe qu'avec 2 tables, ilfaut juste proceder a
plusieurs jointures

Ex : Liste des commandes avec le numero de commande, le nom de 1 'employe et le nom du


client SELECT employes.Nom, n_commande, Societe
FROM employes, commandes, clients
WHERE employes.n_employe = commandes.n_employe
AND commandes.code_client=clients.code_client
ORDER BY employes.nom
Autre ecriture :
SELECT employes.Nom, n_commande, Societe
FROM commandes
JOIN employes ON employes.n_employe = commandes.n_employe
JOIN clients ON commandes.code_client=clients.code_client
ORDER BY employes.nom

Exercices :

23 - Quantites du produit reference 38, pour chaque commande de ce produit, vendu apres le
31/07/93
23 bis - Liste des produits de reference 20 a 38 vendus a plus de 100 exemplaires apres le
19-07-1993.
On affichera le nom du produit, la reference et la quantite.

24 - Details de la commande 10250 (libelle produit, quantite, prix unitaire)

25 - Libelle des produits vendus par Fuller

26 - Villes dans lesquelles habitent les clients de Fuller

27 - Chiffre d'affaire de Fuller


27 bis - Liste des employes ayant un chiffre d'affaire > 1000 avec des clients habitant en France.
(on affichera :nom de l'employe et Chiffre d'affaire)

3 - Jointure d'une table avec elle-rnéme (auto-jointure)

On peut joindre une table avec une copie de celle-ci. Attention, II faut definir
differents noms ou alias pour la table et sa copie.

Ex : Liste des employes et de leur chef de service classes par ordre decroissant des noms de
chefs de service

SELECT Super.nom, 'est le chef de', Emp.nom


FROM employes Emp, employes Super
WHERE Super.n_employe= Emp.rend_compte_a
ORDER BY Super.nom DESC
Emp et Super sont les alias de la table employes.
Autre ecriture :
SELECT Super.nom, 'est le chef de', Emp.nom FROM employes
Emp JOIN employes Super ON Super.n_employe=
Emp.rend_compte_a ORDER BY Super.nom DESC
Exercices :

28 - Liste des vendeurs embauchas avant leur supórieur

4 - Jointure externe

Les jointures precedentes sont qualifiees de jointures internes, si la condition de jointure n'est pas verifiee,
l'enregistrement n'apparait pas dans le resultat. Pour visualiser tous les enregistrements, y compris ceux ne
repondant pas au critere, it faut realiser une jointure externe

Ex : Liste des clients qui n'ont rien achete


SELECT DISTINCT Societe, N_commande
FROM Clients
LEFT OUTER JOIN Commandes ON
Clients.Code_client = Commandes.Code_client WHERE
N_commande is null
D - REQUETES IMBRIQUEES

On peut employer des requ8tes imbriquees pour joindre deux requ8tes.

La construction de la commande SELECT superieure depend du nombre de valeurs renvoyees par la


requ8te imbriquees.

1 - Requétes imbriquees renvovant une valeur unique


Ex : Ensemble des commandes du client nomme e
BON APP » SELECT
n_commande,date_commande
FROM commandes
WHERE code_client =
(SELECT code_client
FROM clients
WHERE societe = 'Bon app')
ORDER BY date_commande
Ex : Ensemble des commandes du client nomme "BON APP" ou par le vendeur
"FULLER ". SELECT n_commande,date_commande
FROM commandes
WHERE code_client =
(SELECT code_client
FROM clients
WHERE societe = 'Bon app')
OR n_employe =
(SELECT n_employe FROM employes WHERE nom='Fuller') ;

Exercice :

29 - Liste des vendeurs embauchas avant King


2 - Requétes imbriquees renvovant des valeurs multiples

Ex : Liste des commandes et clients du departement 44


SELECT n_commande, code_client,date_commande
FROM commandes
WHERE code_client IN
(SELECT code_client FROM clients WHERE code_postal
like '44%') ORDER BY n_commande

3 - Requétes imbriquees multiples


Une sous requOte peut contenir d'autres sous requOtes imbriquees
Ex : Ensemble des clients ayant commande le produit "50"
SELECT code_client, societe, contact, ville
FROM clients
WHERE code_Client IN
(SELECT code_client FROM commandes WHERE n_Commande IN
(SELECT n_Commande FROM details_commandes WHERE ref
produit='50')) ;
E - REQUETES D'INSERTION
SQL Permet egalement d'inserer des donnees dans un table.

Ex : Ajouter le client : societe ff la nouvelle » de code e


LANOUV » INSERT INTO (code_client, societe)
VALUES ('lanouv', 'la nouvelle')
Attention, ici tous les champs n'ont pas ete renseignes.
Cela n'emp8che pas la requ8te de fonctonner mais certaines donnees peuvent titre
indispensable au bon fonctionnement de la table et ne doivent pas 'etre oubliees.
C'est en particulier le cas des identifiants.
F - LES REQUETES DE MODIFICATION

Syntaxe : UPDATE liste_table SET colonnel = {expression/instruction_select},


colonne2 = {expression/instruction_select}
FROM liste_tables
WHERE condition
ORDER BY expression [ASC I DESC]
Si on ne specifie aucune condition dans la clause WHERE, ('update sera realise sur toutes les lignes
de la table.

Normalement, l'ordre de mise a jour des lignes importe peu. Cependant, il existe certains cas oil on
peut avoir inter& a specifier cet ordre (ex : si on veut augmenter un champ cle de 1, il faut
commencer par la fin des enregistrements). On utilisera dans ces cas la clause ORDER BY.

Ex : UPDATE produits SET prix_unitaire = prix_ unitaire * 1.12 WHERE code_categorie = '1'

Ex : UPDATE produits p SET prix_unitaire = prix_unitaire * 2 from produits p, categories c


WHERE c.code_categorie = p.code_categorie

Exercice :

Augmenter le prix des produits de la categorie « desserts " de 10%


G - LES REQUETES DE SUPPRESSION
Syntaxe : DELETE [FROM] nom_table
... [FROM table-list]
... [WHERE search-condition]
Le ler FROM est optionnel avec Sybase ASE. II est toutefois conseille de ('utiliser pour conserver la
compatibilite avec SQL2.
Le ame FROM est optionnel et indique les tables impliquees dans la jointure par la condition WHERE.
Attention : si aucune condition WHERE n'est appliquee, toutes les lignes de la table seront
supprimees.

Ex : suppression des clients habitant a


Paris DELETE from client WHERE ville =
`Paris'

Exercice :

Supprimer les commandes passees par remployó 'dodsworth'


H) METHODE POUR ECRIRE UNE REQUETE
Prealable : bien connaitre le modele et comprendre precisement la question.

1°) Etablir la liste des informations a traiter :


On distinguera :
- Les informations a afficher
o Champs a afficher
o Calculs simples sur x champs (ex : qte * prix_unitaire)
o Agregation d'un champ => fonctions d'agregation comme COUNT, SUM,
MIN, MAX

Dans le cas d'une agreation, soit on veut obtenir un seul resultat (dans ce
cas, on ne peut pas faire apparaitre d'autres champs dans le select.) soit
on veut obtenir x lignes de resultat (ex : le nombre de produits
commandos par commande) : dans ce cas, it faut obligatoirement creer
un niveau de regroupement : GROUP BY.
- Les informations de restriction de selection. On en a de 2 types :
o Des informations de restriction qui portent sur des lignes d'une table =>
WHERE
o Des informations de restrictions d'affichage des groupes (celles-ci
portent en general sur des fonctions d'agregation) => HAVING

2°) Ecrire le SELECT (cf. partie g informations a afficher)

3°) Ecrire le FROM


La liste des tables se definit a partir de :
- des champs a afficher (cf. SELECT)
- des champs de restriction sur les lignes (WHERE)
- des champs de restriction sur les groupes (HAVING)
- des jointures necessaires pour relier les tables (jointure classique ou jointure
gauche ou droite)

4°) Ecrire le WHERE


On distinguera ici :
- les conditions de restriction sur les lignes
- les conditions de jointure
Des qu'on realise une jointure : on s'interrogera sur le type de jointure (normale,
gauche ou droite) et on s'assurera de la pertinence du resultat obtenu (on obtient
toujours le nombre de lignes qui correspond au plus petit niveau de details).
5°) Ecrire le GROUP BY
Quand on cree un groupe, it faut s'assurer de la coherence du groupe cree avec le
niveau d'affichage souhaite.
Quand j'ai un GROUP BY, je ne peux faire apparaitre dans le SELECT que :
- des champs qui sont repris dans le GROUP BY
- des fonctions d'agregation (SUM, MIN, MAX ...)

6°) Restreindre I'affichage des groupes => HAVING


On ecrira ici la condition de restriction portant sur les groupes. En general, celle-ci
porte sur la fonction d'agregation. (les restrictions concernant les champs
s'ecrivent dans la clause WHERE).

7°) Trier les enregistrements (ORDER BY)

Cette methode s'applique pour les requ8tes de selection (type SELECT). Pour les
autres types de requ'êtes, le principe reste le m8rne.
Table des matières
CHAPITRE I. GENERALITE SUR LE SYSTEME D’INFORMATION............................- 1 -
I.1.1. INFORMATION...................................................................................................- 1 -
I.1.2. SYSTEME............................................................................................................- 2 -
I.1.3. CONNAISSANCE...............................................................................................- 6 -
I.2 LA METHODE MERISE............................................................................................- 8 -
I.2.1 PRESENTATION DE LA METHODE MERISE................................................- 8 -
I.2.2. NOTIONS FONDAMENTALES DE LA MODELISATION DE SYSTEME
D’INFORMATION......................................................................................................- 11 -
Les Formes normales...................................................................................................- 16 -
Deuxième forme normale.............................................................................................- 16 -
Troisième forme normale de Boyce – codd.................................................................- 16 -
I.2.3 NOTION PAR RAPPORT AUX TRAITEMENTS...........................................- 16 -
CHAPITRE II. BASES DE DONNEES ET ARCHITECTURE CLIENT - SERVEUR...- 19 -
II.1 INTRODUCTION....................................................................................................- 19 -
II.1.1  HISTORIQUE...................................................................................................- 19 -
II.1.2 LE SYSTEME DE GESTION DES FICHIERS (SGF)....................................- 19 -
II.2 NOTION SUR LES BASES DE DONNEES..........................................................- 22 -
II.2.1 DEFINITIONS DE QUELQUES CONCEPTS.................................................- 22 -
II.2.2 LES CRITERES D’UNE BASE DE DONNEES.............................................- 23 -
II.3 LE SYSTEME DE GESTION DE BASES DE DONNEES...................................- 24 -
II.3.1 INTRODUCTION.............................................................................................- 24 -
II.3.2 LES OBJECTIFS ET AVANTAGES D'UN SGBD..........................................- 24 -
II.4. TYPES D’UTILISATEURS...............................................................................- 28 -
II.5. TYPES DE SGBD...................................................................................................- 28 -
II.5.1. SGBD HIERARCHIQUE.................................................................................- 28 -
II.5.2 SGBD RESEAU.................................................................................................- 29 -
II.5..3 SGBD RELATIONNEL....................................................................................- 30 -
II.5.4 SGBD OBJET.....................................................................................................- 31 -
II.6 MODELES DE DONNEES......................................................................................- 31 -
II.6.1. NIVEAU D’ABSTRACTION...........................................................................- 31 -
II.6.2. MODELE RELATIONNEL.............................................................................- 32 -
II.7 LE SQL.....................................................................................................................- 39 -
II.7.1 DEFINITION.....................................................................................................- 39 -
II.8 LA NORMALISATION...............................................................................................48
II.8.1. BUT ET PRINCIPE..............................................................................................48
II.8.2. PRATIQUE DE LA NORMALISATION............................................................48
II.8.3. THEOREMES IMPORTANTS...........................................................................49
II.9 L'ALGEBRE RELATIONNELLE................................................................................50
Les contraintes de l'entreprise...........................................................................................58
Notions de base.................................................................................................................58

S-ar putea să vă placă și