Académique Documents
Professionnel Documents
Culture Documents
Cours
Par
Dr. Bouziane Abderraouf
SOMMAIRE
Le cours est enrichi des examens et des TD que j’espère permettrons aux
étudiants de mieux assimiler les notions théoriques développées dans ce cours.
Bonne lecture
Abderraouf Bouziane
Partie I :
Bases de données relationnelles
PARTIE I; Bases de données relationnelles Bouziane abderraouf
1. Introduction
Le stockage des données d’une entreprise joue un rôle capital dans son efficacité générale.
Avant l’avènement de l’informatique, les données étaient conservées dans un système
d’archivage manuel (classeurs…). Une organisation a besoin de conserver de larges volumes
de données, en particulier des données historiques.
2. Archivage manuel
Chaque tiroir d’un classeur contient des fichiers dans lesquels sont rangés différents types de
données. Ces fichiers sont généralement classés par ordre alphabétique ou numérique.
Les inconvénients associés aux systèmes d’archivage manuels sont les suivants :
3. Archivage informatisé
Dans un tel système, les informations sont conservées dans un fichier composé d’un ensemble
d’enregistrements (une ligne). Chaque enregistrement est composée de plusieurs champs
(une colonne).
rigides,
contraignantes,
longues et coûteuses à mettre en oeuvre.
2. Incohérences des données : La gestion des liens sémantiques qui existent entre les
données est d'une importance capitale. Par exemple dans la cas de la gestion des
stocks, la quantité réceptionnée d'un article donnée doit être toujours inférieure ou
égale à la quantité commandée. Des incohérences peuvent facilement apparaître si ces
"contraintes d'intégrité" liant les données entre elles ne seraient pas prise en
considération.
3. Problèmes de sécurité : Assurer la sécurité des données est un point très important
aussi. En plus da la sécurité physique de l'information, il faut définir une politique de
reprise après panne (le cas où, par exemple, une panne interrompt un programme
manipulant les données) etc.
4. Dépendance des données : dans un système de fichiers, les données dépendent des
applications qui les utilisent.
6. Partage limité des données : Dans un système de fichiers, chaque application possède
ses propres données enregistrées dans des fichiers séparés, ce qui rend le partage de
données difficiles.
Dans un système de base de données les données sont indépendantes des applications. Elles
peuvent plus facilement (que précédemment) être modifiées et mises à jour, sans demander
aux programmeurs d’effectuer des travaux supplémentaires de maintenance. Il est possible de
réduire la redondance en obligeant les applications à partager les données, au lieu de
conserver chacune sa propre copie.
Définition :
Une base de données est un ensemble de données à la fois intégré et partagé conçu pour
répondre aux besoins de plusieurs utilisateurs dans une entreprise.
a) Données : les données d’une base de données sont à la fois intégrées et partagées.
2
PARTIE I; Bases de données relationnelles Bouziane abderraouf
L’intégration des données indique que la base de données est composée de données
reliées entre elles au lieu de fichiers de données séparés pour chaque application, ce
qui permet d’éviter les redondances.
Comme les données sont partagées, toutes les applications accèdent aux mêmes
données dans la base.
c) Matériel : une base de données peut être exploitée sur un ordinateur conventionnel
(gros sys, mini, pc). Elle peut être aussi exploitée sur un serveur de base de données
dédiée.
Niveau physique :
C'est le niveau le plus bas des données où est géré le stockage et l'accès aux
données.
Niveau logique:
3
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Niveau externe :
Les utilisateurs d'une base de données ont des rôles et besoins différents suivant la
nature de leurs tâches. Parmi lesquels, on distingue, les administrateurs, les
développeurs d'application et les utilisateurs finals. Ainsi, on doit offrir à ces
différents d'utilisateurs des moyens d'accès adaptés à leurs besoins.
4
PARTIE I; Bases de données relationnelles Bouziane abderraouf
les données entre elles. Ainsi, pour garantir la fiabilité des données, l'ensemble des
contraintes d'intégrité doivent être gérées par le SGBD.
Le schéma interne de la base de données étant géré par le SGBD. Ce dernier doit
optimiser l'accès aux donnée en utilisant les meilleurs chemins d'accès et en supportant
l'accès simultané aux objets de la base de données. Cela dans le but de minimiser le
temps d'exécution des requêtes.
5
PARTIE I; Bases de données relationnelles Bouziane abderraouf
1. Introduction
2. Modèle de données
Un modèle de données est une représentation abstraite des données et des relations qui les
unissent. Il permet de simplifier la complexité du domaine réel en offrant différents points de
vue et des niveaux d'abstractions personnalisés.
Pour un cas d'étude donné, il peut y avoir plusieurs modèles. Le modèle le plus adéquat est
celui qui permet de saisir les aspects nécessaires et négliger les autres en fonction du but
recherché. Ainsi, il permet de délimiter le champs de l'étude aux entités et aux interactions qui
concernent la situation donnée.
3. Schéma entités-associations1
Une entité est une population d’individus homogènes. Par exemple, les produits ou les articles
vendus par une entreprise peuvent être regroupés dans une même entité articles (figure 1), car
d’un articles à l’autre, les informations ne changent pas de nature (à chaque fois, il s’agit de la
désignation, du prix unitaire, etc.).
Figure 1 : Entités
Par contre, les articles et les clients ne peuvent pas être regroupés : leurs informations ne sont
pas homogènes (un article ne possède pas d’adresse et un client ne possède pas de prix
unitaire). Il faut donc leur réserver deux entités distinctes : l’entité articles et l’entité clients.
1
De la page 6 jusqu'à la page 18, extrait de : http://cyril-gruau.developpez.com/merise/
6
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Une association est une liaison qui a une signification précise entre plusieurs entités. Dans
notre exemple, l’association acheter est une liaison évidente entre les entités articles et clients,
tandis que l’association livrer établit le lien sémantique entre les entités articles et
fournisseurs.
Figure 2 : Associations
Remarquons que dans ce schéma, les entités clients et fournisseurs ne sont pas liées
directement, mais indirectement, via l’entité articles, ce qui est assez naturel.
Figure 3 : Attributs
Un attribut est une propriété d’une entité ou d’une association. Toujours dans notre exemple
(figure 3), le prix unitaire est un attribut de l’entité articles, le nom de famille est un attribut
de l’entité clients, la quantité commandée est un attribut de l’association acheter et la date de
livraison est un attribut de l’association livrer.
Une entité et ses attributs ne doivent traiter que d’un seul sujet afin d’assurer une certaine
cohérence au modèle. Dans notre exemple, il est donc préférable de ne pas mettre les
informations relatives aux fournisseurs dans l’entité des articles mais plutôt dans une entité
fournisseurs séparées (et liée à l’entité articles via l’association livrer).
Ensuite, chaque individu d’une entité doit être identifiable de manière unique. C’est pourquoi
toutes les entités doivent posséder un attribut sans doublon (c’est-à-dire ne prenant pas deux
fois la même valeur). Il s’agit de l’identifiant que l’on souligne sur le schéma, par convention.
Le numéro de client constitue un identifiant classique pour l’entité clients (figure 4).
Remarques :
3.3 Cardinalités
La cardinalité d’un lien entre une entité et une association précise le minimum et le maximum
de fois qu’un individu de l’entité peut être concerné par l’association.
Une cardinalité minimale de 1 doit se justifier par le fait que les individus de l’entité en
question ont besoin de l’association pour exister (un client n’existe pas avant d’avoir acheté
quoique ce soit, donc la cardinalité minimale de l’entité clients dans l’association acheter est
1). Dans tous les autres cas, la cardinalité minimale vaut 0 (c’est le cas pour une liste pré-
établie d’articles par exemple).
Ceci dit, la discussion autour d’une cardinalité minimale 0 ou 1 n’est vraiment intéressante
que lorsque la cardinalité maximale est 1. Nous verrons en effet lors de la traduction vers un
schéma relationnel, que lorsque la cardinalité maximale est n, nous ne pouvons pas faire la
différence entre une cardinalité minimale de 0 et une cardinalité minimale de 1.
.
Notons que sur notre exemple, un article peut être acheté par plusieurs clients. Cela provient
du fait que tous les crayons rouges ne sont pas numérotés individuellement, mais portent un
numéro d’article collectif. En toute rigueur, notre entité articles aurait s’appeler types
d’article. Ainsi, un crayon rouge peut être acheté par plusieurs clients, ce n’est simplement
8
PARTIE I; Bases de données relationnelles Bouziane abderraouf
pas le même crayon à chaque fois. Il s’agit d’un choix de modélisation, vous pouvez très
légitimement faire le choix inverse qui consiste à numéroter individuellement chaque crayon
rouge.
La seule difficulté pour établir correctement les cardinalités est de se poser les questions dans
le bon sens. Autour de l’association commander, par exemple :
– côté clients, la question est « un client peut commander combien d’articles? « et la réponse
est « entre 1 et plusieurs » » ;
– côté articles, la question est « un article peut être commandé par combien de client? « et
cette fois-ci, la réponse est « entre 0 et plusieurs ».
Deux mêmes entités peuvent être plusieurs fois en association (c’est le cas sur la figure 6).
Dans cet exemple issu d’une agence immobilière, une personne peut être propriétaire, résider
principalement ou résider secondairement dans un logement géré par l’agence.
Les logements qui ne sont pas gérés par l’agence ne figurent pas dans l’entité des logements,
ce qui explique certaines cardinalités 0 du schéma. Nous supposons également qu’un
logement n’est détenu que par une seule personne et que ce propriétaire figure
obligatoirement dans l’entité des personnes.
Il est permis à une association d’être branchée plusieurs fois à la même entité, comme par
exemple l’association binaire réflexive de la figure 7.
Dans cet exemple, tout employé est dirigé par un autre employé (sauf le directeur général) et
un employé peut diriger plusieurs autres employés, ce qui explique les cardinalités sur le
schéma.
9
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Lorsque autour d’une entité, toutes les associations ont pour cardinalités maximales 1 au
centre et n à l’extérieur, cette entité peut être remplacée par une association branchée à toutes
les entités voisines avec des cardinalités identiques 0,n. Cette règle conduit parfois à
l’apparition d’associations qui établissent un lien sémantique entre 3 entités ou plus.
Sur l’exemple de la figure 8 issu d’un cinéma, l’entité projections est uniquement entourée
d’associations dont les cardinalités maximales sont 1 côté projections et n de l’autre côté. On
peut donc la remplacer par une association projeter branchée aux trois entités salles, créneaux
horaires et films. On parle alors d’association ternaire.
10
PARTIE I; Bases de données relationnelles Bouziane abderraouf
La difficulté de concevoir une association ternaire (ou plus) directement est d’établir les
bonnes cardinalités. Il est donc conseillé d’en passer par un schéma entités-associations dans
lequel on ne trouve que des associations binaires, puis de repérer les entités remplaçables par
des associations, comme sur la figure 8 à gauche. Cette règle de conduite permet d’éviter
d’introduire une association ternaire abusive, par exemple entre les avions, les pilotes et les
vols (figure 9), car le concepteur peut s’apercevoir que l’une des cardinalités maximales ne
convient pas.
11
Par ailleurs, une association peut être branchée à plus de trois entités, comme sur la figure 10.
Là encore, le conseil pour être sûr de la légitimité de cette association 4-aire, est de vérifier les
cardinalités sur un schéma intermédiaire faisant apparaître à la place, une entité occupations et
quatre associations binaires.
12
PARTIE I; Bases de données relationnelles Bouziane abderraouf
4. Règles de normalisation
1) Normalisation des entités (importante) : toutes les entités qui sont remplaçables par une
association doivent être remplacées (comme sur la figure 8).
Le nom d’une entité, d’une association ou d’un attribut doit être unique.
Conseils :
– pour les entités, utiliser un nom commun au pluriel (par exemple : clients) ;
– pour les associations, utiliser un verbe à l’infinitif (par exemple : effectuer, concerner)
éventuellement à la forme passive (être acheté) et accompagné d’un adverbe (avoir lieu dans,
pendant, à) ;
– pour les attributs, utiliser un nom commun singulier (par exemple : nom, numéro, libellé,
description) éventuellement accompagné du nom de l’entité ou de l’association dans laquelle
il se trouve (par exemple : nom de client, numéro d’article).
Remarque : lorsqu’il reste plusieurs fois le même nom, c’est parfois symptomatique d’une
modélisation qui n’est pas terminée (figure 11(a)) ou le signe d’une redondance (figure
11(b)).
13
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Conseils :
– éviter les identifiants composés de plusieurs attributs (comme par exemple un identifiant
formé par les attributs nom et prénom), car d’une part c’est mauvais pour les performances et
d’autres part, l’unicité supposée par une telle démarche finit tôt ou tard par être démentie ;
– préférer un identifiant court pour rendre la recherche la plus rapide possible (éviter
notamment les chaînes de caractères comme un numéro de plaque d’immatriculation, un
numéro de sécurité sociale ou un code postal) ;
– éviter également les identifiants susceptibles de changer au cours du temps (comme les
plaques d’immatriculation ou les numéros de sécurité sociale provisoires).
Conclusion : l’identifiant sur un schéma entités-associations (et donc la future clé primaire
dans le schéma relationnel) doit être un entier, de préférence incrémenté automatiquement.
En effet, d’une part, les attributs en plusieurs exemplaires posent des problèmes d’évolutivité
du modèle (sur la figure 12(a) à gauche, comment faire si un employé a deux adresses
secondaires ?) et d’autre part, les attributs calculables induisent un risque d’incohérence entre
les valeurs des attributs de base et celles des attributs calculés, comme sur la figure 12(b).
D’autres d’attributs calculables classiques sont à éviter, comme l’ˆage (qui est calculable à
partir de la date de naissance) ou encore la wilaya (calculable à partir d’une sous-chaîne du
code postal).
14
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Les attributs d’une association doivent dépendre directement des identifiants de toutes les
entités en association. Par exemple, sur la figure 5 la quantité commandée dépend à la fois du
numéro de client et du numéro d’article, par contre la date de commande non. Il faut donc
faire une entité commandes à part, idem pour les livraisons (figure 13).
15
L’inconvénient de cette règle de normalisation est qu’elle est difficile à appliquer pour les
associations qui ne possèdent pas d’attribut. Pour vérifier malgré tout qu’une association sans
attribut est bien normalisée, on peut donner temporairement à cette association un attribut
imaginaire (mais pertinent) qui permet de vérifier la règle. Par exemple, entre les entités livres
et auteurs de la figure 16, l’association écrire ne possède pas d’attribut. Imaginons que nous
ajoutions un attribut pourcentage qui contient le pourcentage du livre écrit par chaque auteur
(du même livre). Comme cet attribut pourcentage dépend à la fois du numéro de livre et du
numéro d’auteur, l’association écrire est bien normalisée. Autre conséquence de la
normalisation des attributs des associations : une entité avec une cardinalité de 1,1 ou 0,1
aspire les attributs de l’association (figure 14).
Il faut éliminer les associations fantômes (figure 15(a)), redondantes (figure 15(b)) ou en
plusieurs exemplaires (figure 15(c))
16
17
PARTIE I; Bases de données relationnelles Bouziane abderraouf
En ce qui concerne les associations redondantes, cela signifie que s’il existe deux chemins
pour se rendre d’une entité à une autre, alors ils doivent avoir deux significations ou deux
durées de vie différentes. Sinon, il faut supprimer le chemin le plus court, car il est déductible
à partir de l’autre chemin. Dans notre exemple de la figure 15(b), si on supprime l’association
payer, on peut retrouver le client qui a payé le règlement en passant par la facture qui
correspond.
Remarque : une autre solution pour le problème de la figure 15(b) consiste à retirer l’entité
règlements et d’ajouter une association régler avec les mêmes attributs (sauf l’identifiant)
entre les entités clients et factures.
Une cardinalité minimale est toujours 0 ou 1 (et pas 2, 3 ou n) et une cardinalité maximale est
toujours 1 ou n (et pas 2, 3, ...). Cela signifie que si une cardinalité maximale est connue et
vaut 2, 3 ou plus (comme sur la figure 15(c) à droite, ou pour un nombre limité d’emprunts
dans une bibliothèque), alors nous considérons quand même qu’elle est indéterminée et vaut
n. Cela se justifie par le fait que même si nous connaissons n au moment de la conception, il
se peut que cette valeur évolue au cours du temps. Il vaut donc mieux considérer n comme
une inconnue dès le départ.
Cela signifie également qu’on ne modélise pas les cardinalités minimales qui valent plus de 1
car ce genre de valeur est aussi amené à évoluer. Par ailleurs, avec une cardinalité maximale
de 0, l’association n’aurait aucune signification.
18
PARTIE I; Bases de données relationnelles Bouziane abderraouf
5. Le modèle relationnel
5.1. Introduction
Le modèle relationnel de gestion de base de données a été proposé par E F Codd en 1970. Les
bases de données relationnelles s'appuient sur des modèles mathématiques : la théorie des
ensembles qui repose sur l'utilisation d'un ensemble d'opérateurs formels sur les relations. Les
opérations relationnelles (union, intersection, projection, etc.) permettent de générer de
nouvelles relations (tables) à partir d'opérations élémentaires sur d'autres tables.
Un domaine est un ensemble fini ou infini de valeurs qui peut être représenté par
l'énumération de ces éléments ou bien par une condition nécessaire et suffisante
d'appartenance :
Le produit cartésien d'un ensemble de domaines Di, noté D1*D2*D3*...*Dn , est l'ensemble des
n-uplets (appelés aussi tuples) <V1,V2,...,Vn> tels que Vi appartient à Di
Le but est de représenter les relations à l'aide de tables (à deux dimensions) dont chaque
colonne a un nom qui représente un domaine. Une ligne du tableau représente donc une
occurrence.
On appelle attribut le nom des colonnes (domaine). On appelle tuple (ou n-uplet) une ligne de
la table (une occurrence).
L'utilisation des attributs pour décrire une relation est appelé schéma d'une relation. Par
exemple, l'entité Fournisseurs pourra par exemple être représentée par le schéma de la relation
suivante :
19
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Ainsi, le schéma d'une base de données relationnelle est l'ensemble des relations qui la
composent.
Les bases de données relationnelles sont plus efficaces que les bases de données non
relationnelles pour les raisons suivantes :
1. structures simples s’accompagnant des règles simples : il est plus facile de représenter
les données sous formes de table à deux dimensions que sous forme de structures
hiérarchique ou en réseau par exemple.
2. facile à restructurer : il est possible de modifier le format d’attributs existants et
d’ajouter d’autres attributs aux relation sans grande difficulté.
3. langage d’interrogation simple et puissant.
4. bases théoriques bien fondées (une théorie mathématique)
5. plus grandes indépendances des données.
6. lignes logiquement liées.
Le domaine
7. la valeur d’un attribut vient d’un domaine, un domaine est un ensemble de valeurs
atomiques, le terme atomique signifie que les valeurs ne peuvent être décomposées.
Les clés
20
PARTIE I; Bases de données relationnelles Bouziane abderraouf
9. une clé primaire est un ensemble d’attributs qui possèdent toujours un ensemble
valeurs uniques à chaque tuple.
10. une relation peut avoir plusieurs attributs susceptibles de servir de clés primaires, on
dit alors qu’il s’agit de clés candidates.
11. une clé primaires est celle choisit parmi les clés candidates pour servir d’identifiant
unique à la relation.
12. les lés candidates qui ne sont pas choisies pour servir de clés primaires sont appelées
clés secondaires ou alternatives.
13. aucun attribut d’une clé primaire ne doit avoir la valeur nulle.
14. il se peut qu’aucun attribut d’une relation ne soit unique, dans ce cas, la clé primaire
est formée d’une combinaison de plusieurs attributs.
15. une clé concaténé est une clé primaire contenant plus d’un attribut.
16. les relations entre les donnes dans un modèle relationnel sont représentées par des
pointeurs logiques
17. les relations entre deux tables sont représentées par des données communes aux deux
tables.
18. des fois pour représenter une relation entre deux table X et Y on copie la clé primaire
de X dans la table Y, dans ce cas on dit que la clé primaire de X est de devenue une
clé étrangère dans Y.
0. une base de données véritablement relationnelle gère les données par ces capacités
relationnelles. En d’autres termes le SGBD ne doit pas se fier à des méthodes non
relationnelles pour gérer ses données.
1. les données ne peuvent être présentés que sous forme de tables à deux dimensions.
2. une donnée (valeur atomique) est accessible par la combinaison du nom
de la table, de la clé primaire et du nom de la colonne.
3. les valeurs nulles doivent être prises en charge pour représenter les valeurs
absentes.
4. il doit y avoir un dictionnaire de données que les utilisateurs pourront consulter au
moyen du même langage d’interrogation que pour les données normales.
5. il doit y avoir un sous langage pour la définition de données le contrôle
de manipulation et d’intégrité, la gestion des transactions et le contrôle d’accès.
6. le système doit être en mesure de mettre à jour les données qui, théoriquement,
peuvent l’être.
7. les opérations de haut niveau, comme les mises à jour, l’insertion et l’effacement
de données, doivent être possibles tout comme les opérations de recherche
de données.
8. le SGBD doit assurer l’indépendance physique des données.
9. le SGBD doit assurer l’indépendance logique des données.
10. les contraintes d’intégrités doivent être intégrés à la base plutôt qu’aux
applications.
11. un SGBD réparti doit posséder une indépendance répartie.
21
PARTIE I; Bases de données relationnelles Bouziane abderraouf
12. si un langage relationnel possède un langage de bas niveau, celui-ci ne peut être
utilisé pour contourner le langage de haut niveau.
Pour traduire un schéma E/A en un schéma relationnel, il suffit d’appliquer cinq règles.
Notations : on dit qu’une association binaire (entre deux entités ou réflexive) est de type :
Règle 1 : toute entité devient une relation. Les attributs de l'entité deviennent les attributs de
la relation. L’identifiant de l’entité constitue alors la clé primaire de la relation.
Règle 2 : un association binaire de type 1 : n disparaît, au profit d’une clé étrangère dans la
relation côté 0,1 ou 1,1 qui référence la clé primaire de l’autre relation. Cette clé étrangère ne
peut pas recevoir la valeur vide si la cardinalité est 1,1.
Par exemple, l’association livrer de la figure 13 est traduite par :
Il ne devrait pas y avoir d’attribut dans une association de type 1 : n, mais s’il en reste, alors
ils glissent vers la relation côté 1.
Règle 3 : une association binaire de type n : m devient une relation supplémentaire (parfois
appelée relation de jonction, relation de jointure ou relation d’association) dont la clé primaire
est composée de deux clés étrangères (qui référencent les deux clés primaires des deux
relation en association). Les attributs de l’association deviennent des attributs de cette
nouvelle relation.
Règle 4 : une association binaire de type 1 : 1 est traduite comme une association binaire de
type 1 : n sauf que la clé étrangère se voit imposer une contrainte d’unicité en plus d’une
éventuelle contrainte de non vacuité (cette contrainte d’unicité impose à la colonne
correspondante de ne prendre que des valeurs distinctes).
Si les associations fantômes ont été éliminées, il devrait y avoir au moins un côté de
cardinalité 0,1. C’est alors dans la table du côté opposé que doit aller la clé étrangère. Si les
deux côtés sont de cardinalité 0,1 alors la clé étrangère peut être placée indifféremment dans
l’une des deux relations.
2
extrait de : http://cyril-gruau.developpez.com/merise/
22
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Remarque : d’autres techniques sont parfois proposées pour cette règle 4 (fusionner les
tables, utiliser une clé primaire identique, utiliser deux clés étrangères réflexives) mais elles
ne sont pas exploitables dans le cas général.
Règle 5 : une association non binaire est traduite par une relation supplémentaire dont la clé
primaire est composée d’autant de clés étrangères que d’entités en association. Les attributs
de l’association deviennent des attributs de cette nouvelle relation.
23
PARTIE I; Bases de données relationnelles Bouziane abderraouf
1. Introduction
Afin de justifier l'utilisation des règles de bonne conception d'une base de données
relationnelle, nous allons étudier dans ce chapitre, à travers un fragment d'un exemple de
tenue de stock, deux choix d'organisation des informations sous forme relationnelle où nous
allons en montrer les qualités et les défauts.
Dans ce qui suit, nous allons voir des exemples des problèmes les plus courants rencontrés
dans des bases de données mal conçues et ce sur les deux choix d'organisation précédents :
Dans la première organisation, une nouvelle insertion dans la base de données peut
entrainer des répétitions des données qui est souvent la cause d'anomalies.
Par exemple, dès qu'un article est utilisé par un projet, on doit non seulement répéter
son numéro qui, normalement, doit suffire à le déterminer, mais aussi toutes les
informations liées à ce numéro (description, étagère, unité, coût, quantité_stock , …).
Au contraire, dans le deuxième choix, seul le numéro indispensable à la distinction
d'un article est répété (la relation SORTIES).
Une information répétée dans plusieurs endroits (redondance) peut entrainer des
risques d'incohérence en cas de modification car, souvent, on oublie de modifier toutes
ses occurrences.
Par exemple, dans la première organisation proposée, si un article est utilisé, il faut
changer la quantité en stock dans tous les tuples où apparaissent ses coordonnées.
Dans la deuxième organisation, un seul tuple est modifié.
24
PARTIE I; Bases de données relationnelles Bouziane abderraouf
1.5. Anomalie d'insertion
Dans le premier schéma proposé, créer une fiche (insérer) pour un nouveau article
impossible car, pour ce faire, on doit insérer aussi des valeurs pour un projet et une
sortie de stock, or que ces dernières informations ne sont pas nécessaires et, de plus,
ne sont pas disponibles.
2. La théorie de la normalisation
Les anomalies précédentes se sont produites parce que des informations qui sont
sémantiquement distinctes sont regroupées au sein d'un même schéma. La solution à ces
problèmes est de considérer les "dépendances fonctionnelles" qui traduisent les contraintes sur
les données (par exemple, on décide que deux projets différents peuvent avoir les mêmes date
de début et de fin mais jamais le même numéro no_projet).
Un attribut Y dépend fonctionnellement d'un attribut X si, étant donné une valeur de X, il lui
correspond une unique valeur de Y, et on note : X Y
Exemple :
La dépendance fonctionnelle no-pièce description, signifie qu'à un numéro
d'un article est associé un nom. Il est à noter qu'une dépendance fonctionnelle
n'est pas obligatoirement symétrique, c'est-à-dire que no-pièce description
n'interdit pas que deux articles différents (correspondant à deux no-pièce
distincts) peuvent avoir la même description.
Il faut noter aussi, qu'une dépendance fonctionnelle est une propriété définie sur tous les
tuples d'une relation et pas seulement sur un tuple particulier. Elle correspond à une contrainte
qui doit être vérifiée toujours. Dans notre exemple, les dépendances fonctionnelles qui
doivent être vérifiées sont les suivantes :
no-pièce description, étagère, unité, coût, quantité_stock
no_projet date_début, date_fin
no-pièce, no_projet quantité_sortie, date_sortie)
25
PARTIE I; Bases de données relationnelles Bouziane abderraouf
2.1.1 Propriétés des dépendances fonctionnelles
Réflexivité :
YXXY
Augmentation :
X Y XZ Y et/ou XZ YZ
Transitivité :
X Y et Y Z X Z
Union :
X Y et X Z X YZ
Pseudo-transitivité :
X Y et YW Z XW Z
Décomposition :
X Y et Z Y X Z ou (X YZ X Y et X Z)
D'autre part, la notation X¬Y s'emploie pour indiquer q'un ensemble d'attributs X ne
détermine pas fonctionnellement un ensemble d'attributs Y.
En utilisant ces définitions, nous pouvons construire, à partir d'un premier ensemble de
dépendances fonctionnelles (dépendance fonctionnelle élémentaire), l'ensemble de toutes les
dépendances fonctionnelles qu'elles génèrent.
26
PARTIE I; Bases de données relationnelles Bouziane abderraouf
2.1.3. Fermeture transitive
Définition :
Soit R(A1, A2, ..., AN) un schéma de relation, soit X un sous-ensemble de A1, A2, ..., AN, on
dit que X est une clé de R si et seulement si
- il n'existe pas de sous ensemble Y inclus dans X tel que Y A1, A2, ..., AN.
Une clé d'une relation est un ensemble minimum d'attributs qui détermine tous les autres.
Dans l'écriture des schémas de relations, on indique les clés en soulignant les attributs
constitutifs.
La normalisation a été développée pour convertir les données brutes en modèles convenant
aux bases de données relationnelles. C'est une approche ascendante qui commence au
niveau éléments de données et se termine par les tables à deux dimensions.
Il s'agit d'une procédure en trois étapes pour éliminer les anomalies de mise à jour et
l'incohérence des données.
La normalisation exige une connaissance détaillée des données pour pouvoir être utilisée
efficacement. Elle doit être donc pratiquée dans les étapes ultérieures de l'analyse lorsque les
principaux détails des données utilisateurs et les caractéristiques fonctionnelles ont été définis.
Pour commencer le processus de normalisation il faut convertir la source de données en un
format qui facilite la normalisation. Pour ce faire, on doit:
Le but de la normalisation d'un schéma universelle d'une base de données, est d'obtenir une
représentation qui minimise la redondance et les risques d'anomalies lors des mises à jour et
des suppressions.
27
PARTIE I; Bases de données relationnelles Bouziane abderraouf
2.2.1. La première forme normale 1FN
Une relation est en première forme normale si tout attribut est atomique. En d'autres mots, un
attribut ne peut représenter ni une donnée composée d'entités de nature quelconque ni une
liste de données de même nature.
Cette première forme normale permet d'éviter d'avoir des attributs qui soient eux même des
relations (hiérarchie dans une relation) et cela en interdisant les domaines composés de
plusieurs valeurs.
- tout attribut n'appartenant pas à une clé ne dépend pas que d'une partie de
cette clé.
- tout attribut n'appartenant pas à une clé ne dépend pas d'un attribut non clé.
L'objectif de la troisième forme normale est l'élimination des redondances dues aux
dépendances fonctionnelles déduites par transitivité.
28
PARTIE I; Bases de données relationnelles Bouziane abderraouf
1. Introduction
Dans un modèle relationnel, les opérateurs permettent de manipuler des données. Ils traitent
des ensembles de données plutôt que des enregistrements.
Les opérateurs agissent sur une ou plusieurs relations à la fois et ont toujours pour résultat une
nouvelle relation. La relation résultante est nommée relation dérivée. Les relations d’origines
sont appelées relations de base.
A l’origine on a défini huit opérateurs : product, union, intersect, difference et restrict, project,
divide, join.
Les quatre premiers opérateurs agissent sur deux tables. Chacun d’entre eux, à l’exception de
product, exige que les tables utilisées soient compatibles en union. Autrement dit, chaque
colonne d’une table doit avoir le même domaine que la colonne équivalente dans l’autre
table.
2. Opérateur union
Cet opérateur agit sur deux ou plusieurs relations ayant le même schéma. Il consiste à
regrouper l'ensemble des tuples de chacune des relations de base pour en créer une nouvelle
relation où ses tuples sont l'ensemble des tuples appartenant aux relations initiales. Les
doublons éventuels seront supprimés.
R1
R2
29
PARTIE I; Bases de données relationnelles Bouziane abderraouf
R3 = UNION (R1, R2)
3. Opérateur intersection
Cet opérateur agit sur deux ou plusieurs relations ayant le même schéma. Il consiste à ne
garder, dans une nouvelle relation, que les tuples communs aux relations initiales, les
doublons éventuels seront supprimés.
R1
R2
R3 = Intersection (R1,R2)
4. Opérateur différence /
La différence entre deux relations de même schéma est une nouvelle relation qui comprend
l'ensemble des tuples appartenant à la première relation, et pas à la seconde.
R3
30
PARTIE I; Bases de données relationnelles Bouziane abderraouf
R4
Cet opérateur agit sur deux ou plusieurs relations de schéma quelconque. La relation
résultante contient toutes les concaténations possibles (combinaisons) entre les tuples des
relations initiales.
Exemple :
R nom prenom
Miloudi Lahcene
Babouche Kamel
Mebarki Fouad
S
bac filière
A littéraire
B économie
C sciences
D sciences
31
PARTIE I; Bases de données relationnelles Bouziane abderraouf
T=R*S
6. Opérateur Restrict
L'opération restriction (ou sélection) est un opérateur unaire qui produit en sortie une
nouvelle relation (de même schéma que la relation de base) où ses tuples satisfaisant la
condition de sélection qui utilise les opérateurs de comparaison ( <; <=; >; =>; =; != ), les
connecteurs logiques (et ou non) et les parenthèses.
Syntaxe
< condition > (Relation)
Soit la relation SORTIES (no_pièce, no_projet, date_s, quantité)
SORTIES
32
PARTIE I; Bases de données relationnelles Bouziane abderraouf
R1
7. Opérateur Projection
Cet opérateur agit sur une seule relation. Il produit en sortie une nouvelle relation ayant
comme enregistrements ceux de la relation de base restreints aux attributs choisis dans la
condition de projection (un sous-schéma inclus dans le schéma de la relation de base)
Syntaxe
A1; A2; ...; An ( < relation > )
R1
8. Opérateur Join
L'opération de jointure sur plusieurs relations est le produit cartésien de ces qui vérifie des
conditions spécifiées par l'utilisateur. Ces condition portent sur des attributs de mêmes
domaines appartenant aux relations de base.
Requête : Quelles sont les pièces dont la quantité en stock = 0 et qui ont fait l'objet de
sorties?
ARTICLES
SORTIES
33
PARTIE I; Bases de données relationnelles Bouziane abderraouf
34
PARTIE I; Bases de données relationnelles Bouziane abderraouf
1. Introduction
SQL est un langage non procédural qui manipule des ensembles. Il se présente sous forme de
requêtes qui sont constituées, d'une façon générale, de trois éléments essentiels :
• Une clause SELECT : elle permet de déterminer les attributs qui vont constituer le schéma
de la future relation.
• Une clause FROM : elle permet de déterminer les relations de base (là où on va chercher
l'information)
• Une clause WHERE : elle permet de spécifier les conditions de recherche.
- Déclaration de tables.
• LCD (Langage de Contrôle de Données) : permet de définir des droits aux utilisateurs
de la base de données.
Pour illustrer les différents commandes du langage SQL, nous allons utiliser dans ce qui suit,
une base de données composée des tables suivantes :
35
PARTIE I; Bases de données relationnelles Bouziane abderraouf
2.1. Les requêtes simples
Une requête simple, ou une projection, permet de sélectionner un ensemble d'attribut dans une
table. Elle a la syntaxe suivante :
Par exemple :
Le résultat de cette requête donne une liste de tous les numéros de pièces (no_pièce) et leur
description de la table INVENT.
INVENT
Le résultat de la requête:
Pour sélectionner tous les attributs de la table on peut utiliser le caractère '*' :
Exemple :
Select *
From INVENT ;
Pour ne pas avoir de redondance (de doubles) dans la sélection on utilise l'expression
'distinct'
36
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Exemple :
La clause WHERE permet d'inclure une condition à la sélection (restriction). Sa syntaxe est
la suivante :
Exemple : Donnez la liste des projets (no_projet, id_chef) dirigés par le chef de projet dont le
PROJET
Remarque :
La condition dans la clause Where est une expression logique qui peut être exprimée en
utilisant une combinaison des connecteurs logiques (AND, OR, NOR), des opérateurs
arithmétiques (+, -, *, /, ^), des comparateurs arithmétiques (=, != ou <>, <, >, <=, >=),
des comparateurs ensemblistes (Between …. And, Not between … and, In, Not in), des
Comparateurs de chaînes de caractères (Like, Not like), des restriction sur les valeurs
37
PARTIE I; Bases de données relationnelles Bouziane abderraouf
manquantes (IS NULL, IS NOT NULL) et/ou des fonctions numériques prédéfinies
(ABS, GREATEST, LEAST).
Exemples :
Trouvez les projets dirigés par les chefs de projet dont l’identification est “104”, “108” ou
“111”.
Select no_projet
From Projet
Quels sont les projets qui ont débuté entre le 1er janvier 1989 et le 15 mars 1991?
Select no_projet
From Projet
Select no_projet
From Projet
Quelles sont les pièces dont la classe débute par la lettre “Z”?
Select *
From Invent
Cette clause permet de classer par ordre croissant ou décroissant le résultat d'une requête.
Par défaut, une requête tri la relation résultat par ordre croissant. Les extensions asc et desc
indiquent respectivement si le tri est croissant ou décroissant.
Exemple :
Donnez la liste des sorties d'inventaire (no_pièce, no_sortie, no_projet) du projet "P1259",
présentée par ordre de numéro de pièce.
38
PARTIE I; Bases de données relationnelles Bouziane abderraouf
(À noter que le asc n'est pas obligatoire ici car il est mis par défaut)
Le résultat:
On pourra aussi trier avec plusieurs critères. Par exemple, quelles sont les sorties
d'inventaire (no_projet, date, no_sortie) dont le numéro de projet débute par "P128" et la
quantité de pièces sorties est supérieure à 10? La liste doit être présentée par ordre croissant
de numéro de projet et par ordre chronologique.
Le résultat:
Les requêtes multi-relations représentent les jointures. Il faut que les champs servant à la
jointure soient du même type (même domaine).
39
PARTIE I; Bases de données relationnelles Bouziane abderraouf
Exemple :
Remarque : On peut donner des alias aux noms de tables pour éviter de taper à chaque fois le
nom de la table entièrement dans la requête.
Exemple :
Select AVG(coût)
From Invent
From Invent
Cette clause permet de grouper les résultats d'une requête par rapport à un attribut spécifié et
cela pour une meilleure lisibilité.
Exemple :
40
PARTIE I; Bases de données relationnelles Bouziane abderraouf
La clause HAVING permet de faire des restrictions sur les regroupements ORDER BY.
Syntaxe :
Exemple:
Quels sont les projets qui ont donné lieu à plus de 10 sorties d’inventaire?
Select no_projet
From Sortie
Group By no_projet
Having COUNT(*) > 10;
41
PARTIE I; Bases de données relationnelles Bouziane abderraouf
2.8. Requêtes imbriquées
Des requêtes imbriquées sont celles qui comprennent une requête dans la clause "where" ou
"having" (une requête à l'intérieur d'une requête). On utilise le résultat de la requête
imbriquée pour réaliser la requête appelante.
Exemple :
Select no_pièce
From Invent
Where classe IN (Select classe
From Classe
Ce cas se produit quand on a besoin des informations de la requête principale dans la sous
requête.
Exemple :
Quelles sont les sorties d’inventaire dont la quantité de pièces sorties est supérieure à la
quantité moyenne de toutes les sorties effectuées sur le compte du même projet?
Select no_sortie
From Sortie AS S1
Where quantité > (Select AVG(quantité)
From Sortie AS S2
42
PARTIE I; Bases de données relationnelles Bouziane abderraouf
3. La modification des données
3.1. Insertion de tuples (lignes)
1. Pour insérer les données dans une ligne d'une table on utilise INSERT avec la clause
VALUES.
2. Pour insérer des données à partir d'une autre table, on utilise la clause SELECT.
Insert Into < Nom de table > [ <nom des attributs > ]
Values ( < valeur attribut1>, < valeur attribut 2>, … )
Exemple :
Ajoutez un chef de projet nommé Kamel Dahmani dont l’identification est “357”.
Insert Into < Nom de table > [ <nom des attributs > ]
Voici sa syntaxe :
Exemple :
Update Invent
Set coût = coût * 1.1
Where no_pièce = "384R";
43
PARTIE I; Bases de données relationnelles Bouziane abderraouf
3.3. Suppression de tuples
Voici sa syntaxe :
Exemple :
Delete
From Invent
Where classe = "W67";
44
PARTIE I; Bases de données relationnelles Bouziane abderraouf
4. Le langage de définition des données (LDD)
4.1. La déclaration de tables
Pour créer une table, on utilise la commande CREATE TABLE. et il faut respecter les
règles suivantes :
Voici sa syntaxe :
(< nom_attribut1 > < type attribut1 > < contrainte attribut1 >,
< nom_attribut2 > < type attribut2 > < contrainte attribut >,….. )
Exemple :
nom_client CHAR(40),
montant DOUBLE);
45
PARTIE I; Bases de données relationnelles Bouziane abderraouf
TRAVAUX DIRIGES
46
Cours de Bases de données relationnelles Bouziane abderraouf
CHAPITRE I
Question 1 :
Question 2 :
Lorsque plusieurs fichiers contiennent des champs de données du même nom dont les données
ne concordent pas, on dit qu’il y a …………..
Question 3 :
Question 4 :
De multiples mises à jour doivent être effectuées pour actualiser les différents ………..
Question 5 :
Voici la liste des fichiers, enregistrement et champs utilisés dans une banque. Indiquez si
chaque élément est un « fichier », un « enregistrement » ou un « champ ».
47
Cours de Bases de données relationnelles Bouziane abderraouf
Question 6:
Quelle catégorie d’utilisateurs aura le plus souvent besoin d’exécuter les manipulations
suivantes :
Question 7 :
Question 8 :
Question 9 :
Quels sont les trois types de modèles de base de données pris en charge par les systèmes
réels ?
48
Cours de Bases de données relationnelles Bouziane abderraouf
CHAPITRE II
TP 1
Congrès International en Informatique Appliquée 20XX (CIIA xx).
Avant la tenue d'un congrès, les organisateurs font parvenir aux universités, aux entreprises
et aux administrations des affiches de publicité. Les personnes désirant participer envoient
leurs articles au secrétariat du congrès avant une certaine date. (Date limite de dépôts
des articles ou deadline).
Chaque article (identifié par un numéro) est revu par un ou plusieurs membres du comté
de lecture (les reviewers). Les articles jugés intéressants seront retenus pour la présentation
lors du congrès et leurs auteurs sont contactés pour la confirmation de participation.
Le congrès se déroule sur 3 jours et il comporte différents sessions d'une demi journée
chacune consacrées à la présentation des articles. A noter qu'un congressiste peut soumettre
plusieurs articles.
A tout moment (avant, pendant et après) on désire connaître la liste des sessions se déroulant
telle demi-journée avec toutes les informations les concernant (numéro de la session,
président de la session (un des membre du comité de lecture), les articles inscrits dans
la session, nom ou numéro de salle). Plusieurs sessions peuvent se dérouler simultanément
dans la même demi-journée.
Questions :
49
Cours de Bases de données relationnelles Bouziane abderraouf
TP 2
Le LMD
Dans le système LMD les formations sont organisées en semestres : La licence 6 semestres, le
Master 4 semestres et le doctorat minimum 6 semestres. Ces formations sont regroupées par
grands domaines (MI, ST…) qui recouvrent plusieurs disciplines (Maths, Informatique,
Médecine…)
Au cours de la licence, l'étudiant choisit une des mentions proposées. Exemple : Licence MI,
mention Informatique de gestion. Au cours du Master, il choisit une mention et
éventuellement une spécialité qui peut être déclinée en voie "recherche" ou "professionnelle".
Exemple : Master Sciences et technologie (ST), mention Sciences et technologie de
l'information et de la communication, spécialité réseau communication, voie recherche.
Questions :
50
Cours de Bases de données relationnelles Bouziane abderraouf
TP 3
Le cirque
Les organisateurs d’un cirque veulent monter une base de données pour gérer les réservations
des spectateurs, le choix des numéros et l’organisation des différents spectacles.
Le cirque dure sept jours et chaque demi-journée est consacrée à un spectacle qui regroupe
des numéros portant sur le même thème (magie, acrobaties, dressage d’animaux ...).
L'espace réservé aux spectateurs est divisé en plusieurs zones regroupant des places
numérotées. Le tarif de la réservation dépend de l'endroit de la place et du spectacle choisi.
Chaque numéro proposé est caractérisé par un code, son nom, son thème et sa durée moyenne
en minutes (de 20 à 25 minutes). De plus on souhaite savoir l’instrument utilisé pour les
numéros musicaux, l’animal concerné par les numéros de dressage et le type des acrobaties
(équilibrisme, trapèze volant, …), etc. On maintient aussi le nombre des artistes présents sur
scène
Chaque artiste possède un numéro (en général son numéro de carte d’identité), son nom,
son prénom, sa date de naissance, son adresse, le ou les numéros qu’il propose puisque les
artistes sont susceptibles de présenter plusieurs numéros.
Pour chaque spectacle, on garde le code, le thème, le jour, l’heure de début, l’heure de fin,
le président (celui qui anime le spectacle, présente les artistes, etc., c’est un artiste d’un autre
numéro), la liste des numéros du spectacle, avec leur heure de passage et le coût d'entrée
pour le spectacle (tous les spectacles n’ont pas le même coût d’entrée).
Questions :
51
Cours de Bases de données relationnelles Bouziane abderraouf
TP 4
La fiche de prêt
Questions :
NUMÉRO : 1233
NOM : BENAHMED PRÉNOM : Salim
ADRESSE :
54 rue de Belleville
34000 BelleWilaya
52
Cours de Bases de données relationnelles Bouziane abderraouf
TP 5
Dans ce système de messagerie électronique les utilisateurs ont des adresses de 30 caractères
maximum selon le format xxxx@univ-bba.dz, et un mot de passe personnel. Avant son
enregistrement, l’utilisateur doit nous fournir certaines informations (nom, prénom, date de
naissance, adresse, fonction, institut de rattachement).
Ce système doit permettre aux utilisateurs d’envoyer et de recevoir des mails (du texte) avec
éventuellement des pièces jointes (des pdf, des jpg, Etc.) créées par d’autres logiciels. Chaque
utilisateur à 2 dossiers : Boite de réception, Boite des éléments envoyés.
Le système doit permettre aux utilisateurs de créer des alias aux adresses électronique.
Questions :
53
Cours de Bases de données relationnelles Bouziane abderraouf
CHAPITRE III
Exercice 1 :
Exercice 2 :
A B C D E
a1 b1 c1 d1 e1
a1 b2 c2 d2 e1
a2 b1 c3 d3 e1
a2 b1 c4 d3 e1
a3 b2 c5 d1 e1
Exercice 3 :
54
Cours de Bases de données relationnelles Bouziane abderraouf
P X Z Y W
1 7 5 9 6
3 8 3 3 7
3 5 2 4 7
9 5 2 0 4
Exercice 4 :
1) AB • E. 2) BG • C. 3) AB • G.
Exercice 5 :
Exercice 6 :
fonctionnelles suivantes :
55
Cours de Bases de données relationnelles Bouziane abderraouf
EXERCICES CORRIGES
Exercice 1 :
A B C D E
a1 b1 c1 d1 e1
a1 b2 c2 d2 e1
a2 b1 c3 d3 e1
a2 b1 c4 d3 e1
a3 b2 c5 d1 e1
Exercice 2 :
Exercice 3 :
Question : en utilisant la notion de fermeture d'un ensemble d'attributs, montrer que AB -> E,
56
Cours de Bases de données relationnelles Bouziane abderraouf
AB -> C et AB -> D |= AB -> CD par union,
Question : en utilisant la notion de fermeture d'un ensemble d'attributs, montrer que BG -> C,
Question : en utilisant la notion de fermeture d'un ensemble d'attributs, montrer que AB -> G.
57
Cours de Bases de données relationnelles Bouziane abderraouf
CHAPITRE II
Exercices :
1)
2 )
58
Cours de Bases de données relationnelles Bouziane abderraouf
3 )
4 )
59
Cours de Bases de données relationnelles Bouziane abderraouf
5)
6)
7 )
60
Cours de Bases de données relationnelles Bouziane abderraouf
8)
61
Cours de Bases de données relationnelles Bouziane abderraouf
CHAPITRE IV
Exercice 1:
Et les extensions :
Exercice 2:
63
Cours de Bases de données relationnelles Bouziane abderraouf
CHAPITRE V
SQL
1. Donnez la liste des projets (no_projet, id_chef) dirigés par le chef de projet dont le
numéro est "105".
2. Donnez la liste des sorties dont la quantité est inférieure à 3.
3. Donnez la liste des sorties d'inventaire (no_pièce, no_sortie, no_projet) du projet
"P1259", présentée par ordre de numéro de pièce.
4. Donnez la liste des pièces (no_pièce, description, coût) dont le coût unitaire est au
moins 120.00 DA, triée par ordre décroissant de coût.
5. Donnez la liste des pièces (no_pièce, description, coût) comportant le mot "turbine" au
sein de leur description.
6. Quelles sont les sorties d'inventaire (no_projet, date, no_sortie) dont le numéro de
projet débute par "P128" et la quantité de pièces sorties est supérieure à 10? Votre liste
doit être présentée par ordre croissant de numéro de projet et par ordre chronologique.
7. Identifiez les pièces (no_pièce, description, classe, étagère) qui appartiennent à la
classe "C10", qui sont localisées dans une étagère débutant par le numéro "11", et dont
la quantité en inventaire dépasse 25.
8. Trouvez les pièces (no_pièce, description) fondamentales de l'inventaire. Le chef-
magasinier considère comme fondamentale: toute pièce dont le coût est d'au moins
500DA et l'unité est "UN"; ou toute pièce dont la classe est "D30" et est conservée
dans une étagère dont le numéro débute par "00".
9. Quels sont les projets (no_projet seulement) qui ont été imputés d'au moins une sortie
d'inventaire?
10. Qui sont les chefs de projets ayant été assignés au moins une fois à la direction d'un
projet (présentez seulement l'identification du chef de projet)?
11. Produisez la liste complète des classes de pièces en ordre alphabétique du nom.
12. Produisez la liste complète des chefs de projet (id_chef, nom).
13. Produisez la liste contenant le numéro, la description et la quantité, des pièces en
inventaire qui valent au moins 50.00DA l'unité.
14. Produisez la liste, triée par numéro de pièce, des sorties d'inventaire portées sur le
15. Produisez la liste des sorties d'inventaire où la quantité sortie est supérieure à un (1)
mais inférieure à dix (10).
16. Présentez la liste de tous les projets qui ont duré moins de 18 mois (Assumez que tous
les mois ont trente jours).
17. Présentez la liste des sorties d'inventaire qui ont été effectuées entre le 10 mai 1989 et
le 25 février 1990.
18. La liste (no_pièce, description et quantité) des pièces qui ont au moins 15 unités en
inventaire.
19. La liste (no_pièce, description et classe), triée par numéro de pièce, des pièces qui
appartiennent à la classe "A10".
20. La liste des sorties d'inventaire du projet "P1206" où la quantité sortie est supérieure à
un (1).
3
Questions tirées de : http://neumann.hec.ca/pages/eric.forthomme/
Base de données Inventaire.mdb disponible sur le site du document.
64
Cours de Bases de données relationnelles Bouziane abderraouf
21. La liste de tous les projets qui ont terminé avant le 25 mars 1990, triés dans l'ordre
décroissant des numéros de projet.
22. Quel est le numéro des chefs de projet qui ont moins de 45 ans? Access vous permet
d'obtenir la date du jour en utilisant la fonction DATE().
23. La liste des pièces, numéro et description seulement, que l'on retrouve dans une
étagère débutant par "21" ou "11", triées par ordre alphabétique de description.
24. La liste des pièces (classe, no_pièce, description et étagère) que l'on retrouve dans la
section d'étagère "S" (ex: "99S99") et qui n'ont pas de quantité en inventaire, triées par
numéro de pièces.
25. La liste des sorties d'inventaire (no_sortie, no_pièce, no_projet et quantité) qui ont été
effectuées avec la pièce "BXM100", ou qui ont été effectuées pour le projet "P1259".
26. Présentez la liste des pièces par ordre de classe et de numéro, et majorez leur coût de
20%.
27. Quel est le coût unitaire moyen de toutes les pièces en inventaire (sans égard à la
quantité possédée)?
28. Quel est le coût unitaire moyen par classe de pièces (encore une fois sans égard à la
quantité)?
29. Calculer le nombre de classes taxables et de classes non taxables.
30. Quelle est la somme des quantités de pièces sorties par projet, pour les projets dont les
31. Combien y a-t-il de chefs de projet ayant été assignés au moins une fois à la direction
d'un projet?
32. Calculez la valeur totale de l'inventaire.
33. Quel est le coût unitaire moyen (sans égard à la quantité) par classe de pièces pour les
classes comportant 20 pièces ou plus?
34. Quel est le nombre total de sorties d'inventaire enregistrées dans la table SORTIE?
35. Quel est le nombre total de sorties d'inventaire enregistrées pour chaque projet?
36. Présentez le total des quantités des pièces en inventaire.
37. Présentez le total des quantités des pièces en inventaire, pour chacune des classes de
pièces.
38. Présentez le total des quantités des pièces en inventaire, pour chacune des classes de
pièces, mais seulement pour les classes qui regroupent 5 sortes de pièces ou plus.
39. Quel est le coût unitaire moyen des pièces?
40. Combien y a-t-il de sorties imputées aux projets "P1206" et "P1271"? (la réponse est
un nombre unique)
41. Pour chaque pièce, présentez la quantité totale d'unités sortie de l'inventaire, triée par
numéro de pièce.
42. Fournissez la liste des pièces qui ont fait l'objet de deux sorties ou plus.
43. Fournissez la liste des numéros des projets ayant débuté entre le 24 mai 1987 et le 4
mars 1990 inclusivement.
44. Quelles sont les sorties d'inventaire ayant été effectuées pour le compte de l'un des
projets suivants: "P1150", "P1151", "P1156", "P1167" et "P1198"?
45. Quelles sont les sorties d'inventaire (no_sortie, date) effectuées pour un projet dont
l'identification du chef de projet se situe entre "111" et "121" inclusivement?
46. Quelle sont les classes de pièces auxquelles aucun numéro de pièce contenu en
inventaire n'appartient?
47. Quelles sont les pièces (no_pièce, description, unité) qui n'ont jamais fait l'objet d'une
sortie d'inventaire d'une quantité de 2?
48. Quelles sont les sorties d'inventaire effectuées avec la pièce la plus dispendieuse?
49. Quels sont les numéros de pièce dont le coût unitaire est supérieur au coût unitaire
moyen de toutes les pièces de la même classe à laquelle elles appartiennent?
50. Fournissez une liste de prix (no_pièce, description, prix) pour les pièces. Le prix de
vente correspond au coût de la pièce majoré de 28%, sauf dans le cas des pièces de la
65
Cours de Bases de données relationnelles Bouziane abderraouf
classe "V08" qui, elles, doivent être majorées de 21%. Note: la liste doit apparaître par
numéro de pièce.
51. Quelles sont les pièces qui ont un coût unitaire plus élevé que la moyenne?
52. Fournissez la liste des pièces, incluant leur description, qui ont fait l'objet d'au moins
une sortie sur le compte du projet "P1288".
53. Quelles sont les pièces qui n'ont jamais fait l'objet de sortie.
54. Quel est le nom du chef de projet le(la) plus jeune?
55. Présentez la liste des sorties d'inventaire, par ordre chronologique, effectuées par le
chef de projet le plus vieux (vieille).
56. Produisez la liste de toutes les pièces (no_pièce, description, unité et coût) par ordre de
numéro de pièce, mais en majorant de 7% le coût des pièce dont l'unité est "UN" et de
12% les autres pièces.
57. Effacez les sorties effectuées pour le compte du projet le plus ancien.
58. Donnez le nom et l'âge (en années) des chefs de projet qui ont dirigé des projets dont
la durée fut de deux mois ou moins.
59. Présentez la liste des sorties d'inventaire (no_sortie, date, quantité) effectuées avec la
pièce la plus coûteuse.
60. Quelles sont les pièces (no_pièce, description, nom de la classe) dont l'unité de mesure
est le "SAC/25"?
61. Donnez la liste des projets en incluant le nom du chef de projet (id_chef, nom,
no_projet), triée par l'identification du chef.
62. Fournissez une liste des sorties d'inventaire en affichant la description de la pièce et le
nom du chef de projet, au lieu du numéro de la pièce et du numéro du projet,
respectivement.
63. Calculez le montant dépensé en pièces pour chaque projet.
64. Calculez le montant dépensé en pièces pour chacun des chefs de projet (faire
apparaître le nom du chef de projet).
65. Quelles sont les pièces taxables qui ont été sorties de l'inventaire au moins une fois par
des chefs de projet nés avant le 1er janvier 1940? (On vous demande seulement le
numéro des pièces, mais celui-ci ne doit apparaître qu'une seule fois dans la liste.)
66. Fournissez une liste qui présente le numéro de la pièce, sa description et le nom de la
classe à laquelle elle appartient. Présentez votre liste de sorte que toutes les pièces
appartenant à une même classe apparaissent les unes à la suite des autres.
67. La liste des pièces (nom de classe, no_pièce, unité, coût) taxables, présentée par ordre
de nom de classe et par ordre de no_pièce.
68. Pour chacune des sorties d'inventaire impliquant une quantité égale ou supérieure à 10
unités, fournissez le nom de la classe de la pièce et le nom du chef de projet (No
sortie, nom de la classe, nom du chef de projet).
69. Pour chacune des sorties d'inventaire effectuées par le chef de projet "Marc Cadame",
fournissez une liste indiquant le numéro de la sortie, la description de la pièce et sa
mention taxable.
70. Vous devez présentez le coût total en pièces de chacun des projets. Votre liste doit être
présentée en ordre de numéro de projet. Le coût total s'obtient en calculant la valeur de
chacune des sorties (quantité de pièces x coût de la pièce) et en faisant la somme de
toutes les sorties pour chacun des projets. Pour les pièces taxables, ajoutez 7% de TPS
et 8% de TVQ.
71. Fournissez la liste des pièces qui ont été utilisées pour le compte d'un des projets
suivants: "P1288", "P1259" ou "P1210". Si, et seulement si, la description de la pièce
ne comprend pas le mot "acier".
72. Fournissez une liste des chefs de projet avec le nombre de projets auxquels chacun est
associé. Vous devez fournir le nom du chef et n'oubliez pas que certains chefs ne
dirigent aucun projet.
66
Cours de Bases de données relationnelles Bouziane abderraouf
73. Fournissez la liste des noms des chefs de projet avec, à côté de leur nom, la mention
"expérimenté" s'ils ont dirigés 2 projets ou plus, ou la mention "débutant", le cas
échéant.
74. Fournissez la liste des numéros de projets dont le montant total dépensé en pièces est
supérieur à 1 000DA.
75. Quelle est la valeur en dollars que représente chacune des sorties d'inventaires, en
sachant qu'une majoration de 7% doit être appliquée pour les frais généraux?
76. Quelle est la valeur en dollars que représente le total des sorties imputées à chacun des
projets, en sachant qu'une majoration de 7% doit être appliquée pour les frais
généraux? (Assumez que tous les projets ont eu des sorties).
77. Quelle est la valeur en dollars que représente le total des sorties imputées à chacun des
chefs de projets, en sachant qu'une majoration de 7% doit être appliquée pour les frais
généraux? (Assumez que tous les chefs ont dirigé des projets, et que tous les projets
ont eu des sorties).
78. On vous demande la même question, mais cette fois votre réponse doit inclure les
chefs n'ayant pas dirigé de projets et les projets n'ayant pas eu de sorties (Votre
réponse doit donc présenter 15 lignes, car il y a 15 chefs de projets).
67
Cours de Bases de données relationnelles Bouziane abderraouf
Dans une démarche simplifiée de tenue de stock, des produits (N° Produit, Désignation) sont
fournis par des fournisseurs (N° Fournisseur, Raison sociale, Téléphone). Des bons de
livraisons (N° BonLiv, Date) indiquent les quantités fournies.
Des clients (N° Client, Raison sociale, Téléphone) peuvent commander différentes quantités
de différents produits. Pour ce faire, ils doivent établir des bons de commandes (N° BonCmd,
Date)
Questions :
Etablir le MCD.
Etablir le MLD.
Implémenter la base de données en utilisant MS access.
Réaliser une application qui comporte :
o Masques de saisie :
Un masque de saisie des fournisseurs (+ recherche par nom et par
numéro).
Un masque de saisie des produits (+ recherche par désignation et par
numéro).
Un masque de saisie des clients (+ recherche par nom et par numéro).
Un masque de saisie des commandes.
o Etats de sortie (impressions) :
Liste des clients.
Liste des fournisseurs.
Liste des produits ayant atteint un seuil donné.
Edition d'une commande d'un client donné.
Liste des commandes d'un client entre 2 dates données.
68
Cours de Bases de données relationnelles Bouziane abderraouf
EXAMENS
69
Cours de Bases de données relationnelles Bouziane abderraouf
Centre Universitaire de BBA 3eme année Ingénieur 2005/2006
Institut d’Informatique Module Bases de données
2-Supposons que l’utilisateur ait besoin des mêmes informations en ordre décroissant. 1Pts
3- L’utilisateur a besoin de toutes les colonnes dans lesquelles le type_véhicule est ‘camion’
ou ‘tracteur’ et dont le kilométrage est supérieur à 1600. 1Pts
Exercice 2 : 6 Pts
Dans la base de données contenant la relation EMPLOYE (Nom, Lieu, Salaire, Chef),
Exercice 3 : 8Pts
Exercice 4 : (6 * 0.5)Pts
70
Cours de Bases de données relationnelles Bouziane abderraouf
Centre Universitaire de BBA 3eme année Ingénieur 2006/2007
Institut d’Informatique Module Bases de données
Dans le système LMD les formations sont organisées en semestres : La licence 6 semestres, le
Master 4 semestres et le doctorat minimum 6 semestres. Ces formations sont regroupées par
grands domaines (MI, ST…) qui recouvrent plusieurs disciplines (Maths, Informatique,
Médecine…)
Au cours de la licence, l'étudiant choisit une des mentions proposées. Exemple : Licence MI,
mention Informatique de gestion. Au cours du Master, il choisit une mention et
éventuellement une spécialité qui peut être déclinée en voie "recherche" ou "professionnelle".
Exemple : Master Sciences et technologie (ST), mention Sciences et technologie de
l'information et de la communication, spécialité réseau communication, voie recherche.
Questions :
Questions :
1) Donner quelques exemples de tuples correspondant à la relation R. (4 exemples)
3) Citer les anomalies (par des exemples) qui se trouvent dans la relation R.
71
Bases de données : 2eme Examen
Exercice 1 :
On considère le schéma relationnel suivant qui modélise une application pour la gestion de
Questions : 1+2+1+2+3+1+2+2
Q2 : Liste des titres que l’on retrouve à la fois comme titre de disque et titre de livre ?
Q4 : Quel est le salaire annuel des membres du personnel gagnant plus de 150 000 DA en
Exercice 2 :
Questions : 6 Pts
1. Projection : A (R1)
2. Sélection : < condition > (R1)
3. Produit cartésien : R1 X R2
4. Jointure: R1 * R3
5. Union: R1 U R2
6. Intersection: R1 R2
Support de cours de Bases de données Bouziane Abderraouf
CdSexe)
Datenais Date de naissance
MATIERS (NuMat, NoMat, Coeff, NumEns)
Grade Grade de l'enseignant
ENSEIGNANTS (NumEns, NomEns, Grade,
LbSexe Libellé du sexe
Ancien)
NoMat Nom de la matière
NOTES (NumEtu, NuMat, Note)
NomEns Nom de l'enseignant
SEXE (CdsSexe, LbSexe)
2. Afficher le nom et le coefficient des matières qui sont enseignées par des maîtres de
conférences ou des assistants.
3. Afficher le nom et le sexe des étudiants qui ont eu une note d'informatique supérieure
à la moyenne générale de la classe.
4. Afficher, les matières pour lesquelles la moyenne des notes est inférieure à 10.
Afficher le nom de l'enseignant correspondant.
5. Afficher, pour chaque matière, qu'elle est la meilleure note et quel est l'étudiant qui l'a
obtenue.
Exercice 2 : 10 Pts
Une agence de location de maisons et d’appartements désire gérer sa liste de logements. Elle
voudrait en effet connaître l’implantation de chaque logement (nom de la commune et du
quartier) ainsi que les personnes qui les occupent (les signataires uniquement).
Le loyer dépend d’un logement, mais en fonction de son type (maison, studio, F3, F4...)
l’agence facturera toujours en plus du loyer la même somme forfaitaire à ses clients. Par
exemple, le prix d’un studio sera toujours égal au prix du loyer + 2000 DA de charges
forfaitaires par mois.
Pour chaque logement, on veut disposer également de l’adresse, de la superficie ainsi que du
loyer.
Quant aux individus qui occupent les logements (les signataires du contrat uniquement), on se
74
Support de cours de Bases de données Bouziane Abderraouf
Pour chaque commune, on désire connaître le nombre d’habitants ainsi que la distance
séparant la commune de l’agence.
Questions :
Etablir le modèle conceptuel des données correspondant puis le modèle logique associé.
75
Support de cours de Bases de données Bouziane Abderraouf
Les organisateurs d’un cirque veulent monter une base de données pour gérer les réservations
des spectateurs, le choix des numéros et l’organisation des différents spectacles.
Le cirque dure sept jours et chaque demi-journée est consacrée à un spectacle qui regroupe
des numéros portant sur le même thème (magie, acrobaties, dressage d’animaux ...).
L'espace réservé aux spectateurs est divisé en plusieurs zones regroupant des places numérotées.
Le tarif de la réservation dépend de l'endroit de la place et du spectacle choisi.
Chaque numéro proposé est caractérisé par un code, son nom, son thème et sa durée moyenne
en minutes (de 20 à 25 minutes). De plus on souhaite savoir l’instrument utilisé pour les numéros
musicaux, l’animal concerné par les numéros de dressage et le type des acrobaties (équilibrisme,
trapèze volant, …), etc. On maintient aussi le nombre des artistes présents sur scène
Chaque artiste possède un numéro (en général son numéro de carte d’identité), son nom,
son prénom, sa date de naissance, son adresse, le ou les numéros qu’il propose puisque les artistes
sont susceptibles de présenter plusieurs numéros.
Pour chaque spectacle, on garde le code, le thème, le jour, l’heure de début, l’heure de fin,
le président (celui qui anime le spectacle, présente les artistes, etc., c’est un artiste d’un autre
numéro), la liste des numéros du spectacle, avec leur heure de passage et le coût d'entrée
pour le spectacle (tous les spectacles n’ont pas le même coût d’entrée).
Questions :
Exercice 2 : (8 pts)
Un n-uplet (c, p, h, s, e, n) a pour signification que le cours c est fait par le professeur p à l'heure h
Questions :
6) Donner quelques exemples de tuples correspondant à la relation R. (4 exemples)
7) Donner l'ensemble des dépendances fonctionnelles élémentaires engendrées par E.
8) Quelle est la clé de la relation R ? Montrer qu'elle est unique.
9) Quelle est la forme normale de la relation R ? Si elle n'est pas en 3FN proposer une
décomposition en 3FN.
76
Support de cours de Bases de données Bouziane Abderraouf
Questions:
Exercice 2 :
Dans une démarche simplifiée de tenue de stock, des produits (N° Produit, Désignation) sont
fournis par des fournisseurs (N° Fournisseur, Raison sociale, Téléphone). Des bons de
livraisons (N° BonLiv, Date) indiquent les quantités fournies pour chaque produit fourni.
Des clients (N° Client, Raison sociale, Téléphone) peuvent commander différentes quantités
de différents produits. Pour ce faire, ils doivent établir des bons de commandes (N° BonCmd,
Date) indiquant les quantités commandées.
Question :
Quelle(s) est (sont) la (les) dépendance(s) fonctionnelle(s) qu'on peut dégager de cette
description?
Exercice 3 :
77
Support de cours de Bases de données Bouziane Abderraouf
78
Support de cours de Bases de données Bouziane Abderraouf
F = {AB C ; B D ; CD E ; CE GH ; G A}.
Question :
Montrer que :
1) AB E. 2) BG C. 3) AB G.
Exercice 2:
Exercice 3:
79
Partie II :
Bases de donnée réparties
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Chapitre VI
Common Object Request Broker Architecture:
CORBA [GEI 99][ACR 99][HEN 99][BOR]…
VI.1. Introduction
Dans une application distribuée, plusieurs éléments logiciels et matériels sont impliqués, entre
autres, les ordinateurs, les réseaux, les protocoles de communication, etc.
Cela fait que la conception et le déploiement de telles applications sont une tâche difficile,
du moment qu’on doit tenir compte des hétérogénéités des protocoles de communication, des
systèmes d’exploitation, des machines et des langages de programmation.
Plusieurs architectures ont été proposées afin de permettre aux logiciels de coopérer malgré
la différence de langages, d’interfaces et d’environnements d’exécution.
La norme CORBA constitue l’aboutissement actuel de telles architectures. En plus, CORBA
permet la préservation des applications existantes en gardant le noyau (partie critique)
de ces applications et les faire migrer progressivement.
Il est certain que cela va contribuer considérablement dans un investissement visant
la réécriture des applications d’une entreprise en vue d’accéder aux nouvelles technologies
80
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Pour pouvoir fournir les avantages cités ci-dessus, CORBA utilise un bus logiciel
qui :
Est basé sur notion d’interface, où n’est décrite que la partie visible de l’objet serveur.
En plus cette interface constitue un contrat, englobant méthodes et données,
que le serveur s’engage à fournir à ces éventuels clients.
Permet une séparation entre la description de l’interface de l’objet
et de son implémentation.
Est indépendant des langages de programmation. La traduction de cette interface
en un langage particulier est faite en utilisant le compilateur adéquat.
Ainsi, le client qui veut utiliser un objet CORBA se contente de récupérer son interface
(sur une disquette, un bout de papier..) et de se renseigner sur les modalités de son utilisation
(exemple : Objet fournissant la somme de deux nombres ne sera disponible qu’entre 18h
et 20h…..). Hormis cela, il est libre de choisir le langage d’implémentation, le système
d’exploitation d’hébergement, …etc.
81
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
VI.3.1.2. L’ORB
Il constitue le 2eme pole de CORBA. Il complémente le langage IDL dans le processus
d’interopérabilité et fournit, également, les mécanismes permettant aux objets d’inter changer
les messages d’une manière transparente.
L’ORB est défini par un ensemble d’interfaces, plutôt qu’un seul objet. Du point de vue
programmation, il se présente sous la forme d’un fichier que le développeur doit intégrer
à son application (en C++ c’est « CORBA.h »). On distingue deux composants quant
à la macrostructure de l’ORB à savoir :
VI.3.1.2.1. Noyau de L’ORB
A la base des interfaces de l’ORB se trouve son noyau. Il assure le transport des requêtes inter
objet en prenant en charge la couche de communication, les protocoles et les outils
de communication nécessaires.
L’accès à ce noyau se fait à travers des interfaces standard fournies par l’ORB
VI.3.1.2.2. Interfaces de l’ORB
Situées au-dessus du noyau de l’ORB, ces interfaces permettent aux objets clients et serveurs
d’accéder aux fonctionnalités de l’ORB. L’accès à ces interfaces se fait via des APIs
communes aux ensembles des langages de programmation et des systèmes d’exploitation.
Ainsi, pour pouvoir utiliser les services de l’ORB, le développeur doit :
Référentiel Référentiel
d’interfaces d’implémentations
83
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Plusieurs services ont été proposés pour l’exploitation de ce référentiel parmi les quels l’OAD
de VISIBROKER et le démon d’ORBIX (ils sont incorporés à leurs ORB respectifs)
VI.3.2.9. Le noyau de communication
Pour permettre l’interopérabilité, CORBA se base sur le langage IDL et le bus ORB.
Le langage IDL permet, l’interopérabilité au niveau langage de programmation alors
que l’ORB permet l’interopérabilité au niveau protocole de communication.
Plusieurs solutions ont été proposées pour permettre la communication dans un milieu
hétérogène parmi les quelles : [GEI 99]
L’aboutissement actuel est l’utilisation du protocole VIOP qui est basé sur le protocole
TCP/IP et adapté à la norme CORBA.
La figure suivante illustre le déroulement d’une exécution « à la CORBA » :
Interface de l’objet
IOR
1
Stub
2 3 8
client
13 7 9
12
Skelton
6
10
Adaptateur
d’objet
11
D’abord, pour pouvoir communiquer avec le serveur, le client doit avoir une interface IDL
décrivant les fonctionnalités exposées par l’objet serveur. Cette interface contient, entre
84
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
autres, des descriptions des méthodes, des attributs, types d'attributs et des signatures
des méthodes.
La compilation de cette interface donnera naissance à deux modules stub (client) et Skelton
(serveur) qui seront chargés de la partie communication, des applications client et serveur.
Une fois cette infrastructure préparée, le client, à travers l’ORB, récupère une référence
sur l’objet serveur (1) contenant les données nécessaires à l’ORB pour localiser cet objet
distant. Cette référence sera mise à jour automatiquement et implicitement si l’objet change
de site.
Ensuite, le client invoque une méthode disponible dans l’interface de l’objet (2). Une fois
l’invocation faite, la référence de l’objet, l’opération à réaliser ainsi que les arguments
en entrées sont emballés dans une requête par le stub (3) et transmis via l’ORB au serveur
(4).
Une fois la requête arrivée à l’adaptateur d’objet, ce dernier active l’objet en question (5)
selon l’une des stratégies suivantes : [ACR 99]
Activation partagée : un seul serveur est activé par une implémentation donnée,
et ce, quel que soit le nombre de clients.
Activation par client : un serveur est activé par client et est désactivé dès que
le client se déconnecte.
Activation par méthode : un serveur est activé à chaque appel de méthode
et est désactivé à la fin de la méthode.
Une fois l’objet activé, le Skelton reçoit la requête, déballe les informations qui y sont
contenues (6) puis invoque l’objet réel (7). Les informations seront traitées par cet objet (8)
et renvoyées au Skelton (9) qui emballe les résultats (10) et les transfert au client via le bus
CORBA (11). A ce stade le stub déballe ces résultats et les retourne à l’objet appelant.
Si cet appel n’aboutit pas, une exception sera retournée au client. Toute cette panoplie
de transactions se déroule sans que le client s’aperçoive de ces détails.
VI.4.1. DCOM
A l’origine de cette norme se trouvent les objets OLE qui ont donné, par la suite, naissance
aux objets COM. Pour ne pas remettre en cause le modèle COM, DCOM constitue son
extension dans le milieu distribué.
Malgré sa conception pour être utilisé sous différentes plates formes, DCOM est, fortement,
lié à l’environnement Windows ce qui diminue de son efficacité dans le domaine
d’interopérabilité
85
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
1. La définition du contrat IDL : à partir du cahier des charges, il faut définir les objets
composant l’application à l’aide d’une méthodologie orientée objet (e.g. UML). Cette
modélisation est ensuite traduite sous la forme de contrats IDL composés
des interfaces des objets et des types de données utiles aux échanges d’informations
entre les objets.
2. La pré-compilation du contrat IDL : les interfaces des objets sont décrites dans des
fichiers texte. Le pré-compilateur prend en entrée un tel fichier et opère un contrôle
syntaxique et sémantique des définitions OMG-IDL contenues dans ce fichier. Le pré-
compilateur peut aussi charger ces définitions dans le référentiel des interfaces. C'est
la partie frontale commune à tous les pré-compilateurs IDL.
3. La projection vers les langages de programmation : le pré-compilateur IDL génère
le code des souches, qui sera utilisé par les applications clientes des interfaces décrites
dans le fichier IDL, ainsi que le code des squelettes pour les programmes serveurs
implantant ces types. Cette projection est spécifique à chaque langage
de programmation. Un environnement CORBA fournit un pré-compilateur IDL pour
chacun des langages supportés.
4. L'implantation des interfaces IDL : en complétant et/ou en réutilisant le code généré
pour les squelettes, le développeur implante les objets dans le langage de son choix.
Il doit tout de même se plier aux règles de projection vers ce langage.
5. L'implantation des serveurs d'objets : le développeur doit écrire les programmes
serveurs qui incluent l'implantation des objets et les squelettes pré-générés.
Ces programmes contiennent le code pour se connecter au bus, instancier les objets
racines du serveur, rendre publiques les références sur ces objets à l'aide par exemple
du service "Nommage" et se mettre en attente de requêtes pour ces objets. Le nombre
de programmes serveurs est tout de même souvent limité.
6. L'implantation des applications clientes des objets : le développeur écrit un ensemble
de programmes clients qui agissent sur les objets en les parcourant et en invoquant des
opérations sur ceux-ci. Ces programmes incluent le code des souches, le code pour
l'interface Homme-Machine et le code spécifique à l'application. Les clients
obtiennent les références des objets serveurs en consultant le service Nommage. Il faut
tout de même souvent développer une multitude de programmes clients des objets
en fonction des rôles et des activités de chacun des utilisateurs de l’application
répartie.
7. L'installation et la configuration des serveurs : cette phase consiste à installer dans
le référentiel des implantations les serveurs pour automatiser leur activation lorsque
des requêtes arrivent pour leurs objets.
8. La diffusion et la configuration des clients : une fois les programmes clients mis au
point, il est nécessaire de diffuser les exécutables sur les sites de leur future utilisation
et de configurer les sites clients pour qu'ils sachent où se trouvent les serveurs utilisés.
9. L'exécution répartie de l’application : enfin, l'exploitation de l’application peut
commencer. Le bus d'objets répartis CORBA assure alors les communications entre
les programmes clients et les objets via le protocole VIOP.
86
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Chapitre VII
CORBA et les bases de données
VII.1. Introduction
Les bases de données sont un moyen efficace pour l’enregistrement de l’information.
Elles constituent un environnement capable de recevoir des données structurées selon
des conceptions définies par l’utilisateur et sont exploitées par un système offrant, entre
autres, un LDD et un LMD.
Plusieurs types de bases de données sont utilisés, parmi elles, les bases de données
relationnelles et les bases de données orientées objet.
Néanmoins, la mise en place des bases de données, dans un milieu réparti, nécessite la prise
en charge des problèmes liés à la distribution. Notamment ceux de l’hétérogénéité des plates
formes utilisées et la transparence de traitement.
Une fois la base de données conçue pour un contexte réparti, CORBA, apporte des solutions
aux problèmes déjà cités, tout en offrant les apports du paradigme orienté objet.
Dans ce qui suit, nous allons définir les bases de données relationnelles. Nous allons détailler
le mapping de l’orienté objet VIIers le relationnel. Nous VIIerrons, enfin, le concept de
systèmes multi-bases de données et quelques concepts liés aux bases de données réparties.
Basé sur des théories mathématiques, le modèle relationnel fournit des opérateurs de l'algèbre
relationnelle permettant la manipulation des données, et qui se résument en : [YOL 02]
87
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Ces opérateurs sont exploités par des langages spécifiques incorporables dans les langages
de programmation de haut niVIIeau. Parmi ces langages, on retrouve le SQL (Structured
Query Language) qui est à la fois :
Un système est dit minimalement relationnel s'il satisfait aux conditions suivantes :
• Toute information dans la base est représentée par des valeurs dans des tables.
• Il n'y a pas de pointeurs visibles, par l'utilisateur, entre les tables.
• Le système doit supporter, au moins, les opérateurs relationnels de restriction
et de projection.
Un système est dit complètement relationnel s'il satisfait, en plus, aux conditions
suivantes :
• Il supporte tous les opérateurs de l'algèbre relationnelle.
• Il supporte la contrainte d'unicité de clé d'une relation.
• Il supporte les contraintes référentielles qui permettent de s'assurer que la valeur
d'une donnée d'une relation existe dans une autre relation (notion de foreign key).
88
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Par exemple, si une classe possède beaucoup d’instances, parmi lesquelles peu sont souvent
référencées, le découpage horizontal peut améliorer l’efficacité en plaçant les objets aux quels
on accède fréquemment dans une table et le reste dans une autre table.
De la même façon, si une classe possède des attributs avec des configurations d’accès
différentes, il peut être utile de partitionner les objets verticalement
Code_mach Désignation
721 Boutonneuse
525 Auto-platine
Partition 432 Offset
verticale
Code_mach Section
721 sacherie
525 boite
432 boite
Modèle Equipement
Objet
Code _mach
Désignation
Section
89
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Dans la figure 2, un objet d’une classe se convertit en une table. La classe équipement
possède les attributs(Code_mach, Désignation, Section ). Le modèle de table liste
ces attributs.
Exemple :
contient
Modèle Equipement Article
Objet 1..* 1..*
Code_mach Code_Art
Design Design
section stock
R7
Qt
Fig V-22. Traduction des associations binaire avec classe association en tables
90
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
1..* 1..*
Modèle Intervention Operation
objet
N°BT Code_op
Instance Design
D_émission Mode_op
1..*
Intervenant
Code_intrv
nom
Table :BON
BON
Date
Date enregistré
Enregistré
Modèle Objet Modèle Table
91
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Dans l’application GMAO, les super-classes sont abstraites. Nous avons dupliqué leurs
attributs dans chaque table de sous-classe.
Exemple :
Table :BRG
BON
Clé :NumBRG
Date
Date
enregistré
Enregistré
Modèle Objet Modèle Table
Table :BSM
92
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Autonomie : conséquence directe de l’indépendance des sites. Elle est nette dans
les aspects suivants :
• Conception : aucun changement ne peut être fait sur la conception initiale
des SGBD locaux.
• Exécution : les SGBD locaux gardent un contrôle total sur tout ce qui s’exécutent
sur leurs sites sans interférence avec les opérations provenant de l’extérieur.
Hétérogénéité : conséquence de la diversification des outils utilisés, exemple :
les SGBD locaux, les systèmes d’exploitation, les systèmes de communication,
le matériel, etc.
Distribution : due à la préexistence des bases de données situées dans des sites
distants.
93
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
BD Globale
BD BD BD
Locale1 Locale2 Locale n
BD Globale
BD BD BD
Locale1 Locale2 Locale n
94
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Dans l’étude du cas GMAO, nous avons adopté l’approche descendante. Nous avons fait,
d’abord, une conception globale du système, permettant de maintenir une vision unique
de la base de données. Ensuite nous avons élaboré pour chaque site, le schéma conceptuel
local correspondant.
Les figures suivantes illustrent l’aspect logique global du système GMAO et ses aspects
locaux.
LANCEMENT PREPARATION
EXECUTION MAGASIN
95
PARTIE II : Bases de donnée réparties Bouziane Abderraouf
Pour ce faire, le concepteur doit envelopper ses opérations distantes par une couche CORBA,
fournissant, ainsi, un SGBD réparti.
96
Partie III :
Etude de cas : La GMAO
répartie
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
PARTIE III
La GMAO répartie
D ans cette 2eme partie nous verrons l’étude d’un système GMAO réparti.
La conception orientée objet de ce système est faite selon une approche descendante
en utilisant UML.
D’abord, au chapitre VIII et après avoir cerné le champ d’étude par le diagramme de flux
de données, nous entamerons une conception détaillée de ce système, comme s’il était utilisé
dans un seul site, cela permet de cerner d’avantage le champ d’étude, et permet aussi
de recenser les contraintes d’intégrité et de cohérence du système, nous verrons entre autres :
l’aspect logique du système via le modèle de paquetage, et nous verrons aussi, le diagramme
de classes, le détail de ces classes, un modèle dynamique, et enfin, la traduction du modèle
statique en modèle de tables.
Ensuite, au chapitre V, nous entamerons une conception détaillée du système pour chaque
poste de travail. Pour ce faire, nous le restructurons d’abord en paquetages correspondants
à ces postes, puis, pour chaque poste, nous établirons le schéma conceptuel local, ainsi que
quelques diagrammes de séquences importants.
Enfin, et après avoir passé en revue quelques concepts liés aux bases de données objets,
relationnelles et réparties, nous détaillerons, dans le chapitre VI, le GMAO* net et nous
verrons, entre autres, les paramètres qui nous ont permis l’optimisation de cet outil.
L’intégration de CORBA est faite à ce stade, après identification des aspects répartition
du système GMAO, nous donnerons le code IDL correspondant aux fonctions
du GMAO* net, ainsi qu’un exemple d’implémentation d’une de ses fonctions.
Mots-clefs
CORBA, GMAO répartie, GMAO* net, UML, approche descendante de conception de bases
de données réparties, schéma conceptuel global, schéma conceptuel local.
97
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Chapitre VIII
Conception de l’application par UML
VIII.1. Introduction
En 1985 M.Gabriel et Y.Pimor définissent la gestion de la maintenance assistée par ordinateur
en ces termes :
Un système informatique de management de la maintenance est un logiciel organisé autour
d’une base de données permettant de programmer et de suivre sous les trois aspects
techniques, budgétaire et organisationnel, toutes les activités d’un service de maintenance
et les objets de cette activité (Service, ligne, atelier, machine, équipement, sous-ensemble,
pièce, …etc.), à partir de terminaux disséminés dans les bureaux techniques, atelier,
magasins et bureaux d’approvisionnement.
98
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Fonction méthodes.
Fonction ordonnancement.
Fonction préparation.
Fonction exécution.
Gestion des stocks et magasinage.
Gestion des coûts.
Comptabilité analytique.
Documentation de la maintenance.
La répartition de ces fonctions sur les postes de travail peut différer d’une entreprise
à une autre et cela selon leurs organisations. Dans notre cas, nous avons fait l’étude
de la fonction maintenance d’une entreprise locale où :
99
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Poste préparation
Poste Lancement et
ordonnancement BT à préparer (2) Préparation des
Poste de BT (1) travaux.
Création d’un Etablissement des
Production nouveau BT. BSM.
Lancement des BT. BT préparé Consultation Stock.
Archivage.
+ BSM (3) Initialisation des
données
BT à exécuter
+
BSM (4)
100
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
GMAO
Poste lancement
et
ordonnancement
Poste
préparation
<<Actor>>
utilisateur
Poste exécution
Poste
magasinier
Diag IV-13. Diagramme des cas d’utilisation pour l’aspect global du système GMAO
Pièces de Maintenance
rechange
Avant de détailler ces 2 paquetages, nous allons voir, d’abord le diagramme classes
associations suivant qui donne une vue d’ensemble de l’architecture du système GMAO.
101
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Faite sur
Intervenant
Opération Intervention
R6
R1
BON
ARTICLE
R2
Est Est
un un
R7/R8
BRG BSM
Contient
Contient Envoie
Fournisseur
Organe Equipement Article BON
Contient
Est Est
un un
R9/R10/R11
102
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Maintenance :: 1 0..1
Intervention
BON Article
1..* {Abstract}
1..*
R7/R8
Maintenance ::Article BRG BSM
1..*
1..* 1..*
Fournisseur
BON
R9/R10/R11 {Abstract}
1 1 1 1
Livraison Facture Commande
R6
R2
R1
0..1
PDR ::Bon Article 1..*
{Abstract} PDR ::
R9/R10/R11
1..*
PDR ::R7/R8
1..* 1..* 1..* 1..*
1..*
1..*
1..* 1..* PDR ::BON
Organe Equipement Article
1..* {Abstract}
1..*
1
103
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Equipement Commande
Code_mach : String {id} NumCMD: String {id}
Facturée: BOOL
Design : String
Date_miseser :Date Enregistrercmd(Numbon : String,date: Date, Code_four: String )
Section: String Enregistrerbon(Numbon : String )
Listemachine()
EnregistrerMach(Code_mach: String, Design: String)
Intervenant
Code_int: String {id}
Organe
Nom : String
Code_org: String {id} Prenom: String
Design: String
EnregistrerIntrv(Code_int : String, Nom:String ,Prenom : String)
Listeorgane()
EnregistrerOrg(Code_org: String, Design: String)
Article
Code_Art : String {id}
Fournisseur Design : String
Stock : double
Code_Four : String {id} Stock_fict: double
Nom : String
Tel: String Afficherlisteart()
EnregisterArt(Code_Art: String,Design: String)
EnregistrerFour(Code_Four : String, Nom : String,tel : String) SoustraireArtBSM(Code_Art: String,Qt: double)
AddArtBRG(Code_Art: String,Qt: double)
Operation
BRG
Code_op: String {id}
Design: String
Mode_op: String
EnregistrerBon(Numbon : String, date : Date)
EnregistrerBon (Numbon : String)
Afficherop()
Affichermodeop(Code_op: String)
Enregistrerop-( Code_op: String, Design: String Mode_op: String)
Facture Bon
Reception BSM
EnregistrerBL (Numbon : String ,date: Date, NumFACT: String) EnregistrerBon(Numbon: String, date: Date)
Enregistrerbon(Numbon: String) EnregistrerBon(Numbon: string)
104
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Bon article
{Abstract}
Numbon:string {id}
date: Date
Enregistre : BOOL
Intervention
R1 R3
NumBT : String {id} Code_mach: String {id}
Code_op: String {id} Code_org: String {id}
Code_org: String {id}
LierequipOrg(Code_mach: String,Code_org: String)
Enregistrer(NumBT:String,Code_op:String,Code_org:String)
R2
R4
NumBT: String {id}
Code_op: String {id} Code_mach: String {id}
Code_Art: String {id} Code_Art: String {id}
105
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
R6
NumBT : String {id}
Code_op: String {id}
Code_intrv: String {id}
EnregistrerBT(NumBT:string,Code_op:string,Design_op:string,Code_intrv:string)
Avoirlisteop(NumBT:string)
EnregistreropBT(NumBT:string,Codeop:string,Realiser: BOOL,Hdebut:Date,Hfin:Date)
R7 R8
Numbon : String {id} Numbon: String {id}
Code_Art : String {id} Code_Art: String {id}
Qt : double Qt: double
R9
Numbon : String {id}
Code_Art: String {id}
Qt: double
R10
Numbon : String {id}
Code_Art : String {id}
Qt : double
R11
Num_Fact: String {id} R5
Code_Art: String {id}
Qt: double Code_org: String {id}
Code_Art: String {id}
AjouterArttempfact(Code_Art: String,Qt: double, Prix_u : double)
SuppArttempfact(Code_Art : String,Qt: double, Prix_u : double) Lierorgart(Code_org: String,Code_art: String)
EnregistrerArtFact(Num_Fact,Code_Art:String,Qt:double,Prix_u: double)
106
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Bon article
Intervention
NumBon
Code_Mach
Equipement
Commande
Facture
NumBon
Code_Four Fournisseur
Réception
Facture
NumFact
Exemple :
Article
Code_Art : String {id}
Design : String
Article
Stock : double
Stock_fict: double Code_Art : String {id}
Design : String
Stock : double
Afficherlisteart()
Stock_fict: double
EnregisterArt(Code_Art: String,Design: String)
SoustraireArtBSM(Code_Art: String,Qt: double)
AddArtBRG(Code_Art: String,Qt: double)
107
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Création( )
Instance préparation
Enrichissement( )
[Quantité non
suffisante]
En cours [nécessite Article] Bon en attente
d’enrichissement
Lancement( )
[Article à réintégrer]
Instance exécution Instance BRG
108
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
PREPARATION
LANCEMENT
REMOTE PERSISTANCE
IHM
EXECUTION MAGASIN
Diag IV-19. Diagramme de composant pour les aspects locaux du système GMAO
Le diagramme ci –dessus, montre que le système GMAO est décomposé en sept domaines :
Domaine REMOTE : Les classe contenues dans ce domaine, définissent les outils
permettant l’exécution des fonctions distantes tout en garantissant la transparence du
système de communication sous-jacent et en palliant au problème d’hétérogénéité des
systèmes distribués utilisés.
Domaine PERSISTANCE : Ce domaine regroupe les classes permettant la
sauvegarde des informations sur une base de données persistante.
Domaine IHM : Les classes de ce domaine permettent de donner un aspect de
convivialité au logiciel GMAO, que nous avons réalisé
Les domaines EXECUTION, PREPARATION, LANCEMENT et MAGASIN
contiennent les classes permettant l’exploitation du système GMAO dans les différents
postes de travail correspondants.
109
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Enrichissement Intervenant
Des BT(s)
Equipement
Etablissement
BSM Lien
équipement/organe
Consultation Organe
stock <Actor>
<<Actor>> Préparation
Préparation Consultation Article
BSM
opération
Envoi BT à l’agent Lien
de lancement équipement/article
Lien
Historique Organe/article
machine
Diag IV-20. Diagramme des cas d’utilisation poste Diag IV-21. Diag des cas d’utilisation poste préparation
préparation (Initialisation des données)
Diagramme de classes-associations
Faite sur
intervenant
opération intervention
R6
R1 BON ARTICLE
R2
{Abstract}
R7
Contient Est
un
110
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Diagrammes de séquences
click
EnregistrerBon (Numbon, date)
BSM enregistré
BSM enregistré
IHM : R7 :Article
: Intervention
click
BSMFromBT(NumBT)
Retour Numbon
AfficherArtBSM(Numbon)
[BSM satisfiable ]
modifierinstance(NumBT,instance) liste BT non vide
Prend BT suivant]
instance modifiée
111
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Click
Listemachine( )
Liste affichée
Liste affichée
AfficherBTréaliser(Code_mach)
Avoirlisteop(NumBT)
Afficher Trav_Hors_BT(NumBT)
Information affichée
IHM : : Organe : R3
Equipement :
Click
listemachine( )
listeorgane( )
Liste organes affichée
LierequipOrg(Code_mach,Code_org)
Lien établi
112
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Click
listemachine( )
Afficherlisteart( )
LierequipArt( Code_mach,Code_Art)
Lien établi
Click
listeorgane( )
Afficherlisteart( )
Lierorgart(Code_org,Code_Art)
Lien établi
113
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Lancement BT
<<Actor>>
agent de
lancement
Création BT
114
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Diagramme de classes-associations
Enrichissement
des BT(s)
<<Actor>>
Exécution
Etablissement
BRG
Diagramme de classes-associations
R6
opération intervention
BON ARTICLE
Article {Abstract} BRG
Est un
R6
115
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Diagramme de séquences
IHM : Intervention : R6
Click
enregistrerBT(NumBT, Trv_Hors_BT,Instance)
BT enregistré
EnregistreropBT(NumBT,Code_op,Realiser,H_debut , H_fin)
Opération enregistrée
Etablissement bon
de commande
Etablissement bon
de réception
<<Actor>> Etablissement
magasinier facture
Enregistrement
BSM
Enregistrement
BRG
116
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Diagramme de classes-associations
BON ARTICLE
{Abstract}
Est Est
un un
R7/R8
BRG BSM
Envoie
Fournisseur
Article BON
{Abstract}
Est Est
un un
R9/R10/R11
Diagrammes de séquences
Click
EnregistrerFACT(NumFact, date,CodeFour,Numbon)
Facture enregistrée
Enregistrerbon(Numbon)
Commande enregistrée
117
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Click
118
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Chapitre IX
GMAO* net, un LMD réparti orienté objet
IX.1. Introduction
Dans ce qui suit nous allons présenter l’outil qui permet l’exploitation de l’architecture
détaillée dans le chapitre IV, cet outil, baptisé GMAO* net, comprend les fonctions
invocables à distance par les intervenants dans le système GMAO.
Il peut être assimilé à un LMD d’un SGBD. De plus le GMAO* net, est un LMD à la fois
réparti et orienté objet du moment que ses fonctions sont réparties sur plusieurs postes,
invocables à partir des méthodes appartenants à des classes d’objets et, aussi, traitant des
objets.
Avant de présenter les fonctions du GMAO* net, il est commode de décrire les étapes
qui nous ont menées à leur réalisation, pour ce faire nous allons, d’abord, identifié les aspects
répartition du système GMAO, ensuite nous allons optimiser le rendement des fonctions
distantes utilisées en se référant aux critères de performances des algorithmes répartis, déjà
énoncés dans la première partie de ce mémoire
Ainsi, chaque utilisation multiple d’une table signifie l’existence d’au moins une fonction
distante, parce que la table en question sera logée, pour des raisons de cohérence et intégrité
des informations, exclusivement dans un seul poste.
La traduction des différents schémas conceptuels locaux vers le modèle relationnel, a présenté
l’existence de plusieurs tables communes entre les différents postes du système GMAO,
ce qui a donné une première vue sur les fonctions qui seront utilisées à distance.
Le tableau suivant récapitule l’utilisation des tables dans les différents postes :
119
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
120
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
les consultations, car nous pensons qu’une mise à jour est plus importante qu’une
consultation.
Pour ce faire nous avons défini les tables à utiliser dans chaque poste ainsi que le nombre de
consultations et de mises à jour à effectuer.
Les tables
Intervention 2 2
Article 1 0
R8 0 1
BRG 0 1
R6 1 1
121
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
122
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
123
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Intervention
Mise à jour du instance
Originale
dans la table intervention
124
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Article
Etablissement Consultation (avoir) le code Code + désignation
article + design dans la table Dupliquée +stock fictif
BSM Article
Envoi des BT
A l’agent Mise à jour du stock fictif
Lancement dans la table article si le
Article Originale
BSM est satisfaisable
125
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Table
Les services fournis Poste demandeur
servante
126
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
IN : N°BSM, Date
OUT : Message adéquat
IN : N°BRG , Date
OUT : Message adéquat
127
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Interface maj
{
// enregistrer un new BT
string newBT (in string numBT, in string priorite, in string codemach, in string demiss, in
string hemiss, in string naturtrv, in string trvdmd);
Interface consultation
{
// les 2 fonctions de réception des infos
sequencebt recevoirBT ( );
sequencemachine recevoirmach ();
};
};
128
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
interface consultation
{
// la fonctions de réception des infos
sequencebsm recevoirBSM (in string numBSM);
};
};
typedef sequence<operation>sequenceop;
struct opbt
{
string numBT;
string trvhorsBT;
string instance;
boolean realise;
string codeop;
string hdebut;
string hfin;
};
typedef sequence<opbt>sequence3;
129
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Interface maj
{
// enrichir BT , table intervention
void enrichirBT (in string numBT );
Interface consultation
{
// les 2 fonctions de réception des infos
sequence1 recevoirBT (in string instance);
sequence2 recevoirmach ( );
};
};
Iinterface maj
{// enregistrer BRG, table BRG
void saveBRG (in string numBRG, in string dBRG);
}
Interface consultation
{
// la fect de reception des infos
sequencearticle recevoirart ();
};};
130
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
interface consultation
{
// la fect de reception des infos
sequencebrg recevoirBRG (in string numBRG);
};
};
Après dérivation de ces classes, nous aurons les classes Impl_maj et Impl_consultation, qui
contiendront des fonctions à corps vides parmi lesquelles, la fonction
« sequencebt recevoirBT ( ) » .
sequencebt recevoirBT ( )
{
sequencebt Intervention :: recevoirBT ( ) ;
}
131
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
struct BT
{
string numBT;
string priorite;
};
Num BT Priorité
00001 1
000002 2
005552 2
….. …..
8888 3
6588 5
6999 4
132
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
1. La fonction à invoquer est locale : Dans ce cas le système GMAO interroge le SGBD
local qui, à son tour accède à la base de données locale et fournit le résultat demandé.
2. La fonction à invoquer est distante : Dans ce cas le système GMAO interroge
le GMAO* net qui, à son tour accède à la base de données distante et fournit
le résultat demandé. L’accès à la base de données distante se fait via l’ORB CORBA
et en se référant à la localisation de la table distante.
User X User Y
Schéma Schéma
conceptuel CORBA CORBA conceptuel
local X local Y
GMAO GMAO
GMAO* net
SGBD SGBD
local x local y
Localisation Localisation
des tables des tables
distantes distantes
BDL X BDL Y
133
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Les fenêtres ci après montrent le chemin emprunté par un BT, depuis sa création jusqu’à
sa réalisation.
134
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
135
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Le BT passe finalement de l’état exécution à l’état réalisé et il sera disponible pour une
éventuelle consultation.
136
PARTIE III : Etude de cas : La GMAO répartie Bouziane Abderraouf
Conclusion
A travers cette partie nous avons vu que l’introduction de CORBA vient après la conception
de l’application.
Malgré les facilités offertes par CORBA en matière d’interopérabilité, il est évident que cette
dernière ne peut, en aucune manière, résoudre les problèmes relevant du niveau conceptuel.
Alors, pour utiliser CORBA, il faut d’abord arranger l’infrastructure conceptuelle pour
une utilisation répartie. En plus, cette conception doit être adéquate à une configuration
client/serveur.
Dans le domaine des bases de données réparties, CORBA joue le rôle de composante
de communication. Cette dernière est indispensable pour envelopper les fonctions du SGBDR
(Système de Gestion de Bases de données Réparties).
Ainsi, une bonne conception répartie associée à CORBA tirera, davantage, profit
des systèmes distribués.
137