Skip to content

About

Outil d'analyse et d'explication de requêtes SQL développé en Python, permettant de transformer les requêtes en représentations logiques et de visualiser leur fonctionnement à l'aide de diagrammes.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ELISE : Explainable Logic for SQL and Education

Python Flask JavaScript

Projet TER (Travail d'Étude et de Recherche) Master 1 Informatique - DataScale | Université Paris-Saclay

Auteurs : Paria Rahmatpanah & Emmy Marie-Joseph


À propos du projet

L'objectif principal du projet ELISE est de créer un cadre formel et visuel capable de rendre explicite la logique des requêtes SQL complexes.

Contrairement aux approches classiques qui se contentent d'évaluer si une condition est vraie ou fausse, ELISE s'appuie sur la théorie des bases de données canoniques et introduit une stratification par identité. Le but est de générer des tuples intermédiaires compréhensibles pour l'apprenant, en montrant visuellement comment les contraintes lient les variables entre elles.

Installation et Prérequis

Ce projet est développé en Python. Pour faire tourner le prototype, vous avez besoin d'installer la librairie d'analyse SQL sqlglot et flask.

# Installer les dépendances
pip install sqlglot flask

Utilisation

Pour lancer l'interface visuelle ELISE :

python main.py

Ouvrez ensuite votre navigateur et accédez à l'adresse : http://127.0.0.1:5000

Exemples à tester dans l'interface :

  • Exclusion :
SELECT idf 
FROM Film 
WHERE idf NOT IN (
    SELECT idf 
    FROM FilmGenre 
    WHERE genre = 'comedie'
)
  • Universelle :
SELECT S.sname 
FROM Sailor S
WHERE NOT EXISTS (
    SELECT B.bid 
    FROM Boat B
    WHERE NOT EXISTS (
        SELECT R.bid 
        FROM Reserves R 
        WHERE R.sid = S.sid AND R.bid = B.bid
    )
)
  • Intersection :
SELECT course_id FROM section WHERE semester = 'Fall' AND year = 2017 
INTERSECT 
SELECT course_id FROM section WHERE semester = 'Spring' AND year = 2018;
  • Requête SFW utilisant une auto-jointure :
SELECT L1.course_id FROM Section L1, Section L2
WHERE L1.course_id = L2.course_id
AND L1.semester = 'Fall' 
AND L1.year = 2017
AND L2.semester = 'Spring'
AND L2.year = 2018

ELISE générera exactement le même IR Document et le même tableau canonique, prouvant l'équivalence logique des deux écritures.

Architecture de l'Application

Le projet respecte l'architecture standard d'une application web Flask, séparant clairement la logique de traitement syntaxique (Backend) du rendu visuel (Frontend).

Structure des fichiers

TER/
├── main.py                  # Point d'entrée du serveur Flask et API
├── core/                    # Logique métier (Backend)
│   └── ast_extractor.py     # Moteur d'extraction : parse le SQL (via sqlglot) et génère l'IR Document
├── static/                  # Fichiers statiques (Frontend)
│   ├── css/
│   │   └── style.css        # Styles visuels (Design des tableaux, couleurs)
│   └── js/
│       └── app.js           # Logique client : requêtes API, algorithme Union-Find et rendu du DOM
└── templates/               # Vues HTML
    └── visualiser.html      # Squelette de l'interface web servi par Flask

Références

  • Concepts basés sur les recherches de N. Preda et L. Jachiet.
  • Principes de bases de données canoniques, d'équivalence sémantique et de stratification de l'identité.

About

Outil d'analyse et d'explication de requêtes SQL développé en Python, permettant de transformer les requêtes en représentations logiques et de visualiser leur fonctionnement à l'aide de diagrammes.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages