Vous êtes sur la page 1sur 70

ECOLE SUPERIEURE D’INFORMATIQUE SALAMA

E.S.I.S.
LUBUMBASHI

Par Patrick KASONGA

MARS 2009
Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 1

OBJECTIFS DU COURS

A l’issue de ce cours, l’étudiant doit être capable de :


- maîtriser les notions relatives aux bases de données ;
- construire une base de données relationnelle ;
- acquérir des notions relatives aux SGBD et savoir ensuite utiliser un SGBD
quelconque sans rencontrer d’autres difficultés que celles inhérentes à
l’apprentissage des spécificités du logiciel utilisé.

PLAN DU COURS (45 heures Théorie + 15 heures TP)

0. INTRODUCTION

CHAP I : CONCEPT DE BASE DE DONNEES


I.1. Définition d’une BD
I.2. Utilité d’une BD
I.3. SGBD
I.4. Architecture d’un SGBD

CHAPITRE II : LE MODELE RELATIONNEL


II.1. Aperçu historique
II.2. Objectifs
II.3. Définitions
II.4. Perception du monde réel
II.5. Dépendances fonctionnelles
II.6. Normalisation

CHAPITRE III : L’ALGEBRE RELATIONNELLE ET LE SQL


III.1. Algèbre relationnelle
III.2. SQL

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 2

INTRODUCTION

Depuis l’orée des temps, l’homme a toujours eu besoin de compter. Dans la


préhistoire, il ne savait calculer qu’à l’aide des cailloux ou de ses mains qui furent sans
doute les premières calculatrices de poche.
Les objets ont servi à nos ancêtres de compter et pour effectuer toutes sortes
d’opérations arithmétiques.
Curieusement, on parle de calcul digital dans la nouvelle science informatique. Notre
système décimal actuel est e résultat de cette évolution et des moyens mis en œuvre
pour lui donner des formes adaptées à l’expression écrite et orale et aux diverses
méthodes de calcul.
Parallèlement à cette évolution de signes, calculs mentaux et manuels, on assistait au
développement d’outils, de systèmes, de machines pour simplifier et accélérer les bases
de différentes opérations et recherches que l’homme ne cesse d’effectuer du jour au
lendemain.

Ainsi, ce n’est qu’au XVIIème siècle qu’on a conceptualisé les bases de la


science moderne et c’est là qu’on trouve les racines mêmes de ce grand développement
d’idées qui conduira à l’ordinateur.
De nos jours, l’ordinateur a franchi beaucoup d’obstacles et a dépassé le simple stade
de comptage dans le domaine d’arithmétique longtemps considéré comme domaine
d’application de celui-ci.

Les activités humaines génèrent des données. Il en a toujours été ainsi et, plus
notre civilisation se développe, plus le volume de ces données croît.
Aujourd’hui, les données sont de plus en plus souvent gérées par des moyens
informatiques. Le terme « informatique » lui-même résulte de la contraction de
« information » et « automatique ». L’informatique est donc la technique qui permet le
traitement automatique de l’information.
Lorsque ces données sont gérées par l’ordinateur, elles constituent une base de données.

Les bases de données sont de nos jours une part importante des systèmes
informatiques. Leur gestion s’appuie sur une théorie solide, nécessite la mise en œuvre
d’un ensemble d’algorithmes sophistiqués et optimisés et demande le développement
d’architectures spécialisées.

Les systèmes de gestion des bases de données sont souvent considérés comme
un premier niveau de programmes d’application utilisant un système d’exploitation
dont une des fonctions essentielles est notamment la gestion des fichiers permettant le
stockage des données sur les mémoires secondaires.

Donnée ou information?

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 3

La codification des signes permet de représenter des données. Une série de


signes comme le « 1 » ou le « T » deviennent une donnée lorsqu’on connaît la
codification correspondante, comme le code ASCII par exemple.
Une information est quelque chose de beaucoup plus qu’une donnée brute. C’est
une donnée qui a un sens, et ce sens provient d’un certain modèle d’interprétation.
Ainsi une donnée peut revêtir plusieurs sens selon le modèle d’interprétation qui lui est
associé.
Par exemple, la donnée « 12101987 » peut être interprétée par un francophone
comme le 12 octobre 1987 alors qu’un anglo-saxon y verrait le 10 décembre 1987.
Tout dépend donc du modèle d’interprétation.
Ceci est un exemple typique simple d’une donnée dont l’interprétation fournit une
information essentielle à notre vie quotidienne.
Le modèle d’interprétation fait partie de notre culture générale et se réfère à un
contexte sémantique précis. Ainsi tout le monde sait par exemple que lorsqu’une
voiture est immatriculée au Katanga, son numéro commence par KT…

En résumé :

Donnée = Signe + Code


Information = Donnée + Modèle d’interprétation

L’information est en définitive un élément de connaissance caractérisant un fait


ou un événement et pouvant être transmis par un signal ou une combinaison de signaux.

Il s’agit donc d’un renseignement sur quelqu’un ou quelque chose qui a un sens
pour celui qui veut l’utiliser dans un contexte sémantique précis.
C’est finalement une donnée qui a un sens et un impact sur le récepteur. Sa valeur est
proportionnelle à son impact et à son potentiel de surprise.

La valeur d’une information est quelque chose de très difficile à quantifier. Elle
dépend de plusieurs facteurs : de l’écoulement du temps (une information fraîche vaut
beaucoup plus qu’une information périmée !), du récepteur de l’information (une
information boursière ou un résultat sportif ont une valeur différente selon l’intérêt du
récepteur), …

La récolte, le stockage et la diffusion de l’information est devenue une industrie


à part entière. Et 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.
C’est la tâche principale du système d’informations que nous allons aborder dans le
prochain chapitre.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 4

Notion de Fichier
1. Définition
Un fichier ou lot logique de données est un récipient de données identifié par un
nom et contenant des données se rapportant à un même sujet. C’est encore un récipient
d’informations constituant une mémoire secondaire idéale permettant d’écrire des
programmes d’application indépendants des mémoires secondaires (organes de
stockage des données).
Plus simplement, un fichier est ensemble organisé d’articles de même nature.

2. Support du fichier

Un fichier est stocké dans un organe de stockage d’un ordinateur.


Il s’agit de : - disque
- cassette
- disquette
- bande magnétique mémoires secondaires
- CD
- flash disk, etc.

3. Opérations sur les fichiers


Toutes les opérations sur les fichiers sont gérées par le Système de Gestion des
Fichiers (SGF).

1. Création d’un fichier


- définir le nom du fichier et les rubriques ( les encoder )
- déterminer le support
- organiser le fichier : comment les articles sont-ils reliés entre eux ?

2. Création ou ajout d’articles


On donne des valeurs aux rubriques de l’entité.

3. Consultation du fichier
C’est la lecture des articles du fichier.

4. Mise à jour ou modification d’articles


C’est l’exploitation des articles du fichier, c’est-à-dire l’insertion, la
modification ou la suppression d’articles.

5. Tri du fichier
Classer les articles dans un certain ordre : croissant ou décroissant sur une ou
plusieurs valeurs d’une ou de plusieurs rubriques.

6. Suppression du fichier :
C’est la destruction physique du fichier.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 5

Les articles sont reliés entre eux pour composer un fichier. Les structures des
liaisons constituent l’organisation du fichier.

4. Organisation du fichier

a) Organisation séquentielle

Un fichier à organisation séquentielle est un fichier dont les articles sont rangés
suivant leur ordre d’arrivée.
C’est donc un fichier plat, sans organisation en fait.

b) Organisation relative

Un fichier étant généralement discontinu sur mémoire secondaire, il est utile de


pouvoir adresser son contenu à l’aide d’une adresse continue de 0 à n appelée « adresse
relative ».

L’adresse est la position du premier caractère d’un article dans un fichier ou sa


distance par rapport au début du fichier.
En fait, on divise le fichier en n parties de longueur fixe L.

Art1 Art2 Art3 Art4 L = longueur fixe = 10

0 10 20 30

Ainsi l’adresse d’un article peut être trouvée par la formule :

AD = CLE X L où CLE = numéro de l’article

Remarques

- Il faut une clé numérique


- Il faut des clés contiguës (qui se suivent) pour éviter des trous dans le fichier et perdre
de l’espace.
- La clé peut ou ne pas être un attribut du fichier.

c) Organisation aléatoire
Dans ce type d’organisation, le fichier est divisé en pages (blocs), une page
ayant la taille de quelques KO fixée lors de la création du fichier.
(exemple 1 page = 4096 octets)
La page est donc l’unité de transfert entre le disque et la mémoire, soit l’unité d’accès
physique. Chaque page contient des articles comme suit :

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 6

Art

0 Page 0 4096 Page 1 8192

Lors de la lecture du fichier, on lit d’abord la page qu’on place dans un tampon
(buffer) d’où le SGF extrait les articles demandés en ignorant le reste.

Une page est constituée de la manière suivante :

Art Art

Adresse du 1er octet libre Chaînage

Qu’est-ce que le lien de chaînage ?

Supposons qu’on ait la page suivante :

2096 Art1 Art2


2096
L = 2000

Sur cette page, il reste un espace de 2000 octets. Si l’on veut insérer un article Art3 de
longueur 2200, ce ne sera pas possible. Alors le système va placer cet article sur une
autre page disponible et va indiquer le numéro de cette page dans le lien de chaînage.
D’où :
Page 25
2096 Art1 Art2 25 0 Art3

2096 0 2200

Pour trouver un article sur une page, on recherche d’abord l’adresse la page où il se
trouve par la formule :

AD = NºPage X L où AD = adresse de la page contenant l’article cherché

Afin de répartir équitablement les articles sur les différentes pages, il faut
élaborer une bonne formule qui transforme la clé en numéro de page : c’est la fonction
de hachage.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 7

Il existe par exemple la formule de HASH-CODD qui utilise la fonction modulo :

NºPage = Clé mod. Nombre de pages

Sur cette page ainsi calculée, on aura tous les articles dont le reste de la division de la
clé par le nombre de pages est égal au numéro de pages.

Supposons que le fichier soit subdivisé en 47 pages numérotées de 0 à 46.


Le modulo 47 peut alors être adoptée comme fonction de hachage. On aura par
exemple sur la page 6 les articles de clé 6, 53, 100, etc. et sur la page 21 les articles de
clé 21, 68, 115 etc.

En résumé, on a : Clé → NºPage → Adresse Page → Page → Article


Remarques

- Il faut une clé numérique


- Il faut aussi une bonne fonction de hachage
- L'avantage de ce type d’organisation est qu’on peut avoir des articles de longueur
variable.

d) Organisation indexée
Un index est comme une table de matières d’un fichier. C’est donc une table
permettant d’associer à chaque clé d’article l’adresse relative de cet article.
Exemple :
Index

a2 a6 a3 a10
0 100 200 300

0 a2 100 a6 200 a3 300 a10 400

Donc pour accéder à un article, il faut :


- accéder à l’index pour trouver l’adresse et la clé de l’article
- rechercher l’article
- transférer l’article dans la zone du programme usager.

N.B. On peut avoir encore d’autres types d’organisations comme l’index hiérarchisé
par exemple. Mais quant à nous, nous nous limitons juste à ces quatre types pour que
l’étudiant puisse avoir une idée de la manière dont les données peuvent être reliées
entre elles sur un fichier.

Maintenant, voyons comment on peut accéder aux articles d’un fichier.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 8

4. Méthodes d’accès
Une méthode d’accès est une méthode d’exploitation du fichier utilisée par les
programmes d’application pour sélectionner des articles du fichier.
Il existe principalement deux méthodes d’accès :

a) L’accès séquentiel
C’est la plus simple des méthodes. On accède aux articles l’un après l’autre en
partant du premier jusqu’au dernier du fichier.

b) L’accès sélectif
Pour cette méthode, on accède à un article en ignorant les autres au moyen
d’une clé, une clé étant l’identifiant d’un article du fichier de façon unique, comme
nous allons le voir plus loin.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 9

Chapitre I : CONCEPT DE BASE DE DONNEES

Les bases de données ont fait couler beaucoup d’encre et ont pris de nos jours
une place essentielle dans les systèmes informatiques tant du point de vue pratique que
théorique.

Les bases de données jouent un rôle sans cesse croissant dans les systèmes
d’informations d’entreprises, qu’il s’agisse d’application de gestion traditionnelle
(comptabilité vente, …) ou d’application intranet, ou de gestion de la relation client.
Comprendre les principes de base de données, les langages d’interrogation et de mise à
jour, les techniques d’optimisation et de contrôle des requête, les méthodes de
conception et la gestion des transitions devient une nécessité pour tous les
professionnels et futurs professionnels de l’informatique

Dès le début de l’informatique, on a construit des systèmes pour effectuer des


calculs (équations différentielles, calculs matriciels …). Aujourd’hui, la tendance est
orientée vers la gestion des grandes quantités d’informations. Il faut savoir stocker et
manipuler ces très grandes quantités de données : tel est le défi actuel de l’informatique.
Notons que les données peuvent être de natures diverses et les opérations plus ou moins
compliquées.
Les bases de données constituent donc une discipline s’appuyant sur une théorie solide
et offrant de nombreux débouchés pratiques. Elle est développée au sens d’une
entreprise pour son propre fonctionnement ; tandis qu’une banque de données est un
ensemble de données propre d’un domaine d’application que des producteurs réunissent
pour ensuite en commercialiser l’usage vers le public extérieur.

Les bases de données sont apparues vers les années 1960 – 1961. Avant leur
apparition, il y avait les fichiers classiques (ordinaires) auxquels on associait
directement un programme d’application.

La manipulation des fichiers classiques (modification ou maintenance par exemple)


posait certains problèmes sérieux qui nécessitèrent :
- de centraliser les informations ou les données ;
- d’avoir une information raffinée (détaillée, précise, bien fournie) ;

La centralisation des données présente trois difficultés :


• Le manque de sécurité de l’information (ex : violation de
l’information) ;
• Pas de contrôle de concurrence d’accès : le partage de l’information
entre plusieurs utilisateurs, avec comme conséquence l’allongement
du temps de traitement.
• Lourdeur d’accès aux données : en pratique, pour chaque accès
même le plus simple, il faut écrire un programme.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 10

Ainsi, pour pallier à ces inconvénients, on a créé un logiciel pour gérer la base
de données appelé Système de Gestion de Base de Données, en sigle SGBD.

I.1. Définition d’une base de données


Une base de données est une collection d’informations modélisant une
entreprise du monde réel et dans laquelle il est possible de stocker des données de façon
structurée et avec le moins de redondance possible.

C’est donc un ensemble de données structurées modélisant les objets d’une


partie du monde réel, servant de support à une application informatique et stockées sur
des supports accessibles par l’ordinateur pour satisfaire simultanément plusieurs
utilisateurs de façon sélective et en un temps opportun ( raisonnable ).
Ces données doivent pouvoir être utilisées par des programmes et des utilisateurs
différents.
Pour mériter le terme de bases de données, un ensemble de données non indépendantes
doit être interrogeable par le contenu, c’est-à-dire que l’on doit pouvoir retrouver tous
les objets qui satisfont à un certain critère.

Une base de données permet de mettre des données à la disposition


d'utilisateurs pour une consultation, une saisie ou bien une mise à jour, tout en
s'assurant des droits accordés à ces derniers. Cela est d'autant plus utile que les données
informatiques sont de plus en plus nombreuses.

Ainsi la notion de base de données est généralement couplée à celle de réseau afin de
pouvoir mettre en commun ces informations ; d’ou le nom de BASE.

On parle généralement de système d’informations pour désigner toute la


structure regroupant les moyens mis en place pour pouvoir partager des données.

