| ||||||||||||
|
SOMMAIRE Chapitre
1 : PRESENTATION GENERALE
2.INTRODUCTION AUX BASES DE DONNEES
Chapitre
3 : PRESENTATION DE L’APPLICATION
3. SPECIFICATION DE L’APPLICATION
3.2
LA GENERATION DE LA REQUET
E Chapitre
4 : CONCEPTION DE L’APPLICATION
2. ARCHITECTURE DE L’APPLICATION
3. CONCEPTION DES DIFFERENTES COMPOSANTES
2. CHOIX DU LANGAGE DE PROGRAMMATION
3. ENVIRONNEMENT DE REALISATION
INTRODUCTIONLes bases de données présentent une solution idéale pour le stockage et la manipulation des données. Mais beaucoup de gens ne peuvent pas tirer profit des avantages des bases de données du fait de leurs connaissances limitées du langage SQL nécessaire à la définition et la manipulation des bases de données. Ce travail s’intéresse à la génération visuelle de requête SQL pour fournir un outil capable de faciliter la création de requête à partir d’un interface graphique permettant ainsi aux utilisateurs une meilleur exploitation de leurs bases de données sans avoir obligatoirement une connaissance avancée du langage SQL. La
partie théorique de ce travail comporte une présentation des bases de données,
du langage SQL ainsi que l’étude de quelques outils existant
permettant la génération visuelle de requêtes.
PRESENTATION GENERALE
1. INTRODUCTION Etant
donnée que ce stage sera réalisé au sein d’une entreprise, il est de plus
fondamentale d’avoir une idée sur cette dernière, ses champs d’actions,
son organisation ainsi que ses différents services. Nous allons présenter
aussi dans ce chapitre le porjet dans sa globalité. 2.
PRESENTATION DE LA SOCIETE
INFOMEDIA est une jeune équipe tunisienne d'ingénieurs informaticiens et infographistes, spécialisés dans la conception d'applications multimédias, de sites web et de documentations électroniques. Les principaux outils de développement utilisés actuellement par INFOMEDIA sont les standards du marché :
Compte tenu de son implémentation en Tunisie, INFOMEDIA bénéficie
des coûts de développement compétitifs, de la maîtrise de la langue française
et de la proximité de l'europe. Ces atouts sont en train de faire de la Tunisie
le partenaire privilégié de l’Europe dans le domaine informatique. Organisation :
L'équipe INFOMEDIA est constituée de jeunes ingénieurs informaticiens regroupant toutes les compétences indispensables et managés par un chef de projet qui est l’interlocuteur privilégié de ses clients et le gérant de qualité de ses interventions. Services :
INFOMEDIA met à la
disposition de ses clients une offre globale et intégrée de services qui couvrent toutes
les étapes indispensables à l'implantation de leurs projets.
Ce projet, nommé ‘Query Editor’, fait partie d’une application développée par la société INFOMEDIA pour le compte de son partenaire européen ESUAL SOFTWARE dans le cadre de la réalisation d’une plate-forme de développement sur le net. Il consiste à réaliser un générateur visuel de requêtes SQL à partir d’un environnement graphique permettant ainsi une meilleure maîtrise des bases de données même en absence de connaissances approfondie du langage SQL de la part de l’utilisateur. ETUDE THEORIQUE1.INTRODUCTION
Avant de se lancer dans la réalisation
de ce projet, il nous semble opportun de présenter quelques notions utiles pour
une meilleure compréhension de ce travail. Ce chapitre présente d’abord une
brève introduction aux bases de données puis
du langage SQL nécessaire à la définition et la manipulation des bases de
données. Enfin, une étude des outils similaires existant permettant la génération
visuelle de requêtes SQL. 2.INTRODUCTION AUX BASES DE DONNEES
2.1 Qu'est-ce qu'une base de données?
Une
base de données est une entité dans laquelle il est possible de stocker des
données de façon structurée et avec le moins de redondance possible. Ces données
doivent pouvoir être utilisées par des programmes, par des utilisateurs différents.
Ainsi, la notion de base de données est généralement couplée à celle de réseau,
afin de pouvoir mettre en commun ces informations, d'où le nom de base.
On parle généralement de système d'information pour désigner toute la
structure regroupant les moyens mis en place pour pouvoir partager des données.
2.2 Utilité d'une base de données? Une base de données permet de regrouper des données au sein d'un même enregistrement. Cela est d'autant plus utile que les données informatiques sont de plus en plus nombreuses. Une
base de données peut être locale, c'est-à-dire utilisable sur une machine par
un utilisateur ou bien répartie, c'est-à-dire que les informations sont stockées
sur des machines distantes et accessibles par réseau. L'avantage majeur
de l'utilisation de bases de données est la possibilité de pouvoir être accédées
par plusieurs utilisateurs simultanément. 2.3 La gestion
des bases de données
Afin
de pouvoir contrôler les données ainsi que les utilisateurs, le besoin d'un
système de gestion s'est vite fait ressentir. La gestion de la base de données
se fait grâce à un système appelé SGBD (système de gestion de bases de données). Le SGBD est un
ensemble de services (applications logicielles) permettant de gérer les bases
de données, c'est-à-dire:
Le
SGBD peut se décomposer en trois sous-systèmes:
C’est
au SGBD que sont adressées les requêtes d’insertion, de modification ou de
consultation de données. Ces requêtes sont écrites dans un langage universel
compréhensible par n’importe quel SGBD : C’est le langage SQL. 3.
LE LANGAGE SQL
Le langage SQL (Strctured Query Language) fut développé initialement au milieu des années 70. A cette époque, le monde informatique avait besoin d'un langage d'accès aux données solide et universel, car on préparait alors des systèmes à architecture client-serveur autorisant la communication entre clients et serveurs à priori incompatibles. Seul un langage unique et standard pouvait permettre cette inter-communication. Bien que la première norme
du langage SQL date de 1986, elle restait très insuffisante. La norme de 1989
ne corrigea pas ces erreurs, et il fallut attendre la dernière norme, dite
SQL-92 ou SQL-2 pour avoir une véritable référence (Pour preuve le texte de
la norme est passé de 100 pages à 600 pages !). SQL est un langage de définition
de données (LDD),
c'est-à-dire qu'il permet de créer des tables dans une base de données
relationnelle, ainsi que d'en modifier ou en supprimer de plus, SQL est un
langage de manipulation de données (LMD),
cela signifie qu'il permet de sélectionner, insérer, modifier ou supprimer des
données dans une table d'une base de données relationnelle enfin, il est
possible avec SQL de définir des permissions au niveau des utilisateurs d'une
base de données. On parle de DCL
(Data Control Language). 3.1 Typologie du
langage
Il est possible d'inclure
des requêtes SQL dans un programme écrit dans un autre langage (en JAVA par
exemple), ainsi que d'envoyer directement les requêtes SQL telles quelles au
SGBD. Il
est possible d'ajouter des commentaires grâce:
Le langage SQL n'est pas
sensible à la casse cela signifie que l'on peut aussi bien écrire les
instructions en minuscules qu'en majuscule. Toutefois, cette insensibilité à
la casse n'est que partielle dans la mesure où la différenciation entre
minuscules et majuscules existe au niveau des identificateurs d'objets. 3.2 SQL et un
langage de manipulation de données
Le SQL est
à la fois un langage de manipulation de données et un langage de définition
de données. Toutefois, la définition de données est l’œuvre de
l'administrateur de la base de données, c'est pourquoi la plupart des personnes
qui utilisent le langage SQL ne se servent que du langage de manipulation de
données, permettant de sélectionner les données qui les intéressent. La
principale commande du langage de manipulation de données est la
commande « SELECT » et c’est d’ailleurs la commande qui
nous intéresse dans l’élaboration de ce travail. 3.3 Syntaxe de la commande ‘SELECT’La commande ‘SELECT’
est basée sur l’algèbre relationnelle, en effectuant des opérations de sélection
de données sur plusieurs tables relationnelles par projection. Sa syntaxe est
la suivante: SELECT [ALL] | [DISTINCT]
<liste des noms de colonnes> | * FROM <Liste des
tables> [WHERE <condition
logique>] Il existe d'autres options pour la commande ‘SELECT’:
GROUP BY, HAVING, ORDER BY L'option ALL
est, par opposition à l'option ‘DISTINCT’, l'option par défaut.
Elle permet de sélectionner l'ensemble des lignes satisfaisant à la condition
logique L'option DISTINCT
permet de ne conserver que des lignes distinctes, en éliminant les doublons La liste des noms de colonnes
indique la liste des colonnes choisies, séparées par des virgules. Lorsque
l'on désire sélectionner l'ensemble des colonnes d'une table il n'est pas nécessaire
de saisir la liste de ses colonnes, l'option *
permet de réaliser cette tâche La liste des tables indique l'ensemble des tables (séparées par des virgules) sur
lesquelles on opère La condition logique permet d'exprimer des qualifications complexes à l'aide d'opérateurs
logiques et de comparateurs arithmétiques 4. ETUDE DE
L’EXISTANT
Notre
application consiste à développer un outil de génération visuel de requête
SQL. Un des plusieurs logiciels offrant cette fonctionnalité est Microsoft
Access qui contient un outil graphique de création de requête. Nous avons donc
commencé par une étude des différentes fonctionnalités offertes par MS
Access. 4.1 Fonctionnalités
offertes
L’outil de génération visuel de requêtes SQL de Microsoft Access permet de créer quatre types de requêtes : v
Requête de sélection v
Requête paramétrée v
Requête analyse croisée v
Requête action (requêtes Création
table, Suppression, Mise à jour, Ajout) De
plus Microsoft Access permet la visualisation des différentes tables qui
constituent la base de données ainsi que les différents liens entre ces tables
tout en précisant le type de chaque lien. Microsoft
Access offre une interface graphique agréable et fonctionnelle permettant à
l’utilisateur une manipulation aisée de ces bases de données(Figure1).
Figure 1 :
Interface de création de requête de Microsoft Access 4.2 Critiques dégagés
Après cette brève étude de l’outil de génération de requêtes SQL de Microsoft Access, on a put dégager deux critiques principales. D’abord, cet outil ne fonctionne qu’avec un SGBD Access et il ne peut en aucun des cas communiquer avec un autre type de bases de données. De plus, la portabilité de cet outil n’est pas assuré en effet il ne tourne que sur un environnement WINDOWS. PRESENTATION
DE L’APPLICATION
1.
INTRODUCTION
Après
avoir étudier quelques outils existants permettant la génération visuelle de
requête SQL, nous entamons dans ce chapitre la spécification de notre propre
application. Ce chapitre comprendra donc une présentation du but de
l’application, des différentes fonctionnalités offertes au niveau de
l’interface utilisateur et une spécification détaillée des entrées-sorties
du système. 2. BUT DE
L’APPLICATION
Le
but de cette application, comme son nom l’indiquait déjà, et la génération
visuelle de requêtes SQL et précisément
de requêtes de type ‘SELECT’. Elle permet en outre à l’utilisateur
de visualiser l’ensemble des tables constituant sa base de données, les différents
liens existant entre ces tables et de choisir pour chaque table l’ensemble des
champs à introduire dans la requête avant de pouvoir afficher le texte SQL de
la requête. Notons que cette
application a pour but aussi de pouvoir s’intégrer correctement dans
l’ensemble du travail de l’équipe pour former une application cohérente répondant
parfaitement au besoin de la société et de ces partenaires européens. De plus la portabilité du
système doit être conservé, en effet cette application doit avoir la
possibilité de tourner sur n’importe quelle plate-forme : Windows, Unix
ou autre et de communiquer avec n’importe quel DGBD. 3.
SPECIFICATION DE L’APPLICATION
Une fois les buts fixés, nous passons à la spécification des différentes composantes de notre application qui se compose de deux parties essentielles qui sont l’interface utilisateur responsable de la collection d’information nécessaire à la construction de la requête et une autre partie responsable de la génération de cette dernière. 3.1 L’INTERFACE GRAPHIQUEAvant de pouvoir spécifier l’interface utilisateur que le système doit offrir, il nous semble opportun de rappeler que ce travail s’intègre dans le cadre d’un projet mené par la société INFOMEDIA et de ce fait l’interface utilisateur va lui aussi être intégrer dans l’ensemble du travail de l’équipe. Le système doit fournir
une interface forme de trois parties : une première partie pour
l’affichage des tables, une deuxième partie consacré à l’affichage
d’une table contenant les champs sélectionnes par l’utilisateur ainsi que
l’ensemble des critères de sélection souhaités et enfin une troisième
partie pour l’affichage de la requête SQL(figure 2).
Figure 2:
Spécification de l’interface utilisateur 3.1.1
L’affichage des tables
Pour afficher l’ensemble des tables désirées à partir de celles constituant la base de données, l’utilisateur positionne le curseur de la souris dans la partie consacré à l’affichage des tables et clique sur le bouton droit de la souris. Une fenêtre contenant les noms de toutes les tables de la base apparaît sur l’écran. L’utilisateur n’a donc qu’à sélectionner le nom de la table et valider pour que celle-ci s’affiche sur l’écran dans la partie consacré à cet effet. Si une table sélectionnée par l’utilisateur possède des liens de clé secondaire avec des tables déjà afficher alors des traits traduisant ces liens doivent s’afficher automatiquement reliant cette table à celles qui lui sont liées. L’utilisateur aura aussi la possibilité d’effacer une ou des tables déjà afficher. Le système doit donc mettre à jour la disposition des différentes tables affichées ainsi que les liens entre ces tables. Notons
enfin qu’une table sera affichée sous forme d’une table contenant le nom de
la table et l’ensemble des champs qui la constituent. 3.1.2
La table des critères
La table de
critère permet d’afficher les champs sélectionnés à partir de zone
d’affichage des tables. La première colonne,
nommée Field, permet d’afficher le nom du champ sélectionné. La
troisième colonne, nommée Table,
affiche le nom de la table à la quelle appartient le champ sélectionné. Ces
deux colonnes sont introduit
automatiquement dès que l’utilisateur sélectionne un champ
à partir de zone d’affichage des tables. A partir de cette table, l’utilisateur doit avoir pour un champ sélectionné les possibilités suivantes :
Notons que la table des critères ne contient initialement qu’une seule paire de colonne opérateur-critère. Pour ajouter de nouvelle paire, l’utilisateur doit activer simplement la dernière colonne. Une nouvelle paire opérateur-critère s’ajoute donc automatiquement à la fin de la table. De même pour ajouter une ligne à la table il suffit à l’utilisateur de sélectionner le champ qu’il désire introduire à partir de la zone d’affichage des tables, une nouvelle ligne vient donc de s’introduire dans la table avec le nom du champ sélectionné et le nom de la table à la quelle il appartient.
Les critères de la
même ligne seront liés dans la requête par l’opérateur logique OR alors
que si le même champ est sélectionné deux ou plusieurs fois dans des lignes
différentes l’ensemble des critères de ces lignes seront liées par l’opérateur
logique AND.
Enfin, le système doit offrir la possibilité
d’effacer n’importe quelle ligne ainsi que n’importe quelle paire de
colonne opérateur-critère de la table. 3.1.3 L’affichage de la requêteCette zone sera consacrée à l’affichage de la requête SQL généré dans le format SQL native supporté par la base de donnée pointée par la connexion courante. 3.2 LA GENERATION DE LA REQUETEDu fait que
l’ensemble de l’application fait parti d’un projet mené par la société
INFOMEDIA, la partie de génération de requête doit fournir en plus de la génération
de requête, un ensemble de fonctionnalités demande par d’autre parties intégrantes
du projet d’où une spécification détaillée de l’ensemble des
fonctionnalités et des entrées-sorties de cette partie est plus que nécessaire. 3.2.1
Les fonctionnalités souhaitées
En plus de la génération
de requête ‘SELECT’ simple c’est à dire sans aucun test sur les entrées
supposées correctes,
cette partie doit fournir trois autres fonctionnalités qui sont :
En
testant sur les colonnes de type Critère, le système doit être capable de
remplacer chaque point d’interrogation ‘?’ figurant
dans une colonne critère par la variable qui la lui correspond à partir
de l’ensemble des données qui lui sont fournit en entrée.
En
testant sur les colonnes de type opérateur, le système doit être capable de
remplacer chaque ‘’#’’ figurant dans
une colonne Opérateur par
‘’IN’’ ainsi que la critère qui lui est attaché par le corps de la
requête qui la lui correspond à
partir de l’ensemble des données qui lui sont fournit en entrée.
En lui fournissant une instance de la connexion établie avec la base de données, la partie de génération de requête doit être capable de fournir la requête dans le langage SQL native supporté par le SGBD auquel on est connecté. 3.2.2
Les entrées-sorties
Suivant les besoins des
clients de cette application, le nombre d’entrée de la partie de génération
de requête peut varier ainsi que
le nombre de sorties. Cette partie contient une description détaillée du
format des données en entré
sachant que le système renvoi toujours une chaîne de caractère
contenant la requête dans le format désiré. Notons qu’une partie de
ces paramètres d’entrés est interne à notre application alors que
d’autres proviennent des autres composantes du travail de la société qui
font appel à ‘Query Editor’.
Un tableau de chaînes de caractères renfermant les champs à afficher et les critères de sélections pour la formulation de la requête SQL. Ce tableau est rempli directement à partir de l’interface graphique.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||