Scripts
Description Générale
Le fichier init.sql
contient les instructions SQL nécessaires pour initialiser la base de données de l'application AlgoForge. Il crée les tables principales et définit leurs relations. Ces tables modélisent les entités clés de l'application, telles que les utilisateurs, les dossiers, les algorithmes, et les permissions.
Structure des Tables
1. Table utilisateur
Cette table stocke les informations des utilisateurs de l'application.
Colonnes :
id
: Identifiant unique de l'utilisateur (clé primaire, auto-incrémenté).adressemail
: Adresse email de l'utilisateur (non nul).pseudo
: Pseudo de l'utilisateur (non nul).mdphash
: Mot de passe hashé de l'utilisateur (non nul).dateinscription
: Date d'inscription de l'utilisateur (timestamp, non nul).theme
: Identifiant du thème de l'utilisateur (par défaut : 0).urlpfp
: URL de la photo de profil de l'utilisateur (optionnel).isverified
: Indique si l'utilisateur a vérifié son email (par défaut :FALSE
).
2. Table token
Cette table stocke les tokens d'authentification des utilisateurs.
Colonnes :
token
: Valeur unique du token (clé primaire).datecreation
: Date de création du token (timestamp, non nul).dateexpiration
: Date d'expiration du token (timestamp, non nul).idutilisateur
: Identifiant de l'utilisateur associé au token (clé étrangère versutilisateur.id
).
3. Table dossier
Cette table représente les dossiers qui peuvent contenir des algorithmes.
Colonnes :
id
: Identifiant unique du dossier (clé primaire, auto-incrémenté).nom
: Nom du dossier (par défaut : "Nouveau dossier").datecreation
: Date de création du dossier (timestamp, non nul).datemodification
: Date de dernière modification du dossier (timestamp, non nul).idparent
: Identifiant du dossier parent (clé étrangère versdossier.id
, optionnel).
4. Table algorithme
Cette table stocke les informations des algorithmes créés par les utilisateurs.
Colonnes :
id
: Identifiant unique de l'algorithme (clé primaire, auto-incrémenté).nom
: Nom de l'algorithme (par défaut : "Nouvel algorithme").datecreation
: Date de création de l'algorithme (timestamp, non nul).datemodification
: Date de dernière modification de l'algorithme (timestamp, non nul).iddossier
: Identifiant du dossier contenant l'algorithme (clé étrangère versdossier.id
).
5. Table permdossier
Cette table gère les permissions des utilisateurs sur les dossiers.
Colonnes :
idutilisateur
: Identifiant de l'utilisateur ayant la permission (clé étrangère versutilisateur.id
).iddossier
: Identifiant du dossier sur lequel la permission s'applique (clé étrangère versdossier.id
).droits
: Droits accordés à l'utilisateur (par exemple : lecture, écriture).
Clé Primaire :
- Combinaison de
idutilisateur
etiddossier
.
6. Table permalgorithme
Cette table gère les permissions des utilisateurs sur les algorithmes.
Colonnes :
idutilisateur
: Identifiant de l'utilisateur ayant la permission (clé étrangère versutilisateur.id
).idalgorithme
: Identifiant de l'algorithme sur lequel la permission s'applique (clé étrangère versalgorithme.id
).droits
: Droits accordés à l'utilisateur (par exemple : lecture, écriture).
Clé Primaire :
- Combinaison de
idutilisateur
etidalgorithme
.
Relations entre les Tables
-
utilisateur
↔token
:- Un utilisateur peut avoir plusieurs tokens.
- Relation définie par la clé étrangère
token.idutilisateur
versutilisateur.id
.
-
dossier
↔dossier
:- Un dossier peut avoir un dossier parent.
- Relation définie par la clé étrangère
dossier.idparent
versdossier.id
.
-
dossier
↔algorithme
:- Un dossier peut contenir plusieurs algorithmes.
- Relation définie par la clé étrangère
algorithme.iddossier
versdossier.id
.
-
utilisateur
↔permdossier
↔dossier
:- Un utilisateur peut avoir des permissions sur plusieurs dossiers.
- Relation définie par les clés étrangères
permdossier.idutilisateur
versutilisateur.id
etpermdossier.iddossier
versdossier.id
.
-
utilisateur
↔permalgorithme
↔algorithme
:- Un utilisateur peut avoir des permissions sur plusieurs algorithmes.
- Relation définie par les clés étrangères
permalgorithme.idutilisateur
versutilisateur.id
etpermalgorithme.idalgorithme
versalgorithme.id
.
Exemple d'Utilisation
Création d'un Utilisateur
INSERT INTO utilisateur (adressemail, pseudo, mdphash, dateinscription)
VALUES ('example@mail.com', 'Pseudo', 'hashed_password', 1678901234567);
Ajout d'un Dossier
INSERT INTO dossier (nom, datecreation, datemodification)
VALUES ('Mon Dossier', 1678901234567, 1678901234567);
Ajout d'un Algorithme
INSERT INTO algorithme (nom, datecreation, datemodification, iddossier)
VALUES ('Mon Algorithme', 1678901234567, 1678901234567, 1);
Ajout d'une Permission sur un Dossier
INSERT INTO permdossier (idutilisateur, iddossier, droits)
VALUES (1, 1, 'lecture');