Il existe des bases de données de toutes tailles, depuis les plus modestes (une
liste des numéros de téléphones utilisée par une seule personne) jusqu’aux plus grandes
(la base de données commerciales d’un magasin à succursales multiples, contenant des
téraoctets de données ou plus, et utilisée par le service marketing).

Dans les entreprises, on manipule souvent des données ayant la même structure.
Prenons l’exemple de la liste des membres du personnel : pour chaque personne, on
enregistre le nom, le prénom, le sexe, la date de naissance, l’adresse, la fonction dans
l’entreprise, etc. Toutes ces données ont la même structure. Si elles sont gérées par des
moyens informatiques, on dit qu’elles constituent une base de données.
Bien entendu, les bases de données existaient avant l’introduction de l’informatique au
milieu du 20ème siècle, mais elles ne portaient pas encore ce nom. Pour stocker
l’information, on utilisait des fiches regroupées dans des boîtes appelées fichiers.
Initialement, les fiches étaient triées manuellement. Avec l’introduction de la
perforation, le tri devint mécanique, puis électromécanique. Le développement des
bases de données gérées par des moyens informatiques a rendu obsolètes ces anciennes
techniques.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 11

Les données stockées dans les bases de données modélisent des objets du monde
réel ou des associations entre objets. Les objets sont en général représentés par des
articles d’un fichier alors que les associations correspondent naturellement à des liens
entre articles.

I.2. Utilité d’une base de données


Une base de données permet de mettre des données à la disposition
d’utilisateurs pour une consultation, une saisie ou bien une mise à jour, tout en
s’assurant des droits accordés à ces derniers. Cela est d’autant plus utile que les
données informatiques sont de plus en plus nombreuses.
En plus, une base de données permet de contrôler la redondance d’informations.
La redondance d'informations pose différents problèmes (coût en temps, coût en
volume et risque d'incohérence entre les différentes copies). Un des objectifs des bases
de données est de contrôler cette redondance, voire de la supprimer, en offrant une
gestion unifiée des informations complétée par différentes vues pour des classes
d'utilisateurs différents.

Une base de données peut être locale, c’est-à-dire utilisable sur une machine par
un utilisateur, ou bien répartie, c’est-à-dire que les informations sont stockées sur des
machines distinctes et accessibles par réseau.
L’avantage majeur de l’utilisation des bases de données est la possibilité de pouvoir y
accéder simultanément par plusieurs utilisateurs.
Le nombre d’utilisateurs utilisant une base de données est également extrêmement
variable. Une base de données peut servir une seule personne, laquelle l’utilise sur son
poste de travail, ou être à la disposition de dizaines de milliers d’agents (comme par
exemple dans le système de réservation des billets d’avion).
Les programmes sont écrits dans un langage de programmation de 3ème génération (C,
Cobol, Fortran) ou dans un langage plus avancé intégrant des facilités de gestion
d’écrans et d’édition des rapports appelé langage de 4ème génération (Visual Basic,
SQL/Form, Mantis, …). Dans tous les cas, ils accèdent à la base de données à l’aide
d’un langage unifié de description et de manipulation de données permettant les
recherches et les mises à jour (le SQL par exemple).

I.3. SGBD
Afin de pouvoir contrôler les données ainsi que les utilisateurs, le besoin d’un
système de gestion s’est vite fait ressentir.
La gestion de la base de données se fait grâce à un logiciel appelé Système de
Gestion de Base de Données, le SGBD ou DBMS en anglais (Data Base Management
System).
En principe, il devrait s’appeler Logiciel de Gestion de Base de Données, car en
informatique, « système » désigne généralement l’ensemble Matériel + logiciel. Mais
l’expression est consacrée par l’usage et nous n’avons pas d’autre choix que de
l’adopter.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 12

I.3.1. Définition

Un SGBD est un ensemble de logiciels systèmes permettant de stocker et


d’interroger un ensemble de fichiers interdépendants mais aussi comme un outil
permettant de modéliser ou de gérer les données d’une entreprise.

C’est donc est un ensemble de programmes qui permettent à des utilisateurs de


créer et de maintenir une base de données. Les activités supportées sont la définition
d’une base de données (spécification des types de données à stocker), la construction
d’une base de données (stockage des données proprement dites) et la manipulation des
données (principalement l’ajout, la suppression, la localisation des données).

Un SGBD est principalement constitué d’un moteur et d’une interface


graphique.
Le moteur est le cœur du logiciel, c’est-à-dire qu’il assure les fonctions essentielles :
saisir les données, les stocker, les manipuler, etc.
L’interface graphique permet à l’utilisateur de communiquer commodément avec le
logiciel. Pour dialoguer avec les SGBD qui ne sont pas équipés d’une interface
graphique, il faut utiliser le langage SQL ( Structured Query Language ) et introduire
les instructions à l’aide d’un éditeur de lignes.
Langage normalisé de manipulations des bases de données, SQL est utilisable avec
pratiquement tous les SGBD du marché. Cependant, chaque éditeur ayant développé
son propre « dialecte » - comme c’est toujours le cas en informatique – il faut pouvoir
disposer d’un « dictionnaire » pour transporter une base de données d’un SGBD à
l’autre. Ce « dictionnaire » a été développé par Microsoft sous le nom ODBC ( Open
Data Base Connectivity ).

Tous les SGBD présentent à peu près les mêmes fonctionnalités. Ils se
distinguent par leur coût, par le volume de données qu’ils sont capables de gérer, par le
nombre d’utilisateurs qui peuvent interroger la base simultanément, par la facilité avec
laquelle ils s’interfacent avec les autres logiciels d’application utilisés par l’entreprise,
etc.

I.3.2. Historique des SGBD


Les SGBD ont 40 ans d’histoire. Les années 60 ont vu un premier
développement des bases de données sous forme de fichiers reliés par des pointeurs.
Les fichiers sont composés d’articles stockés les uns à la suite des autres et accessibles
par des valeurs données appelées « clés ». Les systèmes IDS I et IMS I développés
respectivement par Honeywell et IBM vers 1965 pour les programmes de conquête
spatiale, notamment pour le programme Apollo qui a permis d’envoyer un homme sur
la lune, sont les précurseurs des SGBD modernes. Ils permettent de constituer des
chaînes d’articles entre fichiers et de parcourir ces chaînes

Les premiers SGBD sont réellement apparus à la fin des années 60. La première
génération des SGBD est marquée à par la séparation de la description des données et
de leur manipulation par les pro grammes d’application. Elle coïncide aussi avec
l’avènement des langages d’accès navigationnels, c’est-à-dire permettant de se
déplacer dans des structures de type graphe et d’obtenir un par un des articles de

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 13

fichiers. Elle est basée sur les modèles hiérarchiques et réseau et a été dominée par les
SGBD TOTAL, DMS, IDS 2 et IMS 2.

La deuxième génération des SGBD a vu les jours depuis 1970 à partir du


modèle relationnel dans lequel les données sont présentées aux utilisateurs sous forme
de relations entre domaines de valeurs simplement représentées par des tables. Les
recherches et mises à jour sont effectuées à l’aide d’un langage non procédural
standardisé appelé SQL (Structured Query Language). Les systèmes de 2eme
génération, commercialisés depuis 1980, représentent aujourd’hui l’essentiel du marché
des bases de données. Les principaux SGBD sont Oracle, Ingres, Sybase, Informix,
DB2 et SQL Server. Ils supportent en général une architecture repartie, au moins avec
des stations clients transmettant leurs requêtes à de puissants serveurs gérant les bases
de données.

La troisième génération a été développée dans les laboratoires depuis les années
80. Elle commence à apparaître fortement dans l’industrie avec les extensions objet des
systèmes relationnels. Elle est influencée par les modèles à objets, mais conserve
cependant les acquis du relationnel en permettant une vision tabulaire des objets et une
interrogation via le langage SQL étendu aux objets. Nous pouvons citer entre autres les
SGBD ORACLE 8, DB2 Universal Database ou INFORMIX Universal Server qui
tentent de répondre aux besoins de nouvelles applications multimédias, Web et
Telecom.

Quant à la quatrième génération, elle est déjà en marche et devrait mieux


supporter à Internet et le Web, les informations mal structurées, les objets multimédias,
l’aide à la prise de décisions et l’extraction de connaissances (data mining) à partir des
données.

Mais notons que malgré toute cette évolution des SGBD, la révolution conduite
par l’objet n’a pas réussi à renverser le relationnel, certes bousculé et adapté à l’objet.
Finalement, l’évolution des SGBD peut être perçue comme celle d’un arbre ; de
branches nouvelles naissent mais se font généralement absorber par le tronc qui grossit
toujours davantage.

I.3.3. Objectifs d’un SGBD

Le principal objectif d’un SGBD est d’assurer l’indépendance des programmes


aux données, c’est-à-dire la possibilité de modifier les schémas conceptuel et interne
sans modifier les programmes d’application et donc les schémas externes vus par ces
programmes.
Cet objectif est justifié afin d’éviter une maintenance coûteuse des programmes lors des
modifications des structures logiques (le découpage en champs et articles) et physiques
(le mode de stockage) des données. Plus précisément, on distingue l’indépendance
physique, qui permet de changer les schémas internes sans changer les programmes
d’application, et l’indépendance logique qui permet de modifier les schémas
conceptuels (par exemple l’ajout d’un type d’objet) sans changer les programmes
d’application.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 14

Afin d’assurer davantage une meilleure indépendance des programmes aux


données est rapidement apparue la nécessite de manipuler (c’est-à-dire d’interroger et
de mettre à jour) les données par des langages de haut niveau spécifiant celles que l’on
veut traiter (le quoi) et non pas comment y accéder (le comment). Ainsi, les procédures
d’accès restent invisibles aux programmes d’application qui utilisent donc des langages
non procéduraux. Ces langages référencent des descriptions logiques des données (les
schémas externes) stockées dans le dictionnaire de données. Les descriptions des
données, qui existent à plusieurs niveaux d’abstraction, sont établies par les
administrateurs de données. Un SGBD se doit donc de faciliter l’administration (c’est-
à-dire la création et la modification de la description) des données.

En résumé, voici donc les objectifs d’un SGBD :


- Indépendance physique des programmes aux données
- Indépendance logique des programmes aux données
- Manipulation des données par des langages non procéduraux
- Administration facilitée des données

Notons aussi que les SGBD conduisent à mettre en commun les données d’une
entreprise ou au moins d’une application dans une base de données décrite dans un
dictionnaire de données. Cette mise en commun ne va pas sans problèmes d’efficacité :
de nombreux utilisateurs simultanément aux données souvent situées sur un même
disque. La base de données devient ainsi un goulot d’étranglement. Il faut globalement
assurer l’efficacité des accès. Il faut garantir les utilisateurs contre les mises à jour
concurrentes, et donc assurer le partage des données. L’environnement multi-usager
nécessite de protéger la base de données contre les mises à jour erronées ou non
autorisées ; il faut aussi assurer la cohérence des donnes. Notamment les données
redondantes doivent rester égales. Enfin, en cas de panne système ou plus simplement
d’erreurs de programme, il faut assurer la sécurité des données.

I.3.4. Fonctions d’un SGBD


Pour atteindre tous les objectifs définis ci-dessus, un SGBD doit pouvoir remplir
les fonctions suivantes :

1. Fonction de description
Le SGBD offre des interfaces pour décrire les données ainsi que leur structure
grâce au langage de description des données (LDD).
La définition des différents schémas est effectuée par les administrateurs de données.
Dans un environnement de base de données supportant trois niveaux de schémas, les
administrateurs ont trois rôles :
- Administrateur de base de données : chargé de la définition du schéma interne et des
règles de correspondance entre les schémas interne et conceptuel.
- Administrateur d’entreprise : chargé de la définition du schéma conceptuel.
- Administrateur d’application : chargé de la définition des schémas externes et des
règles de correspondance entre les schémas externe et conceptuel.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 15

Ces trois rôles peuvent être accomplis par la même personne ou par des personnes
différentes. Un rôle essentiel est celui d’administrateur d’entreprise qui inclut la
définition des informations que contient la base de données au niveau sémantique, par
exemple les diagrammes Entités – Associations.

2. Fonction de manipulation ou d’utilisation


Grâce au langage de manipulation des données (LMD), le SGBD offre un outil
pour utiliser ou manipuler les données, c’est-à-dire la lecture, l’insertion, la suppression
ou la modification des données de la base.

3. Fonction d’intégrité ( cohérence )


Le SGBD doit avoir des mécanismes pour garder la cohérence ou l’intégrité de
la base de données en définissant des règles ou contraintes d’intégrité. Cela permet
d’avoir des données qui ne se contredisent pas et non redondantes. La redondance
d'informations pose différents problèmes (coût en temps, coût en volume et risque
d'incohérence entre les différentes copies). Un des objectifs des bases de données est de
contrôler cette redondance, voire de la supprimer, en offrant une gestion unifiée des
informations. Un schéma de base de données se compose d'une description des données
et de leurs relations ainsi que d'un ensemble de contraintes d'intégrité.
Une contrainte d'intégrité est une propriété de l'application à modéliser qui renforce la
connaissance que l'on en a. On peut classifier les contraintes d'intégrité en contraintes
structurelles (un employé a un chef et un seul par exemple) et contraintes dynamiques
(un salaire ne peut diminuer).

4. Fonction de confidentialité
Le SGBD doit avoir des mécanismes pour protéger et sécuriser les informations,
c’est-à-dire permettre de donner des autorisations d’accès aux informations. Ces
autorisations sont liées aux opérations à effectuer. Une base de données étant multi-
utilisateurs, des droits doivent être gérés sur les données, droits de lecture, mise à jour,
création…

5. Fonction de concurrence d’accès


Le SGBD doit inclure un mécanisme de contrôle de concurrence basé sur les
techniques de locking ou verrouillage pour départager les utilisateurs qui accèdent aux
mêmes informations au même moment, et aussi pour éviter par exemple qu'on puisse
lire une information qu'on est en train de mettre à jour.

6. Fonction de sécurité de fonctionnement


Le SGBD doit avoir des mécanismes qui permettent de remettre la base de
données dans un état cohérent après une panne logique ou physique. Une base de
données est souvent vitale dans le fonctionnement d'une organisation, et il n'est pas

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 16

tolérable qu'une panne puisse remettre en cause son fonctionnement de manière


durable.

En résumé, un SGBD peut donc apparaître comme un outil efficace de


rangement, de recherche, d’assemblage et de conversion des données spécifiques dans
une grande masse d’informations partagées par tous les usagers.

I.4. Architecture fonctionnelle d’un SGBD


La plupart des SGBD suivent l'architecture standard proposée par le groupe de
normalisation ANSI/X3/SPARC qui permet d'isoler trois niveaux d'abstraction des
données stockées sur disque afin de simplifier la vision des utilisateurs. Ce sont les
niveaux :
 interne
 conceptuel
 externe

I.4.1. Niveau interne


Ce niveau correspond à la structure de stockage supportant les données. La
définition du schéma interne nécessite au préalable le choix d’un SGBD. Elle permet
donc de décrire les données telles qu’elles sont stockées dans la machine, par exemple :
- les fichiers qui les contiennent en tant que récipients de données en spécifiant
l’organisation physique des données sur la mémoire secondaire (disque), leur
localisation, leur nom…
- les articles de ces fichiers : leur longueur, leurs champs, leurs mode de placements, …
- le chemin d’accès à ces articles : index, chaînages, …

Bref, ce niveau interne s’intéresse à la gestion des données stockées dans les fichiers, le
placement et l’assemblage de ces données, la gestion des liens entre données et des
structures permettant de les retrouver rapidement.

I.4.2. Niveau externe


