/Mini_SGBD

School project which consist to make a Mini SGBD. Developped with @hagop-h @jbhochet @sepanta007

Primary LanguageJavaMIT LicenseMIT

Projet_BDDA (Mini SGBD)

Introduction

Le projet du Mini Système de Gestion de Base de Données (SGBD) développé en Java vise à fournir une implémentation simplifiée mais fonctionnelle des principaux composants d'un SGBD, offrant des fonctionnalités de gestion du stockage, des tampons mémoire et des commandes SQL de base.

Objectif du projet

L'objectif principal de ce SGBD est d'offrir une base solide pour comprendre les concepts fondamentaux de la gestion de base de données. Il comprend des composants tels que le gestionnaire de tampon, le gestionnaire de disque, le gestionnaire de fichiers et des commandes SQL essentielles.

Fonctionnalités principales

  1. Commande CREATE TABLE : La commande CREATE TABLE permet la création de nouvelles tables dans la base de données.
  2. Commande RESETDB : La commande RESETDB réinitialise la base de données, supprimant toutes les données existantes et rétablissant un état initial.
  3. Commande INSERT : La commande INSERT permet l'ajout de données dans une table existante.
  4. Commande SELECT : La commande SELECT récupère des données d'une table en fonction de certaines conditions.
  5. Commande IMPORT : La commande IMPORT permet l'insertion de données en masse dans une table (insertion par lot).
  6. Commande DELETE : La commande DELETE supprime des enregistrements d'une table en fonction de certaines conditions.
  7. Commande Jointure : La commande de jointure permet de combiner les données de deux tables en fonction de certaines conditions.

Installation

Pour installer et exécuter le SGBD suivez les étapes ci-dessous :

Prérequis

  • Git : Le système de contrôle de version Git est utilisé pour cloner le dépôt. Vous pouvez installer Git à partir de git-scm.com.
  • Python : Si vous souhaitez utiliser le script Python, assurez-vous d'avoir Python installé. Vous pouvez télécharger Python sur python.org.

Téléchargement du code source

Clonez le dépôt GitHub du projet en utilisant la commande suivante dans votre terminal :

git clone https://github.com/jbhochet/Projet_BDDA.git

Execution

Pour exécuter le projet, utilisez le script Python pour compiler et exécuter le programme (sur tous les systèmes d'exploitation) :

python manager.py ./DB

Utilisation

Voici comment utiliser les commandes dans le Mini SGBD. Assurez-vous de suivre le format général spécifié pour chaque type de commande.

Commande CREATE TABLE

CREATE TABLE NomRelation (NomCol_1:TypeCol_1, NomCol_2:TypeCol_2, ..., NomCol_NbCol:TypeCol_NbCol)'

Commande RESETDB

RESETDB

Commande INSERT

INSERT INTO nomRelation VALUES (val1, val2, ..., valn)

Commande SELECT

SELECT * FROM nomRelation WHERE condition1 AND condition2 AND ... AND conditionN

Commande IMPORT

IMPORT INTO nomRelation nomFichier.csv

Commande DELETE

DELETE FROM nomRelation WHERE condition1 AND condition2 AND ... AND conditionN

Commande Jointure

SELECT * FROM nomRel1, nomRel2 WHERE condition1 AND condition2 AND ... AND conditionN

Structure

Le projet est organisé en plusieurs répertoires et fichiers :

Note : manager.py contient le script Python pour la compilation et l'exécution.

src : Code source du projet

Répertoire Description
main Contient les classes principales du projet
test Contient les tests pour évaluer les différentes classes

main : Classes principales du projet

Fichier Description
BufferManager.java Gestion du tampon mémoire
ColInfo.java Information sur les colonnes d'une table
ConditionUtil.java Utilitaire pour évaluer les conditions
CreateTableCommand.java Commande de création de table
DBParams.java Paramètres de la base de données
DataType.java Types de données pris en charge
DatabaseInfo.java Informations sur la base de données
DatabaseManager.java Gestionnaire de base de données
DeleteCommand.java Commande de suppression d'enregistrements
DiskManager.java Gestion du disque
FileManager.java Gestionnaire de fichiers
Frame.java Représentation d'une page dans le tampon mémoire
ICommand.java Interface pour les commandes
ImportCommand.java Commande d'importation de données
InsertIntoCommand.java Commande d'insertion de données
Main.java Classe principale avec la fonction main
PageId.java Identifiant de page
Record.java Représentation d'un enregistrement
RecordId.java Identifiant d'enregistrement
RecordIterator.java Itérateur sur les enregistrements
ResetDBCommand.java Commande de réinitialisation de la base de données
SelectCommand.java Commande de sélection de données
TableInfo.java Informations sur une table

test : Tests pour évaluer les différentes classes

Fichier Description
TestBufferManager.java Test pour évaluer le fonctionnement du gestionnaire de tampon mémoire
TestDatabaseInfo.java Test pour évaluer le fonctionnement des informations de base de données
TestDiskManager.java Test pour évaluer le fonctionnement du gestionnaire de disque
TestFileManager.java Test pour évaluer le fonctionnement du gestionnaire de fichiers
TestRecord.java Test pour évaluer le fonctionnement des enregistrements

Licence

Projet_BDDA (Mini SGBD) est sous licence MIT.

Contributeurs