SQL Generator
Accueil Remonter Labyrinthe 3D Car Simulator Virtual Conference Bo2K ENSI MAIL SQL Generator STP Sami Navigator Taquin PFE ZooMag

Mes projets : Labyrinthe 3D  Zoom Magazine  PFE - Back Orifice ENSI MAIL - SamiComputer - SQL Generator - Virtual Conference - SamiNavigator - Taquin - STP - Livre d'or - Mon diplôme - Lettre de Motivation - News - ENSI

Rapport.doc SQLGene.zip Cahier de charge

Téléchargez notre video de promotion 

Tous ces liens sont sponsorisés par:

Bab el WEB

Comment ça Marche

guill.Net

 

 

Sami Bel Hadj

INGÉNIEUR INFORMATICIEN
Option
Systèmes et réseaux informatiques

 

 91, Boulevard 9 Avril, Complexe Essoumoud

Entrée A, 2 éme étage, Appartement S25, Tunis 1006

Tunisie

Tél.  +216 (71) 574 741/ (98) 629 615

Email : sbelhadj_2002@voila.fr

 

SOMMAIRE 

INTRODUCTION

 Chapitre 1 : PRESENTATION GENERALE

 1.INTRODUCTION

2. PRESENTATION DE LA SOCIETE

3.PRESENTATION DU PROJET

 Chapitre 2 : ETUDE THEORIQUE

 1.INTRODUCTION

2.INTRODUCTION AUX BASES DE DONNEES

3. LE LANGAGE SQL

4. ETUDE DE L’EXISTANT

 Chapitre 3 : PRESENTATION DE L’APPLICATION

 1. INTRODUCTION

2. BUT DE L’APPLICATION

3. SPECIFICATION DE L’APPLICATION

3.1 L’INTERFACE GRAPHIQUE

3.2 LA GENERATION DE LA REQUET E

 Chapitre 4 : CONCEPTION DE L’APPLICATION

 1. INTRODUCTION

2. ARCHITECTURE DE L’APPLICATION

3. CONCEPTION DES DIFFERENTES COMPOSANTES

 Chapitre 5 : REALISATION

 1. INTRODUCTION

2. CHOIX DU LANGAGE DE PROGRAMMATION

3. ENVIRONNEMENT DE REALISATION

4. CHRONOGRAMME DU TRAVAIL

5. L’INTERFACE UTILISATEUR

6. PROBLEMES RENCONTRES

 CONCLUSION

 REFERENCES BIBLIOGRAPHIQUES

 REFERENCES NETOGRAPHIQUES

 

INTRODUCTION

  Les 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. La partie pratique s’intéresse à la spécification, la conception et la réalisation d’un générateur visuel de requête SQL permettant la génération de requêtes de type ‘SELECT’.

Il est à noter que ce document comporte également les titres de quelques ouvrages qui nous ont servi de support pour l’élaboration de ce travail ainsi que des adresses de quelques sites Web utile.  

 

      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é :

application Internet Intranet basées sur la technologie Client-serveur de troisième génération, utilisant JAVA et ActiveX sur Netscape entreprise server
feuilles de styles et bases de données documentaires
production multimédia avec les différents outils macromédia
graphique et imagerie avec Corel Draw, Adobe Photoshop, adobe ImageStyler...
production de documentation électronique avec les différents outils disponibles sur le marché
animation
Programmation avec les langages C++, VB, Delphi, JAVA, ASP, PHP...

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.

conseiller, préparer l'avenir
définir vos besoins
concevoir votre architecture de base
lancer le projet
possibilité d'avoir des tests intermédiaires
livraison et maintenu du service après livraison

 3.PRESENTATION DU PROJET

          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 THEORIQUE

 1.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:

permettre l'accès aux données de façon simple
autoriser un accès aux informations à de multiples utilisateurs
manipuler les données présentes dans la base de donnés (insertion, suppression, modification)

Le SGBD peut se décomposer en trois sous-systèmes:

Le système de gestion de fichiers:  il permet le stockage des informations sur un support physique
Le SGBD interne:  il gère l'ordonnancement des informations
Le SGBD externe:  il représente l'interface avec l'utilisateur

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:

Au caractère %. Tous les caractères situés après celui-ci sur la même ligne ne seront pas interprétés
Aux délimiteurs /* et */. Tous les caractères compris entre les délimiteurs sont considérés comme des commentaires

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 GRAPHIQUE

Avant 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 :

Renommer un champ à partir de la colonne Alias.
Mentionner s’il désire que ce champ soit visible ou nom dans sa requête  à partir de la colonne Output. Notons que cette colonne ne peut avoir que l’une des valeurs  ‘’True’’ et ‘’False’’.
Choisir un type de trie  sur ce champ. Le type de trie ne peut être que ‘’Ascending’’ , ‘’ Descending’’ ou ‘’No Sort’’.
La colonne SortOrder spécifie l’ordre de trie de ce champ dans le cas ou plusieurs champs interviennent dans le trie.
Choisir  un opérateur pour ces critères à partir des colonnes  nommées OP. Les opérateurs peuvent avoir une des valeurs suivantes : <,>,>=,<=,= <>,#. Le ‘’#’’ indique que le corps du critère de sélection  suivant cet opérateur n’est qu’une autre requête générée au paravent. Le ‘’#’’ sera interprété en SQL par ‘’IN’’.
Introduire le corps du critère dans la colonne nommé C. l’utilisateur peut introduire une valeur numérique, une chaîne de caractère, la valeur ‘?’ qui indique que la valeur du critère est contenue dans une variable ou enfin un nom de variable désignant une requête générée précédemment.

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ête           

Cette 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 REQUETE           

Du 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 :

Génération de requêtes paramétrées

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.

Génération de requêtes imbriquées

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.

Traduction de la requête

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’. 

QueryIn 

 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.

Field

Alias

Table

Output

SortType

SortOrder

Op1

C1

Op2

C2

PRICE

PRX

Catalog

   True

Ascending

2

=

?

#

V1