Ce niveau est relatif à la présentation des données aux programmes
d’application et aux usagers terminaux ayant exprimé leurs besoins en données à l’aide
des langages plus ou moins élaborés. Il assure d’une part l’analyse et l’interprétation
des requêtes des usagers, et d’autre part la mise en forme des données échangées avec
le monde extérieur. Ce niveau représente donc l’interface avec l’utilisateur.
Le but du niveau externe est donc de produire un ou plusieurs schémas externes.
Un schéma externe est une vue d’une partie ou de la totalité du schéma conceptuel
présentant un intérêt particulier pour l’utilisateur.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 17

I.4.3. Niveau conceptuel

C’est le niveau central du SGBD. Il correspond à la structure canonique des


données qui existent dans l’entreprise, c’est-à-dire leur structure inhérente sans souci
d’implémentation à en machine, en représentant la vue intégrée à de tous les
utilisateurs.

Le niveau conceptuel décrit donc la structure de la base de données globalement


à tous les utilisateurs. Le schéma conceptuel est produit par une analyse de l’application
à modéliser et par intégration des différentes vues des utilisateurs.
Il est le résultat d’une action de modélisation du monde réel qui respecte un modèle de
données à l’aide des expressions et termes permis par le LDD. C’est pratiquement la
conception d’un système d’informations indépendamment de son implantation.

La définition du schéma conceptuel d’une entreprise ou d’une application n’est


pas du tout un travail évident. Elle nécessite un accord sur les concepts de base que
modélisent les données. Par exemple, le schéma conceptuel permettra de définir :
- les types de données élémentaires qui définissent les propriétés élémentaires des
objets de l’entreprise ;
- les types de données composées qui permettent de regrouper les attributs afin de
décrire les objets du monde réel et les relations entre objets ;
- les types de données composées qui permettent de regrouper les attributs afin de
décrire les associations du monde réel ;
- les règles que devraient éventuellement suivre les données au cours de leur vie dans
l’entreprise.

Cette démarche conceptuelle nécessite donc une représentation du monde réel sous un
modèle de données que peut supporter le SGBD.

Un modèle de données est un outil formel utilisé pour comprendre et interpréter


le monde réel (l’environnement qu’on veut informatiser). C’est un ensemble de
concepts permettant de décrire la structure d’une base de données. La plupart des
modèles incluent des opérations permettant de mettre à jour et de questionner la base de
données.

Modélisation
Schéma
Monde réel
conceptuel

Pour parvenir à une bonne modélisation, il faut observer les règles de gestion qui
établissent les liens entre les objets de l’organisation.

La conception d’une base de données est une étape délicate et importante qui
peut être réalisée à l’aide de plusieurs méthodes dont UML (Unified Modeling
Language) et MERISE (Méthode d’Etude et de Réalisation Informatique par Sous-
Ensembles).

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 18

En résumé, l’architecture à trois niveaux peut se présenter comme suit :

Schéma externe 1 Schéma externe 2 Schéma externe 3

Schéma
conceptuel

Schéma
interne

Cette architecture à trois niveaux permet de supporter le concept


d’indépendance données – programmes, c’est-à-dire la capacité de modifier le schéma
de la base de données à un niveau donné sans remettre en cause le schéma aux niveaux
supérieurs.

- Indépendance physique : on peut changer le schéma physique sans remettre en cause


le schéma conceptuel (et les schémas externes) ; on peut modifier l’organisation
physique des fichiers, rajouter ou supprimer des méthodes d’accès.

- Indépendance logique : on peut changer le niveau conceptuel sans remettre en cause


les schémas externes ou les programmes d’application ; l’ajout ou le retrait de
nouveaux concepts ne doit pas modifier les éléments qui n’y font pas explicitement
référence.

I.5. Modélisation des données

Pour décrire les réalités du monde réel, nous devons recourir à des modèles qui
fassent ressortir les points essentiels du système observé. C’est de cette façon que
l’esprit humain en général procède pour mieux comprendre une réalité donnée en
faisant une comparaison avec un phénomène ou un fait similaire mais facile à
appréhender. C’est par exemple le recours aux paraboles, aux contes, aux schémas.
La grande difficulté en informatique est celle de traduire un phénomène ou un
processus du monde réel sous une forme qu’un ordinateur peut comprendre en vue d’en
faire une application. Le monde réel étant très complexe, il sera donc impérieux de le
simplifier au maximum, mais sans perdre les informations nécessaires à sa
compréhension en recourant à des standards informatiques.
Pour ce faire, il est donc important de savoir ce qu’on entend par modèle et
comment on peut modéliser une organisation donnée afin d’avoir une information
structurée

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 19

Qu’est-ce qu’un modèle ?


Un modèle est une représentation abstraite et simplifiée (c’est-à-dire qui exclut
les détails) d’une entité (phénomène, processus, système, etc.) du monde réel en vue de
le décrire, de l’expliquer ou de le prévoir.
Modèle est synonyme de théorie, mais avec une connotation pratique : un modèle, c’est
une théorie orientée vers l’action qu’elle doit servir.

A* est un modèle de A pour un observateur O si et seulement si A* aide O à


répondre aux questions qu’il se pose sur A.

Exemple

Modèle (A*) Système observé (A)

Concrètement, un modèle permet de réduire la complexité d’un phénomène en


éliminant les détails qui n’influencent pas son comportement de manière significative.
il reflète ce que le concepteur croit important pour la compréhension et la prédiction du
phénomène modélisé dépendant des objectifs du modèle.
Voici quelques exemples de modèles prédictifs :
Modèle météorologique : à partir des données d’observation (satellite, …), il permet
de prévoir les conditions climatiques pour les jours à venir.
Modèle économique : peut par exemple permettre de simuler l’évolution des cours
boursiers en fonction d’hypothèses macro-économiques (évolution du chômage, taux de
croissance, …).
Modèle démographique : définit la composition d’un panel d’une population et son
comportement dans le but de fiabiliser des études statistiques, d’augmenter l’impact des
démarches commerciales, etc.

Pourquoi modéliser ?
Modéliser un système avant sa réalisation permet de mieux comprendre le
comportement du système. C’est également un bon moyen de maîtriser sa complexité et
d’assurer sa cohérence. Un modèle et un langage commun, précis, qui est connu par
tous les membres d’une équipe et il est donc, à ce titre, un vecteur privilégié pour
communiquer. Cette communication est essentielle pour aboutir à une compréhension

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 20

commune aux différentes parties prenantes (notamment entre la maîtrise d’ouvrage et


maîtrise d’œuvre informatique) et précise d’un problème donné.
Dans le domaine de l’ingénierie du logiciel, le modèle permet de mieux répartir
les tâches et d’automatiser certaines d’entre elles. C’est également un facteur de
réduction des coûts et des délais. Par exemple, les plateformes de modélisation savent
maintenant exploiter les modèles pour faire la génération du code (au moins au niveau
du squelette) voire même faire des allers-retours entre le code et le modèle sans perte
d’informations.
Le modèle est enfin indispensable pour assurer un bon niveau de qualité et une
maintenance efficace. En effet, une fois mise en production, l’application va devoir être
maintenue, probablement par une autre équipe et, qui plus est, pas nécessairement de la
même société que celle ayant créé l’application.
Le choix du modèle a donc une influence capitale sur les solutions obtenues.
Les systèmes non triviaux sont mieux modélisés par un ensemble de modèles
indépendants. Selon les modèles employés, la démarche de modélisation n’est pas la
même.

Retenons donc ceci :


- Un modèle est une représentation simplifiée des informations pertinentes d’une réalité
sur laquelle on veut être renseigné.
- Ce modèle n’est pas directement utilisable par une machine, mais c’est un mode de
représentation intermédiaire entre la réalité observée et la machine avec son logiciel.
- Son objet est de mettre en lumière les caractéristiques essentielles de la réalité
(organisationnelle ou autre) observée.

I.6. Les modèles logiques


La description conceptuelle permet de représenter le plus fidèlement possible les
réalités de l’univers à informatiser. Mais cette représentation ne peut pas être
directement manipulée et acceptée par un système informatique. Il est donc nécessaire
de passer du niveau conceptuel à second un niveau plus proche des capacités des
systèmes informatiques. Ce niveau, appelé niveau logique, consiste à choisir l’un des
modèles suivants :
- modèle hiérarchique
- modèle réseau
- modèle relationnel
- modèle objet

Chacun de ces modèles repose sur des techniques d’organisation des données
particulières que des logiciels seront capables de gérer.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 21

D'abord sont apparus les SGBD hiérarchiques dans lesquels les données sont
organisées sous forme d’un arbre, puis les SGBD réseaux dans lesquels les données
sont organisées selon un graphe plus général. Ces deux types de SGBD sont dits
navigationnels car on peut retrouver une information à condition d’en connaître le
chemin d’accès.

Aujourd’hui, ils sont pratiquement remplacés par les SGBD relationnels dans
lesquels les données sont représentées sous forme de tables à deux dimensions et avec
lesquels l’information peut être obtenue par une requête formulée dans un langage
quasiment naturel.

Plus récemment sont apparus les SGBD orientés objets qui offrent à la fois un
langage de requête et de navigation hypertexte. Un modèle logique de données orienté
objet permet par exemple des classes Java s’appuyant sur une base de données
relationnelle et permettant le développement d’une application web.

I.6.1. Le modèle hiérarchique


Les bases de données modélisent les données du monde réel. Puisque le monde
réel nous apparaît souvent au travers des hiérarchies, il est normal qu’un des modèles
les plus soit le modèle hiérarchique.
Selon ce modèle, le schéma conceptuel est visualisé sous forme d’un graphe
arborescent dont les nœuds correspondent aux objets et les arcs entre deux
correspondent aux associations. Les liens sont ceux de filiation car il s’agit d’un arbre.
Les concepts utilisés pour ce modèle sont : le champ, le segment et l’arbre de segments.
Ainsi une base de données hiérarchique peut être considérée comme un ensemble
d’arbres, encore appelé foret, dont les nœuds sont les segments.

I.6.2. Le modèle réseau


Le modèle réseau a été proposé par le groupe DBTG du comité CODASYL dont
le modèle est actuellement utilisé sur plusieurs systèmes.
Les objets modélisés dans une base de données réseau sont décrits à l’aide de
trois concepts : l’atome, l’agrégat et l’article.
Une base de données réseau est donc composée d’articles reliés entre eux par
des ensembles. Elle est représentée par un graphe des types visualisé sous forme d’un
graphe général.

I.6.3. Le modèle relationnel


Le modèle relationnel est un modèle qui repose sur les notions mathématiques
de la théorie des ensembles et dans lequel les objets sont représentés sous forme d’un
tableau à deux dimensions (lignes et colonnes).

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 22

Un schéma relationnel est un ensemble de relations, une relation étant le produit


cartésien des domaines.

Ex : Soient les domaines : NOM, MATRICULE, PRENOM.


L’ensemble ETUDIANT peut être représenté comme un produit cartésien de ces
domaines.
ETUDIANT = (NOM, MATRICULE, PRENOM)
= MATRICULE X NOM X PRENOM

Le modèle relationnel, auquel est consacré le prochain chapitre, est basé sur
les notions mathématiques de la théorie des ensembles.
Une meilleure façon de représenter le schéma relationnel est la définition en
compréhension.

Ex : Soit l'entité ETUDIANT (Mat , Nom , Prenom)

On peut représenter ETUDIANT dans un tableau de valeurs à deux dimensions


(lignes , colonnes ) appelé table comme ci-dessous :

MAT NOM PRENOM


A100 YAV JOSEPH
A101 KABU ALAIN

Chaque ligne de la table peut être vue comme un fait décrivant une entité du monde réel
et est appelée tuple ou n-uplet.
.

4. Le modèle orienté objet


Les bases de données orientées objets sont caractérisées par quatre points
essentiels:
• un modèle de données qui permet de représenter des structures de données complexes;
• les données et les traitements ne sont plus séparés. La dynamique (les méthodes) fait
partie de la déclaration des classes d'objets;
• les objets, qui comportent deux parties: leur valeur, et les opérations, appelées
méthodes, qui permettent de les manipuler. Selon le principe d'encapsulation des
données, la valeur des objets est cachée. L'accès et la mise à jour des objets se fait par
appel de leurs méthodes. Cela rend plus facile la maintenance des logiciels construits
selon ce paradigme.
• l'héritage, qui permet à une classe d'objets d'avoir les mêmes propriétés (structure de
données et méthodes) qu'une autre classe sans avoir à les redéfinir. C'est l'héritage qui
permet d'étendre et de réutiliser facilement des logiciels.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 23

Les bases de données orientées objets (BDO) qui cherchent à répondre à ces
nouveaux besoins, sont nées de la convergence de deux domaines:
+ les bases de données;
+ les langages de programmation orientés objets, tels que Eiffel, Smalltalk, C++,
Java… L'objectif de ces langages est d'accroître la productivité des développeurs en
permettant de créer des logiciels structurés, extensibles, réutilisables et de maintenance
aisée.

5. Le modèle relationnel-objet
Le modèle objet-relationnel se fonde sur l'extension du modèle relationnel par
les concepts essentiels de l'objet.
Le cœur du système reste donc relationnel, mais tous les concepts clés de l'objet y sont
ajoutés dans une forme particulièrement prévue pour faciliter l'intégration des deux
modèles.

Quand les premières bases de données orientées objet sont apparues sur le
marché, de nombreuses voix ont annoncé la mort proche des systèmes relationnels
qui régnaient alors sur le monde des systèmes de gestion de bases de données
(SGBD) depuis les années 70 et qui semblaient de plus en plus dépassés par
l'augmentation de la complexité des informations qu'ils devaient gérer.
En fait, l' histoire ne s' est pas du tout déroulée de cette manière : les bases de
données orientées objet ont aussi leurs limitations, et le modèle relationnel possède
certaines qualités, comme l' intégrité référentielle, qui le rendent difficilement
remplaçable.

Les grands éditeurs de SGBD, conscients du succès de l'orienté objet, ont


commencé par éviter le problème en donnant la possibilité de stocker des informations
non structurées dans des champs spéciaux appelés BLOB (Binary Large Object). Ils ont
ensuite étendu le modèle relationnel à un certain nombre de concepts objet : c'est cette
extension qui est communément appelée le modèle objet-relationnel et qui nous
intéresse particulièrement ici.

Un exemple d'objet complexe peut être une table dont l'une des colonnes ne
contient pas un simple champ d'informations, mais une table complète, comprenant
plusieurs tuples et plusieurs colonnes :

Par exemple, une entreprise est divisée en départements, et chaque département a un


certain nombre d'employés. Les noms et prénoms des employés sont stockés dans une
table imbriquée dans la colonne Employés de la table Départements

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 24

Tous les types de données multimédias peuvent aussi être considérés comme des
types de données complexes, par exemple des données cartographiques ou
géométriques nécessitent des colonnes de tables capables de stocker des listes de points.

La technologie objet-relationnelle est née en 1992, elle est donc assez nouvelle
sur le marché des SGBD, dominé depuis environ 1970 par les bases de données de type
relationnel.
Actuellement, tous les grands éditeurs de SGBD sont conscients des limites du modèle
relationnel, ils ont donc vu dans le modèle objet-relationnel une manière d'enrichir ce
modèle. Informix a été le premier éditeur de SGBD à relever le défi de l'objet-
relationnel en rachetant la firme Illustra, qui développait alors une version commerciale
du système Postgres, un SGBD relationnel étendu.

I.7. Les architectures opérationnelles des SGBD

Depuis le milieu des années 80, les SGBD fonctionnent selon l’architecture
Client-Serveur.

I.7.1. Architecture Client-Serveur

Un SGBD et un ensemble de processus et de tâches qui supportent l’exécution


du code du SGBD pour satisfaire les commandes des utilisateurs. Depuis l’avènement
des architectures distribuées autour d’un réseau local, les systèmes sont organisés selon
l’architecture Client-Serveur.

C’est une architecture hiérarchisée mettant en jeu d’une part un serveur de


données gérant les données partagées en exécutant le code du SGBD avec d’éventuelles
procédures applicatives, d’autre part des clients pouvant être organisées en différents
niveaux supportant les applications et la présentation des requêtes de type question -
réponse.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 25

Il existe plusieurs variantes de l’architecture Client-Serveur, selon qu’un


processus serveur est associé à chaque utilisateur (serveur monotâche) ou que plusieurs
utilisateurs partagent un même processus serveur (serveur multitâche).

Aujourd’hui, plusieurs systèmes proposent un serveur multitâche capable de


traiter plusieurs requêtes d’utilisateurs différents en parallèle. Cela est réalisé grâce à un
multiplexage du serveur en tâches, les commutations de tâches étant assurées par le
serveur lui-même au niveau d’un gestionnaire de tâches optimisé par les bases de
données

Mais au-delà du multitâche sont proposées des architectures client-serveur à


deux strates proposant deux couches de traitements applicatifs et dans lesquelles le
client peut invoquer des procédures applicatives liées à la base de données appelées
procédures stockées

Avec l’apparition d’Internet et du Web, les architectures client-serveur ont


évolué vers les architectures à trois strates. Le client est responsable de la présentation
et utilise pour cela les browsers. Le serveur d’application exécute le code applicatif
essentiel et le serveur de données supporte le SGBD et gère éventuellement les
procédures stockées

L’architecture client-serveur est aujourd’hui mieux adaptée aux systèmes


répartis autour d’un réseau local ou d’Internet. Elle permet à de multiples postes ou
stations de travail distribuées sur la planète de partager les mêmes données. Un
processus client sur la station de travail ou l’ordinateur personnel gère les applications
de l’utilisateur qui émettent des requêtes au serveur. L’avantage (et éventuellement
l’inconvénient) du client-serveur est de centraliser la gestion des données au niveau du
serveur.

I.7.2. Architecture répartie

Afin de répondre à la tendance centralisatrice de l’architecture client-serveur,


certains SGBD préconisent une architecture repartie qui fait interagir plusieurs serveurs
gérant un ensemble de bases de données perçu comme une seule base de données par
les utilisateurs. Très souvent, la base de données repartie est hétérogène et est aussi
appelée base de données fédérée.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 26

Chapitre II : LE MODELE RELATIONNEL

II.1. Aperçu historique

Le modèle relationnel a été inventé par E.F.CODD, directeur de recherche du


centre IBM de San José en 1970. Il est basé sur une organisation des données sous
forme de tables.

La manipulation des données s’effectue selon le concept mathématique de


relations de la théorie des ensembles, c’est-à-dire l’algèbre relationnelle.
Celle-ci est constituée d’un ensemble d ‘opérations formelles sur les relations. Les
opérations relationnelles permettent de créer une nouvelle relation (table) à partir
d’opérations élémentaires sur d’autre tables (Ex : l’intersection, l’union ou la
différence).

Le modèle relationnel est simple, facile à appréhender, même pour un non


spécialiste et repose sur de solides bases théoriques qui permettent notamment de
définir de façon formelle les langages de manipulation associés.
Il représente l'information dans une collection de relations. Intuitivement, on peut voir
une relation comme une table à double entrée, voire même comme un fichier. Chaque
ligne de la table (appelée n-uplet ou tuple) peut être vue comme un fait décrivant une
entité du monde. Une colonne de la table est appelée un attribut.

Le modèle relationnel est souvent considéré comme le plus simple et le plus


élégant des modèles. Sa simplicité est due à une vision tabulaire des données très
intuitive. Son élégance résulte de bases formelles issues de la théorie mathématique des
ensembles.
Les objectifs du modèle relationnel étaient différents de ceux des modèles réseau et
hiérarchique ; Parmi les lacunes de ces modèles auxquelles E.F.Codd souhaitait
apporter une solution, nous en retenons deux :

Permettre un haut degré d'indépendance entre les applications (programmes,


interfaces) et la représentation interne des données (fichiers, chemins d'accès)

Etablir une base solide pour traiter les problèmes de cohérence et de redondance
des données.

Le modèle relationnel présente également de nombreux avantages dus au fait


qu'il soit basé sur la théorie des ensembles : Langage de manipulation des données
ensemblistes grâce à l'algèbre relationnelle et grâce à des langages assertionnels qui
permettent de spécifier ce que l'on souhaite obtenir sans dire comment l'obtenir. Le
SGBD est responsable de la politique d'exécution des requêtes.

En 1986, grâce à IBM, le modèle relationnel et son langage SQL ont été
standardisées au niveau international (ISO089)

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 27

A l’heure actuelle, il s’avère que les bases de données relationnelles


sont de loin le type de base de données fréquemment utilisé. L’accès aux données est
beaucoup plus aisé et plus sûr dans la mesure où la base de données devient
responsable d’une partie de sa propre intégrité. Tous les développeurs restent
impressionnés par les possibilités qu’offrent des bases de données relationnelles telles
que SQL Server et ORACLE. En effet, ces derniers fournissent des données à grande
échelle tout en leur permettant de concevoir une meilleure intégrité.

II.2. Objectifs d’un SGBD


- Proposer des schémas faciles ou simples à utiliser, car on a des relations où les liens
physiques entre objets n’apparaissent pas mais existent, et aussi parce que la
représentation se fait à l’aide d’une table de valeurs ;

- Améliorer l’indépendance logique et l’indépendance physique entre les données et les


programmes ;

- Mettre à la disposition des utilisateurs des langages évolués ( de haut niveau ) de type
« non procédural ».
Dans le langage non procédural, on spécifie seulement ce qu’on veut avoir mais on ne
précise pas comment y arriver ; c’est le SGBD qui choisit le meilleur chemin pour y
parvenir.

- Etre un modèle extensible permettant de modéliser et de manipuler simplement des


données tabulaires, mais pouvant être étendu pour modéliser et manipuler des données
complexes.

- Devenir un standard pour la description et la manipulation des bases de données.

II.3. Les structures de données de base


Le modèle relationnel est basé sur le schéma Entité – Association et repose sur les
notions mathématiques simples de la théorie des ensembles. C’est un modèle de type
conceptuel et est actuellement utilisé par plusieurs méthodes et outils d’aide à la
conception de bases de données. Le modèle E/A permet une représentation graphique
assez lisible du chemin d’une base de données.

Toute organisation faisant partie du monde réel peut être représentée comme un tout
constitué de deux éléments :
- les objets (appelés Entités)
- les liens entre ces objets (appelés Associations)

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 28

II.3.1. Le concept d’entité


Une entité est un objet concret ou abstrait de la réalité pour lequel on souhaite
connaître et enregistrer des informations.
C’est une représentation d’un élément matériel ou immatériel du monde réel ayant
un rôle dans le système où l’on voudrait opérer. C’est un modèle d’objet identifié du
monde réel dont le type est défini par un nom et une liste de propriétés (rubriques) qui
le caractérisent.
L’identification [logique] des entités à modéliser constitue la première étape de
représentation logique des données.
Ces entités peuvent définir des personnes, des endroits, des choses ou des concepts.
Généralement elles correspondent aux noms figurant dans le système à modéliser.

On peut finalement conclure qu’une entité est un regroupement d’objets :


- ayant la même nature
- jouant le même rôle
- ayant la même structure informationnelle

Il s’agit d’un type d’objets possédant des caractéristiques similaires et manipulables par
des opérations identiques.

Exemples : Le Client d’une banque, le cours enseigné dans une école, le malade dans
un hôpital, etc.

II.3.2. Entité et instance


Lorsque les propriétés d’une entité prennent des valeurs, l’ensemble de ces
valeurs constitue une instance d’entité ou une occurrence d’entité. Il s’agit donc d’un
objet particulier identifiable et précis d’une entité caractérisé par un identifiant et des
valeurs de propriétés.

Exemple :

Entité Instances d’entité

Intitulé =
COURS Mathématiques
….
Intitulé Intitulé = Bases de
… Données

Intitulé = Réseaux

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 29

II.3.4. Le concept d’attribut et de domaine


Un attribut est une propriété caractéristique d’une entité qui est utile ou
nécessaire, mais pas forcément pertinente pour décrire la réalité perçue. Il prend une
valeur bien précise pour chaque instance d’une entité.

Par exemple, un produit vendu dans un magasin peut avoir les attributs suivants :
- le code
- la désignation
- la quantité en stock
- le prix de vente unitaire

Un attribut prend ses valeurs dans un ensemble des valeurs possibles appelé
« domaine ».

Exemple

Attribut Domaine

Nom d'une personne Caractères alphanumériques

Quantité en stock Nombre entier positif

Prix d'un article Nombre avec 2 décimales

Date d'une commande Jour / Mois / Année

II.3.5. Concept d’identifiant


L’identifiant est un attribut (ou un groupe d’attributs) permettant de repérer de
manière unique une instance parmi toutes les instances ou occurrences possibles d’une
entité.
C’est, en d’autres termes, une propriété particulière d'un objet telle qu'il n'existe pas
deux instances de cet objet pour lesquelles cette propriété pourrait prendre une même
valeur.
L’identifiant est aussi appelé Clé primaire.
Ainsi, chaque individu d’une entité doit être identifiable de manière unique. C’est
pourquoi les entités doivent toujours posséder un attribut (ou un groupe d’attributs)
sans doublon qu’est l’identifiant ou la clé primaire (toujours souligné).

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 30

II.3.6. Association
Une association représente les liens sémantiques qui peuvent exister entre deux ou
plusieurs entités.
A titre illustratif, on a l’association Acheter entre les entités Personne et Voiture.

PERSONNE VOITURE
ACHETER
… …
… …

N.B.

* Une association peut aussi posséder des attributs. Dans l’exemple ci-dessus, les
attributs date d’achat et prix peuvent appartenir à l’association Acheter.

* L’identifiant d’une association est constitué de l’ensemble des identifiants des entités
impliquées dans l’association.

II.3.7. Cardinalités
La cardinalité d’un lien entre une entité et une association est le minimum et le
maximum de fois qu’une instance de l’entité participe à l’association.
- Minimum : 0 ou 1
- Maximum : 1 ou n
- Combinaisons possibles : (0,1) (1,1) (0,n) (1,n)

Exemple

CLIENTS 1,n 0,n ARTICLES 1,n 1,n FOURNISS

- nºclient -numart - numfourn


- nomcl ACHETER - nomart LIVRER - nomfourn
- prénomcl - prixunit - nºtél
- adressecl - qtecde - stock - qtelivre
- datecde
- datelivr
- nomlivr

- Un client peut acheter une à plusieurs fois (car pour être considéré comme client, il
faut avoir acheté au moins une fois) ; d’où (1,n)
- Un article peut ne pas être acheté ; ou s’il l’est, il peut l’être plusieurs fois. D’où (0,n)

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 31

II.3.8. Contrainte d’intégrité


Une contrainte d'intégrité est une propriété du schéma E/A, invariante dans le
temps. On peut aussi l’appeler règle de gestion. C’est en fait une règle de cohérence
dans la structure des données qui forment le système observé.

* La contrainte d’intégrité référentielle est une contrainte exprimée entre deux


relations. Intuitivement, elle consiste à vérifier que l'information utilisée dans un nuplet
pour désigner un autre nuplet est valide, notamment si le nuplet désigné existe bien.
Par exemple, on ne peut créer une commande pour un fournisseur qui n’existe pas, de
même qu’on ne peut supprimer un fournisseur pour lequel il existe encore des
commandes non soldées.

II.4. Perception du monde réel


Le monde réel peut être modélisé à l’aide d’entités qui représentent les objets
ayant une existence visible, et d’associations entre ces objets.

A titre d’exemple, soient les données modélisant des entités « personne » et


« voiture », et le type d’association « possède » qui traduit le fait qu’une personne est
propriétaire d’une ou plusieurs voitures. Une personne est caractérisée par un numéro
de sécurité sociale (NSS), un nom et un prénom alors qu’une voiture est caractérisée
par les attributs Numéro de véhicule, Marque, Type, Puissance et Couleur.
Chaque personne est identifiée par une occurrence du numéro de sécurité sociale (NSS)
alors que chaque voiture est identifiée par un numéro de véhicule (NV).
A chaque occurrence d’association correspond par exemple une date d’achat (DATE) et
un prix d’achat (PRIX).

La figure ci-dessous illustre la partie du monde réel modélisée en représentant


une entité par un rectangle, une association par un hexagone et un attribut par un cercle.

Graph.2

PERSONNE POSSEDE VOITURE

NSS NOM PREN DATE PRIX NV MARQUE TYPE PUISSANCE COULEUR

Le modèle relationnel se prête bien à la représentation des entités et des


associations. Une entité est représentée par une relation ( table ) dont le schéma est le
nom de l’entité suivi de la liste des attributs de l’entité.
Par exemple, les entités PERSONNE et VOITURE seront respectivement représentées
par les relations :

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 32

PERSONNE (NSS, NOM , PRENOM )


VOITURE (NV, MARQUE, TYPE, PUISSANCE, COULEUR )

Une association est représentée par une relation dont le schéma est le nom de
l’association, suivie de la liste des identifiants des entités participantes et des attributs
de l’association.
Par exemple, l’association POSSEDE sera représentée par la relation :

POSSEDE (NSS, NV, DATE, PRIX).

Notons qu’une mauvaise perception des entités et associations représentant le


monde réel modélisé conduit à des relations problématiques.
Imaginons par exemple que l’on isole une entité unique PROPRIETAIRE contenant
tous les attributs des trois relations PERSONNE, VOITURE et POSSEDE. Ainsi, nous
pourrions représenter toutes les informations modélisées par une seule relation.
La figure ci-dessous représente une extension possible de cette relation :

PROPRIETAIRE
NV MARQUE TYPE PUIS COUL NSS NOM PRENOM DATE PRIX

SH402B Renault R12TS 6 Rouge 100 AMISI Alain 10.02.75 2000

KN511S Peugeot 504 9 Verte 100 AMISI Alain 11.06.80 9000

KT689J Citroen 2CV 2 Bleue 200 KADI Pierre 20.04.76 1000

CD750N Citroen AM18 5 Bleue 200 KADI Pierre 20.08.81 5000

KT900G Renault R18B 9 Verte 300 MBAY Yves 11.09.99 6000

La relation représentée ci-dessus souffre de plusieurs types d’anomalies:

- tout d’abord, des données sont redondantes ; par exemple, AMISI Alain et KADI
Pierre apparaissent deux fois ; plus généralement, une personne apparaît autant de fois
qu’elle possède de voitures ;

- ces redondances conduisent à des risques d’incohérences lors des mises à jour : par
exemple, si l’on s’aperçoit que le prénom de KADI n’est pas Pierre mais Jean, il faudra
veiller à mettre à jour les deux tuples contenant KADI sous peine de voir apparaître un
KADI Pierre et un KADI Jean ;

- il est nécessaire d’autoriser la présence de valeurs nulles dans une telle relation afin de
pouvoir conserver des voitures sans propriétaire ou des personnes ne possédant pas de
voitures dans la base.

En résumé, une relation qui ne représente pas de vraies entités ou associations


semble donc souffrir de la présence de données redondantes et d’incohérences
potentielles et nécessite le codage de valeurs nulles. Il y a donc tout intérêt à éliminer
ces anomalies afin de faciliter la manipulation des relations.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 33

Cette procédure d’élimination d’anomalies peut se faire à l’aide d’une approche


par décomposition. Celle-ci tend à partir d’une relation composée de tous les attributs,
appelée la relation universelle, et à décomposer cette relation en sous-relations qui ne
souffriraient pas des anomalies précédemment signalées.
La décomposition susmentionnée s’effectue par la notion de dépendances
fonctionnelles.

II.5. Dépendances fonctionnelles

II.5.1. Définition
La notion de dépendance fonctionnelle fut introduite par CODD afin de
caractériser des relations qui peuvent être décomposées sans perte d’informations.

Soit une relation R ( A, B, C, D )


On dit que A détermine C ou que C dépend fonctionnellement de A, et on note A → C
ssi ayant deux tuples ( a1, b1, c1, d1 ) et (a2, b2, c2, d2 ) tels que si a1=a2, alors c1=c2.

Plus simplement, un attribut ( ou un groupe d’attributs ) Y dépend


fonctionnellement d’un autre attribut ( un groupe d’attributs ) X si la connaissance d'
une valeur de X lui fait correspondre une valeur unique de Y.

Ex1 : Matricule Nom Prénom Catégorie Adresse

Ici, le Matricule de l’agent détermine son Nom, son Prénom, sa Catégorie et son
Adresse.

Ex2 : Nom-Fournisseur Article Fourni Adresse Fournisseur Prix

De même ici, l’Adresse Fournisseur et le Prix sont déterminés par le Nom du


Fournisseur et l’Article Fourni.

Il est essentiel de bien remarquer qu’une dépendance fonctionnelle est une


assertion sur toutes les valeurs possibles et non pas sur des valeurs actuelles ; elle est
caractérisée par une intention et non une extension d’une relation. Autrement dit, il est
impossible de déduire les dépendances fonctionnelles d’une réalisation particulière
d’une relation. La seule manière de déterminer une dépendance fonctionnelle est de
regarder soigneusement ce que signifient les attributs car ce sont des assertions sur le
monde réel qui lient les valeurs possibles des attributs entre elles.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 34

II.5.2. Propriétés
Les dépendances fonctionnelles obéissent à plusieurs règles d’inférences
triviales. Les trois premières composent les axiomes de dépendances fonctionnelles et
sont connues sous le nom d’axiomes d’Armstrong. Toutes les autres propriétés sont
déduites de ces trois axiomes.

Soit la relation R ( A, B, C, D )

1. Réflexivité : A → A , tout attribut se détermine lui-même ou une partie de lui-même.


2. Transitivité : si A → B et B → C, alors A → C
3. Pseudo-transitivité : si A → B et B, C → D, alors A,C → D

Ex : Soit un atelier où Total Heures = nombre d’heures prestées dans un atelier


en un mois.

N° Machine → N° Atelier
Mois, N° Atelier → Total Heures

Alors N°Machine, Mois → Total Heures

4. Augmentation : si A → B , alors A, C → B ∀C
5. Union : si A → B et A → C , alors A → B, C
6. Décomposition : si A → B, C alors A → B et A → C

II.5.3. Types de dépendances

a. Dépendance élémentaire (totale)

Soit une relation R ( A, B, C, D )


On dit que A → B est une dépendance élémentaire ou totale si et seulement si il
n’existe pas une partie de A qui détermine B.
A → B signifie alors que B dépend totalement ou entièrement de A.

b. Dépendance directe

Soit une relation R ( A, B, C, D )


Une dépendance A → B est directe s’il n’existe pas un attribut C dans R tel qu’on ait
A → C et C → B.
On dit alors que B dépend directement de A.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 35

Ex : AUTO ( Nº, MARQUE, TYPE, PUISSANCE, COULEUR )

1) Nº → PUISSANCE
2) Nº → MARQUE
3) Nº → COULEUR
4) Nº → TYPE
5) TYPE → MARQUE
6) TYPE → PUISSANCE

Mais (1) et (2) ne sont pas directes car il y transitivité entre (4) et (5 ) ou (4) et (6)

II.5.4. Fermeture transitive

A partir d’un ensemble de dépendances élémentaires, on peut composer par


transitivité d’autres dépendances élémentaires. On aboutit ainsi à la notion de fermeture
transitive d’un ensemble de dépendances fonctionnelles élémentaires : c’est l’ensemble
de dépendances fonctionnelles élémentaires enrichi de toutes les dépendances
élémentaires déduites par transitivité.

Si F = {nv → type, type → marque, type → puissance, nv → couleur}, alors

F+ = F U { nv → marque, nv → puissance} est la fermeture transitive de la relation


VOITURE.

II.5.5. Couverture minimale

La couverture minimale est le sous-ensemble minimal de dépendances


fonctionnelles permettant de générer toutes les autres.
C’est l’ensemble des dépendances fonctionnelles élémentaires associé à un ensemble
d’attributs vérifiant les propriétés suivantes :
- aucune dépendance dans f n’est redondante
- toute dépendance fonctionnelle élémentaire des attributs est dans la fermeture
transitive.

Pour la relation VOITURE par exemple, F est une couverture minimale.

La couverture minimale va constituer un élément essentiel pour composer des relations


sans perte d’informations directement à partir des attributs.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 36

II.6. Normalisation

II.6.1. Définition
La normalisation est une opération qui consiste à examiner dans quelle
condition une relation R souffrant de quelques anomalies (cfr supra) peut être
remplacée par deux relations normales R1 et R2 telles que l’espace des attributs R1 et R2
soit plus petit que celui de R et que R1 et R2 contiennent les mêmes informations que R.

Il faut donc mettre en place un algorithme de décomposition en 3ème forme


normale qui aura pour but de convertir un schéma de relation qui n’est pas en 3ème
forme normale en un schéma de relation en 3ème forme normale.
Le principe consiste simplement à appliquer à récursivement les règles de
décomposition énoncées ci-dessus afin de décomposer jusqu à obtenir des relations en
3NF.

II.6.2. Formes normales


a. Première forme normale 1NF
` Une relation R est en 1NF si tout attribut contient une valeur atomique
(élémentaire) en fixant la clé, c'est-à-dire qu'il existe au moins une clé caractérisant
chaque occurrence de l'objet représenté.
La définition de la clé entraîne la première forme normale. Cette forme normale
consiste simplement à éviter les domaines composés de plusieurs valeurs.

b. Deuxième forme normale 2NF


Une relation R est en 2NF si :
- elle est en 1NF
- tout attribut n’appartenant pas à la clé ne dépend pas d’une partie de cette clé, c’est-à-
dire CLE → A est totale ∀ A.
Autrement dit, toutes les dépendances qui partent de la clé vers les autres attributs sont
totales

Ex : FOURNISSEUR ( NOM-F, ART, ADR-F, PRIX )

- La clé est ( NOM-F, ART )


- NOM-F, ART → ADR-F n’est pas totale car il existe NOM-F → ADR-F
NOM-F, ART → PRIX est totale

Donc FOURNISSEUR n’est pas en 2NF


Ainsi, dans la dépendance non totale NOM-F, ART → ADR-F, on tire la dépendance
NOM-F → ADR-F qui est totale.

On décompose alors FOURNISSEUR en deux relations qui sont :


R1 ( NOM-F, ADR-F )
R2 ( NOM-F, ART, PRIX ) qui sont toutes deux en 2NF.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 37

c. Troisième forme normale 3NF


Une relation R est en 3NF si :
- R est en 2NF
- toutes les dépendances de la clé vers les autres attributs sont directes, c’est-à-dire tout
attribut n’appartenant pas à la clé ne dépend pas d’un attribut non clé.

Ex : AUTO ( Nº, TYPE, MARQUE, COULEUR, PUISSANCE )

Les dépendances Nº → PUISSANCE et Nº → MARQUE ne sont pas directes car elles


sont transitives :

Nº → TYPE
TYPE, → PUISSANCE Nº → PUISSANCE.

Et Nº → TYPE
TYPE, → MARQUE Nº → MARQUE

Donc AUTO n’est pas en 3NF.


D’ou il faut la décomposer.

On retient : Nº → TYPE, COULEUR


TYPE → PUISSANCE, MARQUE

D’où R1 (Nº, TYPE, COULEUR) en 3NF


R2 ( TYPE, MARQUE, PUISSANCE ) en 3NF

d. Forme normale de Boyce - Codd

La 2ème forme normale élimine les anomalies créées par les dépendances entre
parties de clé et attributs non clé. La 3ème forme normale élimine les anomalies créées
par des dépendances entre attributs non clé. Quid des dépendances fonctionnelles des
parties de clé entre elles ou d’attributs non clé vers une partie de clé ? La 3ème forme
normale est insuffisante.

Afin d’éliminer les redondances créées par les dépendances entre parties de clé
et celles déjà éliminées par la 3ème forme normale, Boyce et Codd ont introduit la forme
normale qui porte leur nom (BCNF).

« Une relation est en BCNF si et seulement si les dépendances fonctionnelles


élémentaires sont celles dans lesquelles une clé entière détermine l’attribut ».
En d’autres termes, tout attribut faisant partie de la clé ne doit pas dépendre d’un
attribut non clé.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 38

II.6.3. Relation normalisée


Une relation est dite normalisée si elle est en 3NF.
Si elle ne l’est pas, il faut la décomposer.

Ex : Voir exemple précédent où : R1= VEHICULE


R2 = MODELE

On en déduit le schéma relationnel ci-après :

VEHICULE MODELE
NºV Type
couleur Marque
Type Puissance

II.6.4. Avantages de la normalisation


La normalisation permet :
1) une cohésion des attributs autour de la clé.
2) De supprimer et diminuer les anomalies en mise à jour (réduire la redondance
d’informations, d’où la réduction des I/O), en insertion et en suppression.

II.7. Exercices d’application

Exercice nº1

Une société de véhicules située à Lubumbashi possède un ensemble de camions


et de voitures qu’elle loue à ses clients.
Elle emploie également un ensemble de conducteurs pour conduire les véhicules à la
demande des clients.
La société garde les informations à propos des véhicules : chaque véhicule est identifié
par un numéro unique, une marque, un modèle, une catégorie (camion ou voiture) et un
numéro d’immatriculation.
Les conducteurs de la société sont identifiés par leur numéro, leurs nom et prénom, leur
adresse et le véhicule qui leur est attribué.
La société reçoit une centaine de réservations par jour, chacune demandant la location
d’un ou de plusieurs véhicules pour une période donnée. Lors de la réservation, le client
doit spécifier les options du véhicule, les dates de début et de fin de location.
Les réservations de nouveaux clients impliquent l’enregistrement de leurs données : la
raison sociale dans le cas d’une entreprise ou les nom et prénom pour les particuliers,
l’adresse, le numéro de téléphone et le fax.

Définir une base de données relationnelle pour la gestion de cette société.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 39

Exercice nº2

On veut créer une base de données relationnelle de la gestion des notes des
étudiants au sein d’une institution universitaire.
Pour ce faire, le conseil d’administration recueille les renseignements suivants sur
chaque enseignant : son nom, son grade, son ancienneté et lui attribue un numéro
d’identification.
Chaque étudiant est enregistré par rapport à son nom, sa date de naissance, son sexe ;
un numéro d’identification lui est attribué.
Chaque cours dispensé est identifié par un numéro, son intitulé, ses heures de théorie,
ses heures de TP et l’enseignant qui le dispense.

Sachant que chaque faculté est codifiée et que pour chaque cours chaque étudiant a
une note, élaborer un modèle relationnel pour gérer les notes des étudiants.

Exercice nº3

Soit la relation
Commande (N°cmd, N°cl, nom-cl, date-cmd, adr-liv, N°rep, nom-rep, N°prod, nom-
prod, qté-cmd, qté-stock)

Règles de gestion
- un client a un seul représentant
- sur une commande, il peut y avoir plusieurs produits de plusieurs clients.

Normaliser cette relation

Solution

1. Commande en 3NF ?
1.1. Commande en 2NF ?
1.1.1.Commande en 1NF ? Oui car la clé est (Nºcmd, Nºcl, Nºprod)
1.1.2. Dépendances totales ?
(1) Nºcmd, Nºcl, Nºprod → nom-cl non car Nºcl → nom-cl (1.1)
(2) Nºcmd, Nºcl, Nºprod → date-cmd non car Nºcmd → date-cmd (2.1)
(3) Nºcmd, Nºcl, Nºprod → adr-liv non car Nºcmd, Nºcl→ adr-liv (3.1)
(4) Nºcmd, Nºcl, Nºprod → Nºrep non car Nºcl → Nºrep (4.1)
(5) Nºcmd, Nºcl, Nºprod → nom-rep non car Nºcl → nom-rep (5.1)
(6) Nºcmd, Nºcl, Nºprod → nom-prod non car Nºprod → nom-prod (6.1)
(7) Nºcmd, Nºcl, Nºprod → qté-cmd non car Nºcmd, Nºprod → qté-cmd (7.1)
(8) Nºcmd, Nºcl, Nºprod → qtéstock non car Nºprod → qtéstock (8.1)

Donc la relation Commande n’est pas en 2NF : Il faut la décomposer.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 40

(2.1) : Nºcmd → date-cmd


(1.1)+(4.1)+(5.1) : Nºcl → nom-cl, Nºrep, nom-rep
(6.1)+(8.1) : Nºprod → nom-prod, qtéstock
(7.1) : Nºcmd, Nºprod → qté-cmd
(3.1) : Nºcmd, Nºcl→ adr-liv

On obtient les 5 sous-relations suivantes :

R1 (Nºcmd, date-cmd)
R2 (Nºcl, nom-cl, Nºrep, nom-rep) en 2NF
R3 (Nºprod, nom-prod, qtéstock)
R4 (Nºcmd, Nºprod, qté-cmd)
R5 (Nºcmd, Nºcl, adr-liv)

2. R1 en 3NF ?
2.1. R1 en 2NF oui
2.2. Dépendances directes ?
Nºcmd → date-cmd oui

R1 EST EN 3NF

3. R2 en 3NF ?
3.1. R2 en 2NF ? oui
3.2. Dépendances directes
(1) Nºcl → nom-cl oui
(2) Nºcl → Nºrep oui
(3) Nºcl → nom-rep non car Nºcl → Nºrep (3.1) et Nºrep → nom-rep (3.2)

Donc R2 n’est pas en 3NF : il faut la décomposer.

(1)+(2) : Nºcl → nom-cl, Nºrep


(3.2) : Nºrep → nom-rep
On obtient 2 sous-relations de R2 :
R21 (Nºcl, nom-cl, Nºrep)
R22 (Nºrep, nom-rep) en 3NF

4. R3 en 3NF ?
4.1. R3 en 2NF ? oui
4.2. Dépendances directes
(1) NºPROD → NOM-PROD OUI
(2) Nºprod → qtéstock oui

R3 est en 3NF

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 41

5. R4 en 3NF ?
5.1. R4 en 2 NF ? oui
5.2. Dépendances directes ?
Nºcmd, Nºcl, Nºprod → qté-cmd oui
R4 est en 3NF

6. R5 en 3NF ?
6.1. R5 en 2 NF ?
6.2. Dépendances directes ?
Nºcmd, Nºcl → adr-liv oui

R5 est en 3NF

D’où le schéma normalisé :


R1 (Nºcmd, date-cmd) = Commande
R21 (Nºcl, nom-cl, Nºrep) = Client
R22 (Nºrep, nom-rep) = Représentant
R3 (Nºprod, nom-prod, qtéstock) = Produit
R4 (Nºcmd, Nºprod, qté-cmd) = Quantité commandée
R5 (Nºcmd, Nºcl, adr-liv) = Livraison

Le schéma normalisé peut être représenté comme suit :

Commande Quantité C Produit


Nºcmd Nºcmd Nºprod
date-cmd Nºprod nom-prod
qté-cmd qtéstock

Livraison Client Représentant


Nºcmd Nºcl Nºrep
Nºcl nom-cl nom-rep
adr-liv Nºrep

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 42

Exercice nº4

On considère le schéma relationnel suivant R (A,B,C,D,E,F,G,H,I,J) et l’ensemble des


dépendances suivantes :
D = {A → C ; AB → CG ; AB → DE ; DE → F ; H → I ; H → J}
a) Quelle est la clé de R ?
b) Quelle est la forme normale de R ?

Exercice nº5.

Soit la relation suivante :

Employé (numemp, nomemp, codefct, numdpt, nomdpt, numproj, nomproj, durée)

Règles de gestion
- un projet implique plusieurs employés et plusieurs départements
- un employé peut être rattaché à un plusieurs projets
- un employé a une seule fonction
- un employé est rattaché à un seul département
- Durée = durée passée par un employé sur un projet.

Normaliser cette relation

Exercice nº6.

Soit le schéma relationnel suivant :

Employé (matemp, nomemp, salemp, numserv, chefserv)


Usage (numserv, nompiece, qteu, nomfourn, qtéfourn)
Projet (numproj, numserv, nompièce, qteproj)

Règles de gestion
- un employé est rattaché à un seul service
- un projet peut être réalisé par plusieurs services
- une pièce peut être utilisée dans plusieurs projets
- dans un service, on peut exécuter plusieurs projets
- un fournisseur peut fournir plusieurs pièces
- une pièce peut être fournie par plusieurs fournisseurs
- qteu = quantité utilisée dans un service
- qteproj = quantité utilisée dans un projet et dans un service.

Normaliser ce schéma

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 43

II.8. Critiques du modèle relationnel

Les SGBD relationnels ont à leur avantage les points suivants :

- le modèle de données est très simple et donc facile à comprendre pour les utilisateurs;
- le modèle repose sur une base formellement définie; ce qui a permis de définir des
méthodes de conception de schémas (théorie de la normalisation) et des langages de
manipulation de données (LMD) déclaratifs et standardisés (SQL, QUEL...).

Le modèle relationnel est complètement adapté aux applications de gestion


grâce à son système de modélisation formé de tables dont les colonnes prennent des
valeurs alphanumériques. Les concepts du modèle relationnel (tables, enregistrements,
relations, champs, etc.) sont simples et aisément compréhensibles par n'importe qui. De
plus, la longue expérience dont bénéficient maintenant les SGBD relationnels a permis
de les optimiser et donc de les rendre très performants.
Un autre point fort du modèle relationnel est l'existence de SQL, un langage
standardisé de création et de manipulation des bases de données. Le langage SQL est
bien adapté aux architectures client-serveur, il intègre la gestion des transactions,
indispensable lors d'accès concurrents aux données ainsi que pour leur sécurité.

Cependant de nouvelles applications, différentes des applications de gestion


classiques et qui ont de nouveaux besoins, se multiplient. Ce sont, par exemple, la
conception ou production assistée par ordinateur, le génie logiciel, la bureautique, la
recherche d’informations sur la toile, les systèmes d’informations géographiques, etc.
qui manipulent des objets plus complexes et plus volumineux, comme les textes,
graphiques, cartes, images, dessins multidimensionnels, vidéos, sons… De plus le coût
des mémoires secondaires continuant à baisser, les applications classiques de gestion
évoluent et veulent aussi manipuler des informations géographiques et des images. Par
exemple en géomarketing il faut tenir compte de la localisation des clients actuels et
potentiels ainsi que de celle des entrepôts et des points de vente. Autre exemple, les
compagnies d'assurance veulent conserver les croquis, les photographies et la
localisation géographique des accidents routiers qu'elles couvrent.

Ces applications ont révélé les limites du modèle relationnel, notamment:


• le modèle de données est trop simple et ne permet pas de représenter facilement les
entités du monde réel qui sont souvent plus complexes qu' une relation. Dans les
bases de données relationnelles, les entités du monde réel sont éclatées en plusieurs
relations, ce qui multiplie les jointures dans les requêtes des utilisateurs et fait que
les performances des SGBD relationnels pour ces applications sont mauvaises.
• l'incompatibilité des LMD relationnels et des langages de programmation:
• les LMD sont déclaratifs et fournissent en résultat un ensemble de tuples,
alors que les langages de programmation sont impératifs et travaillent sur un élément
à la fois;

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 44

• les types de données manipulés par les langages de programmation sont plus variés
et peuvent être plus complexes que les domaines de valeurs des LMD relationnels.
• le développement d'applications n'est pas satisfaisant: lenteur du développement,
résultat souvent décevant (ne correspond pas ou mal aux besoins), applications
difficilement maintenables.

Cependant malgré tous ces griefs formulés à son endroit, le modèle relationnel
n’a pas pu être détrôné comme outil d’approche base de données et demeure encore à
ce jour le modèle le plus utilisé dans la construction des bases de données à travers le
monde.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 45

Chap III : L’ALGEBRE RELATIONNELLE ET LE SQL

Nous avons vu précédemment que pour qu’un ensemble de données soit


considéré comme une base de données, il faut que son contenu soit interrogeable. Et
pour interroger la base de données, il faut composer une requête grâce au Langage de
Manipulation de Données.
La requête est donc l’ensemble d’opérations algébriques mises dans un certain ordre et
respectant une syntaxe en vue d’extraire de la BD les informations désirées.
Elle peut être exprimée grâce à l’algèbre relationnelle et au SQL.

III.1. Algèbre relationnelle


L’algèbre relationnelle a été inventée par E.Codd comme une collection
d’opérations formelles sur les relations. Elle se compose d'un ensemble d'opérateurs
opérant sur des relations et produisant de nouvelles relations. Il est donc possible de
construire de nouvelles informations à partir des relations de départ et d'une
composition séquentielle d'opérateurs.
L’algèbre relationnelle est donc un outil qui permet d’interroger la base de données
relationnelle.
De nombreux opérateurs relationnels ont été proposés, on peut cependant présenter ici
les plus courants

III.1.1.Opérations ensemblistes

1. L’UNION
L’union de deux relations R et S de même schéma est une relation T de même
schéma contenant les tuples appartenant à R ou à S ou aux deux relations.

Soient deux relations R et S de même degré et de même domaine.

R = ESIS S = ESIS

Mat Nom Prénom Mat Nom Prénom


001 NKULU Alain 100 ZOZO Jean
002 ILUNGA Paul 110 KOSI Chris
003 YAV Marcel 120 KABILA Ian
130 NGOIE Yves 130 NGOIE Yves

Alors on aura :

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 46

T=RUS

Mat Nom Prénom


001 NKULU Alain
002 ILUNGA Paul
003 YAV Marcel
130 NGOIE Yves
100 ZOZO Jean
110 KOSI Chris
120 KABILA Ian

2. LA DIFFERENCE
La différence de deux relations R et S de même schéma est une relation T de
même schéma contenant les tuples appartenant à R et n’appartenant pas à S.

Ex : cfr exemple précédent

T=R\S

Mat Nom Prénom


001 NKULU Alain
002 ILUNGA Paul
003 YAV Marcel

3. L’ INTERSECTION
L’intersection de deux relations R et S de même schéma R et S est une relation
T de même schéma contenant les tuples appartenant à la fois à R et S.

Ex : cfr même exemple précédent

T=R∩S

Mat Nom Prénom


130 NGOIE Yves

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 47

4. LE PRODUIT CARTESIEN
Le produit cartésien de deux relations de schéma quelconque R et S est une
relation ayant pour attributs la concaténation de ceux de R et S et dont les tuples sont
toutes les concaténations d’un tuple de R à un tuple de S.

Ex : R = Employé S = Département

Mat Nom Prénom N°dpt Nom-dpt


001 KAZADI Albert D1 Commercial
002 META Marie D2 Production
003 KABILA Joseph

T=RXS

Mat Nom Prénom Nºdpt Nom-dpt


001 KAZADI Albert D1 Commercial
001 KAZADI Albert D2 Production
002 META Marie D1 Commercial
002 META Marie D2 Production
003 KABILA Joseph D1 Commercial
003 KABILA Joseph D2 Production

III.1.2. Opérations relationnelles non ensemblistes


Ce sont celles qui modifient la structure des relations.

1. LA PROJECTION
La projection d’une relation de schéma R(A1, A2, …, An) sur les attributs Ai1,
Ai2, …, Aip ( avec ii ≠ik et p<n ) est une relation R’ de schéma (Ai1, Ai2, …, Aip) dont
les tuples sont obtenus par élimination des valeurs des attributs de R n’appartenant pas
à R’ et par suppression des tuples en double.
En d’autres termes, la projection a pour but de réduire le degré d’une relation.

Soit la relation R (A, B, C)

R[A, B] est la projection de R sur les attributs A et B. D’ où la relation S(A, B)

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 48

Ex : Soit R=G1ESIS

Mat Nom Prénom Adresse


001 MUT PIE LSI
002 ILU JO KHI
003 MAKI PAUL BXL
004 ILU PAUL KHI

S = G1ESIS [ Mat, Nom, Adresse ] ; d’ où G1ESIS ( Mat, Nom, Adresse)

Mat Nom Adresse


001 MUT LSI

002 ILU KHI

003 MAKI BXL

004 ILU KHI

2. LA SELECTION
La sélection ( ou encore la restriction ) d’une relation R par une qualification Q
est une relation R’ de même schéma dont les tuples sont ceux de R satisfaisant la
qualification Q.
En d’autres termes, c’est une réduction de la cardinalité ( nombre de tuples ) d’une
relation selon un critère de sélection sur un ou plusieurs attributs.

Syntaxe : S = R : critère de sélection

Ex. S = G1ESIS : Adresse = ‘KHI’ et Mat ≤ 002

Mat Nom Prénom Adresse


001 MUT PIE KHI
002 ILU PAUL KHI

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 49

3. LA JOINTURE ou LA COMPOSITION

La jointure de deux relations R et S selon une qualification multi - attributs Q


est l’ensemble des tuples du produit cartésien RXS satisfaisant la qualification Q.
C’est le rapprochement de deux relations par l’intermédiaire d’un ou de plusieurs
communs. C’est encore un produit cartésien combiné avec une sélection en passant par
des domaines communs.

Notation : R(A)*S(A) où A est le domaine commun ou encore le Pivot.

Pour rappel, le pivot doit avoir la même valeur dans les deux relations.

Ex :

ESIS LECTEUR
Mat Nom Prénom Adresse Mat Livre
001 LENGE Pie LKI 002 L01
002 META Régine KHI 003 S34
003 KAPIA Francis BXL
004 MBANZA Médias LSHI

R = ESIS ( Mat ) * LECTEUR ( Mat )

ESIS.Mat ESIS.Nom ESIS.Prénom ESIS.Adresse LECTEUR.Livre

002 META Régine KHI L01

003 KAPIA Francis BXL S34

III.1.3. Exercices d’application

Exercice n°1
Soient les relations EMPLOYE ( Mat-emp, Nom-emp, Sal-emp, Nºdpt)
DPT ( Nºdpt, nom-dpt, niveau, chef-dpt)
On demande de traduire en langage algébrique les requêtes suivantes :
1. la liste des noms et des salaires des employés dont le salaire est supérieur à 200$
2. la liste des noms des employés travaillant au département ‘Exploitation’
3. la liste des noms des employés travaillant au 3ème niveau
4. les noms des employés dont le chef de département s’appelle « Konde »

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 50

Exercice n°2
Soit le modèle de données décrit à l’aide des relations suivantes :
Produit ( codeprod, libelleprod, qtestock, prixunit )
Client ( numclient, nomclient,adresseclient, solde )
Commande ( numcmd, datecmd, numclient )
LigneCommande ( numcmd, codeprod, qtecmd )

Requêtes :
1. Afficher les codes et noms des produits commandés par le client « Jean »
2. Afficher les noms des clients qui ont commandé le produit « Dasani »
3. Afficher la liste de tous les produits commandés en juin 2007 et dont le stock est
supérieur à 100
4. Afficher la liste des noms des produits commandés en quantité supérieure au
stock
5. Afficher les noms de tous les clients débiteurs
6. les codes et noms des produits dont les prix n’excèdent pas 100$
7. les noms et adresses des clients ayant effectué des commandes en 2007
8. les codes et noms des produits à stock nul au 31 décembre 2007

III.2. Langage SQL


Le langage SQL ( Structured Query Language, en français langage structuré
des requêtes ) est perçu comme une expression agréable et complète de séquences
d’opérations relationnelles pour interroger une base de données.
C’est un langage non procédural utilisé pour consulter une BD.

Jusqu'à présent, nous avons vu comment créer une requête en utilisant les
opérations de l’algèbre relationnelle. Il existe aussi une autre façon de faire les requêtes:
en passant directement par le langage SQL. D'ailleurs, ACCESS utilise aussi ce langage
pour faire ses requêtes, il traduit ce que vous avez entré en SQL, puis exécute la requête
SQL.

SQL est un langage de manipulation de bases de données mis au point dans les
années 70 par IBM. Il permet, pour résumer, trois types de manipulations sur les bases
de données :
∗ La maintenance des tables : création, suppression, modification de la structure des
tables.
∗ Les manipulations des bases de données : Sélection, modification, suppression
d'enregistrements.
∗ La gestion des droits d'accès aux tables : Contrôle des données : droits d'accès,
validation des modifications.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 51

L'intérêt de SQL est que c'est un langage de manipulation de bases de données


standard, vous pourrez l'utiliser sur n'importe quelle base de données, même si, a priori,
vous ne connaissez pas son utilisation. Ainsi, avec SQL, vous pouvez gérer une base de
données Access, mais aussi Paradox, dBase, SQL Server, Oracle ou Informix par
exemple (les bases de données les plus utilisées).

Attention : Le langage SQL a souvent été implémenté de façon différente. Les


commandes de base sont toujours les mêmes mais ont parfois des variantes ou des
extensions. La version de SQL implémentée dans Access peut parfois être un peu
différente de la version ANSI qui est la version standardisée.

III.2.1. La maintenance des bases de données

La première série de commandes sert à la maintenance de la base de données :


création des tables et des indexes, modification de la structure d'une table ou
suppression d'une table ou d'un index.

Attention : La maintenance des bases de données dépend étroitement de la base de


données utilisée, notamment en ce qui concerne les types de données, vérifiez donc
toujours les types de données supportés par votre SGBD avant de créer une table avec
SQL. Il se peut qu'il en supporte plus que ceux indiqués plus bas.

SQL dispose pour cela des instructions suivantes :

ALTER TABLE
CREATE TABLE
CREATE INDEX

1. La commande CREATE TABLE

La commande CREATE TABLE permet de créer une table dans la base de données
courante.

Sa syntaxe est la suivante

CREATE TABLE table


(champ type CONSTRAINT champ propriétés, ... );

DFDSDQSQSQSQSQSQZQ********************/****

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 52

Paramètre Signification
Champ Nom du champ
Type Type de données, dans la plupart des versions de SQL, vous aurez
droit aux types de données suivants :

Char(x) : chaîne de caractères, x est le nombre maximum de


caractères autorisés dans le champ.

Integer : Nombre entier, positif ou négatif

Decimal (x,y) : Nombre décimal, x est le nombre maximum


de chiffres et y le nombre maximum de chiffres après la virgule.
Decimal ne fonctionne pas avec Access, il ne supporte que le type
'float' (flottant), le type float ne permet pas d'indiquer le nombre de
chiffres après ou avant la virgule

Date : Une date et/ou heure

Logical – Deux valeurs possibles : oui / non

Propriétés Propriétés du champ :

NULL ou NOT NULL : autorise ou non que le champ puisse être


vide.

UNIQUE : indique que deux enregistrements ne pourront avoir la


même valeur dans ce champ.

PRIMARY KEY : indique que ce champ est la clef primaire

Paramètre Signification
Exemple : Créer la nouvelle table "table_test" contenant deux champs : un champ avec
un entier qui doit toujours être saisi et un champ contenant une chaîne de 5 caractères :

CREATE TABLE table_test (champ1 integer CONSTRAINT champ1


NOT NULL, champ2 char(5));

2. La commande ALTER TABLE

La commande ALTER TABLE permet de modifier la structure d'une table, sa syntaxe


est la suivante :

ALTER TABLE table


Action (spécifications du champ);

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 53

ALTER TABLE permet trois actions, ces actions sont :


ADD Ajoute un champ a une table
DROP Supprime un champ d'une table
MODIFY Modifie les caractéristiques d'un champ

Après l'action, on indique, entre parenthèses, les spécifications du champ de la même


façon que pour la commande CREATE TABLE. On ne peut faire qu'une action à la fois
(ajout, suppression ou modification dans la même commande).

Exemples :
Ajout d'un champ Date : ALTER TABLE table_test ADD champ3 Date;
Suppression du champ2 : ALTER TABLE table_test DROP champ2;

3. La commande CREATE INDEX

La commande CREATE INDEX permet de créer un index sur une table, sa


syntaxe est :

CREATE UNIQUE INDEX nom_index


ON table (liste de champs);

Nom_index est le nom de l'index, table est le nom de la table.

Nous savons qu'un index peut être composé d'un ou de plusieurs champs, la liste de ces
champs est indiquée entre parenthèses après le nom de la table.
Enfin, la clause UNIQUE indique à SQL si l'index créé va être unique ou s'il peut
contenir plusieurs fois la même valeur dans la table. S'il peut contenir plusieurs fois la
même valeur, il ne faudra pas ajouter la clause UNIQUE.

Exemple : création d'un index sur le champ1

ALTER TABLE table_test ADD champ3 Date;


ALTER TABLE table_test DROP champ2;
CREATE UNIQUE INDEX index1 ON table_test (champ1);

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 54

III.2.2. Les manipulations des bases de données


Une fois les tables créées, on peut commencer à y insérer des données, les
mettre à jour, les supprimer ou y faire des requêtes. Toutes ces opérations sont des
opérations de manipulation des bases de données.

Pour effectuer ces manipulations, SQL dispose de 5 instructions :


INSERT
UPDATE
DELETE
SELECT
CREATE VIEW (non utilisé dans Access)

1. La commande INSERT
1.1 Présentation et syntaxe
La commande INSERT est utilisée pour ajouter des enregistrements ou des
parties d'enregistrements dans des tables. Elle est utilisée généralement sous deux
formes :

1ère forme
INSERT
INTO table (champ1,champ2,...)
VALUES ('valeur1','valeur2',...);
Cette forme est utilisée lorsqu'on veut insérer un seul enregistrement ou une partie d'un
seul enregistrement. On créera un nouvel enregistrement dont le contenu du champ1
sera valeur1, le contenu du champ2 sera valeur2, etc...

2ème forme
INSERT
INTO table (champ1,champ2,...)
(requête);
Dans cette seconde forme, le résultat de la requête va être inséré dans les champs
indiqués de la table.
Cette méthode est utilisée lorsque plusieurs enregistrements sont ajoutés
simultanément. Dans les deux cas, les valeurs insérées doivent correspondre au type de
données du champ dans lequel l'insertion va être faite, on ne peut pas, par exemple
demander l'insertion d'une chaîne de caractères dans un champ de type numérique ou
monétaire. Les chaînes de caractères doivent être placées entre apostrophes ( ' ), les
champs numériques ou vides (NULL) ne doivent pas être placés entre apostrophes.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 55

1.2 Insérer tout ou une partie d'un enregistrement


Si des valeurs doivent être insérées dans tous les champs de l'enregistrement de
la table, la liste des noms des champs n'a pas besoin d'être explicitement indiquée dans
la commande. Les valeurs des champs à insérer doivent cependant apparaître dans le
même ordre que les noms des champs lors de la création de la table, sans oublier un
seul champ.
Faites attention en utilisant cette syntaxe, si la structure de la table change plus tard, la
commande qui était bonne risque de ne plus fonctionner correctement. Il vaut mieux
toujours indiquer explicitement le nom des champs sur lesquels on veut agir.
La syntaxe est alors :
INSERT
INTO table
VALUES ('valeur1','valeur2','valeur3',...);
Par exemple, dans notre table Client, si nous voulons insérer un nouveau client, nous
allons entrer :

INSERT
INTO Clients
VALUES (100,'Mr','Dupond','Jean','rue de la paix',’75000’,
,'Paris',NULL);

La commande ci-dessus va insérer un enregistrement dans la table 'clients' avec les


informations suivantes : Le client 100, dont le titre est 'M.', dont le nom est 'Dupond',
dont le prénom est 'Jean', l'adresse est 'Rue de la paix', le code postal est 75000 et la
ville est 'Paris'.

Notez que le numéro de client, qui est un champ de type 'NuméroAuto' a été indiqué
explicitement. Lors d'une création d'un enregistrement avec une commande SQL, le
numéro automatique n'est pas toujours généré automatiquement, vérifiez les
possibilités offertes par votre SGBD.
Notez aussi l'utilisation de NULL : Si on insère moins de valeurs de champ qu'il y a de
champs dans la table, soit on écrit explicitement le nom des champs à insérer, soit on
insère la valeur NULL dans le champ où il n'y a rien à mettre, à condition que la
propriété du champ "NULL interdit" soit à NON, sinon, il y aura une erreur lors de la
création de l'enregistrement.
La syntaxe est :
INSERT
INTO table (champ1, champ3)
VALUES ('valeur1','valeur 3');
Ou
INSERT
INTO table
VALUES ('valeur1',NULL,'valeur3');
Dans notre exemple, le champ 'Observations' à sa propriété "NULL interdit" à NON,
on n'est donc pas obligé de saisir des observations, ce qui est le cas ici, on entre donc
NULL, ce qui signifie à Access que le champ est vide.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 56

1.3. Insérer plusieurs enregistrements ou parties d'enregistrements


On peut insérer simultanément plusieurs enregistrements ou parties
d'enregistrements dans une table. Dans ce cas, les données insérées vont être récupérées
dans une ou plusieurs autres tables.

Par exemple, si nous voulons placer dans une table nommée "Clients_lbb" les clients
habitant Lubumbashi, nous allons procéder ainsi :
1) Créer une table "Clients_lbb" avec Access, nous allons supposer que cette table
comporte 3 champs: le nom, le prénom et l'adresse.
2) Taper la commande :
INSERT
INTO Clients_lbb(nom,prenom,adresse)
(SELECT nom,prenom,adresse
FROM Clients
WHERE ville='Lubumbashi')
La partie entre ( ) est une requête SQL, nous verrons cela en détail plus bas, elle va
sélectionner les champs nom, prénom et adresse de la table Client pour les
enregistrements dont la ville est "Lubumbashi". Le résultat de cette requête va être
inséré dans la table Clients_lbb.
La commande INSERT INTO avec requête ne déplace pas les enregistrements de la
table "Clients" vers la table "Clients_lbb", elle se contente de faire une copie. Pour
effacer les enregistrements de la table Clients, nous utiliserons la commande DELETE.

2. La commande UPDATE
La commande UPDATE est utilisée pour changer des valeurs dans des champs
d'une table. Sa syntaxe est :

UPDATE table
SET champ1 = nouvelle_valeur1,
champ2 = nouvelle_valeur2,
champ3 = nouvelle_valeur3
WHERE condition;

La clause SET indique quels champs de la table vont être mis à jour et avec quelles
valeurs ils vont l'être. Les champs non spécifiés après la clause SET ne seront pas
modifiés.

Par exemple, si nous voulons, dans la table produit, modifier le prix d'un produit dont le
nom est "prod1", nous taperons :
UPDATE produits
SET prix_unitaire = 1000
WHERE libelle = 'prod1';

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 57

La commande UPDATE affecte tous les enregistrements qui répondent à la condition


donnée dans la clause WHERE. Si la clause WHERE est absente, tous les
enregistrements de la table seront affectés.

Par exemple, si nous tapons :


UPDATE produits
SET prix_unitaire = 1000;
Le prix unitaire de tous les produits de la table produit va être modifié.

Tout comme la commande INSERT, la commande UPDATE peut contenir une


requête.
Dans ce cas la syntaxe est la suivante :

UPDATE table
SET champ1 = nouvelle_valeur1,
champ2 = nouvelle_valeur2,
champ3 = nouvelle_valeur3
WHERE condition =
(requête);
La requête est une requête faite avec la commande SELECT.

3. La commande DELETE
Pour supprimer des enregistrements d'une table, utilisez la commande
DELETE. La syntaxe est la suivante :
DELETE
FROM table
WHERE condition;
On ne peut pas supprimer seulement le contenu de quelques champs des
enregistrements. La commande DELETE supprime des enregistrements entiers, c'est
pour cela qu'il n'est pas nécessaire d'indiquer ici des noms de champs. La condition
spécifiée après WHERE va déterminer quels sont les enregistrements à supprimer.
Par exemple, pour supprimer tous les clients dont la ville est Lubumbashi :
DELETE
FROM Clients
WHERE ville='Lubumbashi';
Pour supprimer tous les enregistrements d'une table, n'indiquez pas de clause
WHERE :
DELETE FROM table;

Cette variante de la commande DELETE ne supprime pas la table, elle supprime


seulement les enregistrements contenus dans cette table et laisse une table vide.
On peut aussi, comme précédemment utiliser une requête qui servira à déterminer la
condition de la suppression. La syntaxe est la suivante :

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 58

DELETE
FROM table
WHERE condition =
( requête );

4. La commande SELECT
4.1 Présentation & Syntaxe
La commande SELECT est la commande la plus complexe de SQL. Cette commande
va servir à faire des requêtes pour récupérer des données dans les tables. Elle peut être
associée à une des commandes de manipulation de tables vues avant pour spécifier une
condition.
Sa syntaxe est :
SELECT champ1, champ2, champ3, ...
FROM table;
S'il y a plus d'un champ spécifié après SELECT, les champs doivent être séparés par
des virgules.
Les champs sont retournés dans l'ordre spécifié après la clause SELECT, et non pas
dans l'ordre qu'ils ont été créés dans la table.
Par exemple :
Pour sélectionner les champs "prénom" et "nom" de tous les enregistrements de la table
Clients :
SELECT prénom,nom
FROM clients
Va renvoyer les prénom et nom de tous les clients de la table Clients.

Si on veut récupérer tous les champs des enregistrements sélectionnés, la syntaxe est la
suivante :

SELECT *
FROM table;

Les clauses SELECT et FROM doivent obligatoirement apparaître au début de chaque


requête, on peut, ensuite, indiquer des critères de sélection avec la clause WHERE :
SELECT *
FROM table
WHERE condition;
Par exemple, pour sélectionner tous les Clients de la table "Clients" dont le code postal
est 75000 :

SELECT *
FROM Clients
WHERE code_postal = 75000;

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 59

4.2. Les opérateurs de condition


On peut utiliser les opérateurs suivants dans les conditions :
O
Opérateur Signification
= Egal
<> Différent (parfois noté aussi != )
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal

Pour sélectionner tous les articles dont le prix est supérieur à 100 F :

SELECT *
FROM Produits
WHERE prix_unitaire > 100;

4.3 Opérateurs logiques


Il est possible de combiner plusieurs conditions avec des opérateurs logiques :
L'opérateur AND réunit deux ou plusieurs conditions et sélectionne un enregistrement
seulement si cet enregistrement satisfait toutes les conditions listées. (C'est-à-dire que
toutes les conditions séparées par AND sont vraies). Par exemple, pour sélectionner
tous les clients nommés 'Ilunga' qui habitent Lubumbashi :

SELECT *
FROM Clients
WHERE nom = 'Ilunga' AND ville = 'Lubumbashi';

L'opérateur OR réunit deux conditions mais sélectionne un enregistrement si une des


conditions listées est satisfaite.

Par exemple, pour sélectionner tous les clients nommés 'Yav' ou 'Kabila' :

SELECT *
FROM Clients
WHERE nom = 'Yav' OR nom = 'Kabila';

AND et OR peuvent être combinés :

SELECT *
FROM Clients
WHERE nom = 'Kabila' AND (ville ='Kinshasa'
OR ville = 'Lubumbashi');

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 60

Nous sélectionnons ici les clients nommés "Kabila" qui habitent soit à Kinshasa,
soit à Lubumbashi.
Pourquoi avons-nous placé des parenthèses ? Pour résumer, on peut dire que l'opérateur
AND a une plus grande priorité que l'opérateur OR. Ce qui signifie que SQL va d'abord
sélectionner les conditions séparées par des AND, puis celles séparées par des OR, si
on avait omis les parenthèses ici, SQL aurait cherché les clients nommés "Kabila"
vivant à Kinshasa ou les clients habitant à Lubumbashi, ce qui n'est pas le but
recherché.

Pour généraliser, mettez toujours des parenthèses pour bien séparer vos conditions.

SELECT *
FROM Clients
WHERE (nom = 'Kabila') AND (ville = 'Kinshasa');

SELECT *
FROM Clients
WHERE (nom = 'Yav') OR (nom = 'Kabila');

SELECT *
FROM Clients
WHERE (nom = 'Kabila') AND (ville = 'Kinshasa'
OR ville = 'Lubumbashi');

4.4. Clauses IN et BETWEEN


Pour sélectionner des enregistrements dont la valeur d'un champ peut être
comprise dans une liste ou entre deux valeurs, on utilise les clauses IN et BETWEEN.
Par exemple : Pour sélectionner les clients vivant à Kinshasa ou Lubumbashi :
SELECT *
FROM Clients
WHERE ville IN (Kinshasa', 'Lubumbashi');

Ou pour sélectionner les produits dont le prix est compris entre 100 et 1000 F :
SELECT *
FROM Produits
WHERE prix_unitaire BETWEEN 100 AND 1000;

Pour sélectionner les produits dont le prix n'est pas dans cet intervalle :

SELECT *
FROM Produits
WHERE prix_unitaire NOT BETWEEN 100 AND 1000;

De la même façon, NOT IN sélectionne les enregistrements exclus de la liste spécifiée


après IN.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 61

Notez que NOT a une priorité plus grande que AND :


NOT Condition1 AND Condition2 sélectionnera les enregistrements ne satisfaisant pas
la condition1 et satisfaisant la condition2, alors que NOT (Condition1 AND
Condition2) sélectionnera les enregistrements ne satisfaisant pas les deux conditions 1
et 2. Une fois de plus, n'hésitez pas à mettre des parenthèses !

4.5. La clause LIKE


La clause LIKE permet de faire des recherches approximatives sur le contenu
d'un champ.
Par exemple, pour sélectionner les clients dont le nom commence par la lettre D :
SELECT *
FROM Clients
WHERE nom LIKE 'S*';
Tout comme dans les requêtes Access, le symbole * remplace un ensemble de
caractères. Pour représenter tous les noms commençant par S, on utilisera 'S*', tous
ceux se terminant par S, on utilisera '*S', et tous ceux comportant la lettre S : '*S*'.
Le symbole ? ne remplace qu'un seul caractère. Si on a deux clients nommés Dupond et
Dupont, on utilisera 'Dupon?'.

Attention : certaines versions de SQL n'utilisent pas les caractères * et ? mais d'autres
caractères spécifiques, certaines versions utilisent notamment le caractère % à la place
de *. Consultez donc la documentation de votre SGBD.

4.6. Les jointures


La jointure va nous permettre de sélectionner des informations dans plusieurs
tables grâce aux relations existant entre ces tables. Il va néanmoins falloir indiquer
comment se fait la relation entre ces tables.
Par exemple : récupérer le nom et le prénom du client ayant passé la commande n°1 :
SELECT nom, prénom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client
AND num_commande = 1;

La clause WHERE indique que le numéro de commande doit être égal à 1 et que la
jointure va se faire sur le numéro de client : une fois que SQL va trouver la commande
n° 1 dans la table commande, il va prendre le numéro de client contenu dans
l'enregistrement et avec ce numéro, aller chercher dans la table Clients le nom et le
prénom correspondants à ce numéro.

Notez que lorsqu'on utilise plusieurs tables, il faut faire attention que deux tables
n'aient pas de champs ayant le même nom, si c'est le cas, et pour les différencier, on
utilise, comme dans l'exemple, la notation: table.nom_du_champ. Si on est sur que le
nom ne se retrouvera pas dans plusieurs tables, on peut l'utiliser sans le préfixer avec
le nom de la table.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 62

4.7. Supprimer les doubles avec DISTINCT


Supposons que nous voulions la liste des clients ayant acheté quelque chose.
Nous voulons que chaque client ayant acheté quelque chose ne soit affiché qu'une seule
fois – nous ne voulons pas savoir ce qu'a acheté chaque client – nous voulons juste
connaître les clients qui ont acheté quelque chose. Pour cela, nous allons devoir dire à
SQL de supprimer les doubles du résultat de la sélection pour n'afficher les clients
qu'une seule fois. Pour cela, nous allons utiliser la clause DISTINCT.

Nous allons d'abord faire une jointure entre les tables Clients et Commande, et
ajouter la clause DISTINCT sur le champ où la répétition peut se produire :

SELECT Client.num_client,nom, prénom


FROM Clients, Commande
WHERE Commande.num_client = Client.num_client;

Si on exécute cette requête directement, SQL va nous renvoyer une liste des numéros,
prénom et nom correspondants aux noms et prénoms des clients ayant passé chaque
commande, il est clair qu'un client ayant passé plusieurs commandes va se retrouver
plusieurs fois dans cette liste.

SELECT DISTINCT Clients.numclient,nom, prénom


FROM Clients, Commande
WHERE Commande.num_client = Client.num_client
AND num_commande = 1;

En indiquant la clause DISTINCT avant le champ num_client, on indique à SQL qu'on


ne veut pas voir apparaître plusieurs fois un client ayant ce numéro dans la sélection
renvoyée.

On peut même rendre le résultat de la sélection plus agréable à la lecture en utilisant la


clause ORDER BY :

SELECT nom, prénom


FROM Clients, Commande
WHERE Commande.num_client = Client.num_client
AND num_commande = 1
ORDER BY nom, prénom;

La sélection renvoyée va être classée alphabétiquement d'abord sur le nom, puis sur le
prénom.

On peut aussi ajouter les clauses ASC et DESC pour spécifier si le tri est croissant ou
décroissant.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 63

4.8. Les fonctions d'ensemble


SQL a cinq fonctions importantes : SUM, AVG, MAX, MIN et COUNT. On
les appelle fonctions d'ensemble parce qu'elles résument le résultat d'une requête plutôt
que de renvoyer une liste d'enregistrements.
Fonction Signification
SUM () donne le total d'un champ de tous les enregistrements satisfaisant la condition
de la requête. Le champ doit bien sur être de type numérique
AVG () donne la moyenne d'un champ de tous les enregistrements satisfaisant la
condition de la requête
MAX () donne la valeur la plus élevée d'un champ de tous les enregistrements
satisfaisant la condition de la requête
MIN () donne la valeur la plus petite d'un champ de tous les enregistrements
satisfaisant la condition de la requête.
COUNT (*) renvoie le nombre d'enregistrements satisfaisant la requête.

Exemples :

SELECT
MIN(prix_unitaire),MAX(prix_unitaire),AVG(prix_unitaire)
Va retourner le prix le plus petit de la table Produit, le prix le plus élevé et le prix
moyen.

SELECT COUNT (*)


FROM Produits
WHERE libelle LIKE 'P*';
Va retourner le nombre de produits dont le libellé commence par la lettre 'P'.

4.9. La clause GROUP BY


Une des utilisations les plus courantes de la clause GROUP BY est son
association avec une fonction d'ensemble (le plus souvent COUNT, pour compter le
nombre d'enregistrements dans chaque groupe).
Par exemple, si nous voulons la liste des vendeurs, avec pour chaque vendeur le
nombre de ventes qu'il a fait :

SELECT num_vendeur,COUNT (*)


FROM Commandes
GROUP BY num_vendeur;

On peut ajouter une condition à la requête, par exemple, la liste des vendeurs avec leur
nombre de vente pour le mois de janvier. On utilisera pour cela la clause HAVING :
SELECT num_vendeur,COUNT (*)
FROM Commandes
GROUP BY num_vendeur
HAVING mois(date)=1;

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 64

4.10. Les sous-requêtes


On peut imbriquer autant de requêtes que l'on veut. La condition après la clause
WHERE peut porter sur le résultat d'une autre requête (ou sous-requête).
Supposons les tables suivantes :

Vente Acheteur
Num_acheteur Num_acheteur
Num_produit Nom
Prix
Prénom

La table « Vente » contient, pour chaque acheteur, le produit qu'il a acheté et le prix
d'achat.
Nous voulons la liste des acheteurs ayant acheté des articles chers. Nous considérerons
qu'un article cher est un article dont le prix est supérieur à la moyenne du prix des
produits achetés + 100 francs.

SELECT Num_acheteur
FROM Vente
WHERE prix >
( SELECT AVG (prix) + 100
FROM Vente);
Vous pouvez constater que condition de la requête est basée sur le résultat d'une autre
requête. Dans cet exemple, à chaque fois qu'un acheteur aura acheté un article cher, son
numéro apparaîtra. Pour éviter cela, on utilise la clause DISTINCT num_acheteur pour
éliminer les doubles.

Autre exemple avec ces deux tables : nous savons qu'il y a une erreur sur l'orthographe
du nom de l'acheteur du produit n° 1, il devrait s'appeler 'DAN' :

UPDATE Acheteurs
SET nom = 'Dan'
WHERE num_acheteur =
(SELECT num_acheteur
FROM Ventes
WHERE num_article = 1);

N'oubliez pas cette règle à propos des sous-requêtes : Lorsque vous faites une sous-
requête dans la clause WHERE, la clause SELECT de cette sous-requête doit avoir
un nombre et des types de champs correspondants à ceux se trouvant après la clause
WHERE de la requête principale. Autrement dit, si vous avez "WHERE champ = (
SELECT ... );", le résultat du SELECT doit être un seul champ puisqu'il n'y a qu'un
seul champ après le WHERE, ET leur type doit correspondre (les deux doivent être
numériques ou être des chaînes de caractères, etc.), sinon, la requête ne renverra rien
ou sortira avec une erreur selon les systèmes.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 65

4.11. Les UNIONS


Lorsqu'on veut que les résultats de plusieurs requêtes soient combinés entre eux,
on utilise la clause UNION. UNION va fusionner les résultats des requêtes.
Par exemple, supposons que nous ayons une table pour les clients habitant Kinshasa
(cette table s'appellera clients_kin) et une table pour les clients habitant Lubumbashi
(clients_lbb). Pour obtenir les numéros des clients des deux tables, on tapera :

SELECT num_client
FROM clients_kin
UNION
SELECT num_client
FROM clients_lbb;
Notez que SQL requiert que le type des champs sélectionnés dans les clauses SELECT
corresponde, colonne par colonne (le premier champ du premier SELECT doit avoir le
même type que le premier champ du deuxième SELECT, etc...). Notez aussi que SQL
supprime automatiquement les doubles lorsque UNION est utilisé, là où il aurait fallu
utiliser la clause DISTINCT pour une requête simple.

III.2.3. Les commandes de contrôle des bases de données


Ces commandes ne seront pas détaillées car elles ne sont pas implémentées (ou qu'en
partie) dans Access, néanmoins, deux d'entre elles sont très souvent utilisées dans
d'autres systèmes : les commandes COMIT et ROLLBACK.
La commande COMIT valide toutes les modifications faites depuis le dernier COMIT, à
partir du moment où la commande COMIT a été entrée, tout ce qui a été fait sur la base
est validé et ne peut plus être modifié. La commande ROLLBACK efface toutes les
modifications qui ont été faites sur la base depuis le dernier COMIT. C'est pour cela
qu'il faut penser à faire un COMIT des modifications régulièrement.

Démarrage de la session
Modifications de la base
de données
COMIT

Modifications validées

Modifications de la base
de données Modifications non
validées, retour au
dernier COMIT
ROLLBACK

Certains systèmes, comme Access, font un COMIT automatique après chaque action,
aucun retour en arrière n'est donc possible.

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 66

III.3. EXERCICES D’APPLICATION

Soit le modèle de données décrit à l’aide des relations suivantes :


Produit ( codeprod, desiprod, qtestock, prixunit )
Client ( numclient, nomclient,adresseclient, solde )
Commande ( numcmd, datecmd, numclient )
LigneCommande ( numcmd, codeprod, qtecmd )

Travail demandé :

1. Ajouter l’attribut « typeprod » de type entier dans la table Produit


2. Remplacer dans la table Produit l’attribut « qtestock » par « stockprod »
3. Trouver les codes et désignations de tous les produits
4. Trouver les numéros et noms des clients à solde créditeur
5. Trouver les noms des produits achetés par « Junior »
6. Afficher les désignations des produits achetés en 2005
7. Afficher la liste alphabétique des noms des produits
8. Trouver la moyenne des prix de tous les articles se terminant par « S » ou « T »
9. Modifier le stock du produit « écran » après la commande de « Julie » effectuée
le 22 février 2008
10. Supprimer les clients dont les soldes sont nuls
11. Afficher les codes et désignations des produits commandés en quantité
supérieure au stock
12. Trouver les commandes effectuées en 2006 ou 2007 par les clients lushois

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 67

BIBLIOGRAPHIE
I. Ouvrages

1. DATE C., An introduction to database systems, Addison Wesley, 1986

2. DELOBEL C. & ADIBA M., Bases de données et systèmes relationnels,


Dunod Informatique, Paris, 1982

3. GARDARIN G., Bases de données : les systèmes et leurs langages, Eyrolles,


Paris, 1988

4. GARDARIN G. & P. VALDURIEZ, Bases de données relationnelles :


. analyse et comparaison des systèmes,
. . Eyrolles, Paris, 1989

5. GARDARIN G., Bases de données : objet et relationnel, Eyrolles, Paris, 1999

6. GARDARIN G., Bases de donnees, Eyrolles, Paris, 2005

7. MATHERON Jean-Patrick, Exercices et cas pour comprendre Merise, Ed.


Eyrolles, Paris, 1994
8. MATHERON Jean-Patrick, Comprendre MERISE, Ed. Eyrolles, Paris, 2000

9. RIGOLLET Pierre, Access 2000, Ed.ENI, 2001

II. Cours

1. BAVWEZA, Cours de compléments d’informatique, ISS / Lubumbashi , année


académique 1999- 2000, inédit

2. Philippe Rigaux, Cours de bases de données, 2004 .

3. Frédéric DI GALLO, Méthodologie des systèmes d’information – MERISE,


CNAM ANGOULEME, 2000 – 2001,

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 68

TABLE DES MATIERES


INTRODUCTION.......................................................................................................... 2
NOTION DE FICHIER .................................................................................................................................4
1. Définition ......................................................................................................................................4
2. Support du fichier........................................................................................................................4
3. Opérations sur les fichiers .........................................................................................................4
4. Organisation du fichier ...............................................................................................................5
CHAPITRE I : CONCEPT DE BASE DE DONNEES .............................................. 9
I.1. DEFINITION D’UNE BASE DE DONNEES .............................................................................................10
I.2. UTILITE D’UNE BASE DE DONNEES ...................................................................................................11
I.3. SGBD .............................................................................................................................................11
I.3.1. Définition...............................................................................................................................12
I.3.2. Historique des SGBD..........................................................................................................12
I.3.3. Objectifs d’un SGBD ...........................................................................................................13
I.3.4. Fonctions d’un SGBD .........................................................................................................14
I.4. ARCHITECTURE FONCTIONNELLE D’UN SGBD ................................................................................16
I.4.1. Niveau interne......................................................................................................................16
I.4.2. Niveau externe.....................................................................................................................16
I.4.3. Niveau conceptuel...............................................................................................................17
I.5. MODELISATION DES DONNEES .........................................................................................................18
I.6. LES MODELES LOGIQUES .................................................................................................................20
I.6.1. Le modèle hiérarchique ......................................................................................................21
I.6.2. Le modèle réseau................................................................................................................21
I.6.3. Le modèle relationnel .........................................................................................................21
I.7. LES ARCHITECTURES OPERATIONNELLES DES SGBD ......................................................................24
I.7.1. Architecture Client-Serveur................................................................................................24
I.7.2. Architecture répartie............................................................................................................25
CHAPITRE II : LE MODELE RELATIONNEL .................................................... 26
II.1. APERÇU HISTORIQUE ......................................................................................................................26
II.2. OBJECTIFS D’UN SGBD..................................................................................................................27
II.3. LES STRUCTURES DE DONNEES DE BASE .........................................................................................27
II.3.1. Le concept d’entité .............................................................................................................28
II.3.2. Entité et instance................................................................................................................28
II.3.4. Le concept d’attribut et de domaine ................................................................................29
II.3.5. Concept d’identifiant ..........................................................................................................29
II.3.6. Association ..........................................................................................................................30
II.3.7. Cardinalités .........................................................................................................................30
II.3.8. Contrainte d’intégrité..........................................................................................................31
II.4. PERCEPTION DU MONDE REEL ........................................................................................................31
II.5. DEPENDANCES FONCTIONNELLES...................................................................................................33
II.5.1. Définition..............................................................................................................................33
II.5.2. Propriétés ............................................................................................................................34
II.5.3. Types de dépendances .....................................................................................................34
a. Dépendance élémentaire (totale) .................................................................................................34
b. Dépendance directe......................................................................................................................34
II.5.4. Fermeture transitive ...........................................................................................................35
II.5.5. Couverture minimale..........................................................................................................35
II.6. NORMALISATION ............................................................................................................................36
II.6.1. Définition..............................................................................................................................36
II.6.2. Formes normales ...............................................................................................................36
a. Première forme normale 1NF .....................................................................................................36
b. Deuxième forme normale 2NF ....................................................................................................36
c. Troisième forme normale 3NF ....................................................................................................37
II.6.3. Relation normalisée ...........................................................................................................38

Patrick KASONGA patkasonga@yahoo.fr


Introduction aux Bases de données, 1er Graduat ESIS 2008 - 2009 69

II.6.4. Avantages de la normalisation .........................................................................................38


II.7. EXERCICES D’APPLICATION ............................................................................................................38
II.8. CRITIQUES DU MODELE RELATIONNEL ...........................................................................................43
CHAP III : L’ALGEBRE RELATIONNELLE ET LE SQL .................................. 45
III.1. Algèbre relationnelle ............................................................................................................45
III.1.1.Opérations ensemblistes...................................................................................................45
III.1.2. Opérations relationnelles non ensemblistes .................................................................47
III.1.3. Exercices d’application.....................................................................................................49
III.2. Langage SQL ........................................................................................................................50
III.2.1. La maintenance des bases de données ........................................................................51
III.2.2. Les manipulations des bases de données ....................................................................54
III.2.3. Les commandes de contrôle des bases de données ..................................................65
III.3. EXERCICES D’APPLICATION.................................................................................................66
BIBLIOGRAPHIE....................................................................................................... 67
TABLE DES MATIERES........................................................................................... 68

Patrick KASONGA patkasonga@yahoo.fr