Base de données¶
Maintenant que vous maîtrisez la structure de base de notre application, nous pouvons nous attaquer sérieusement au forum.
Avant tous, nous allons étudier le schéma relationnel, c’est-à-dire la structure de la base de données. En voici un aperçu complet :

Important
Il est à noter que cette base de données comporte des redondances avec les noms d’utilisateurs. Il serait en effet plus judicieux de mettre id_utilisateur
à la place de nom_utilisateur
dans les tables session
, likes
et messages
. Le choix d’utiliser la colonne nom_utilisateur
est uniquement motivé parce qu’il facilite l’écriture des requêtes SQL, mais dans une application professionnelle, il faudrait supprimer ces redondances.
Users¶
Cette table contient toutes les informations sur les utilisateurs qui ont créé un compte. Nous l’utilisons pour afficher le profil de l’utilisateur (avec son nom d’utilisateur, son nom, son prénom, son avatar et son courriel) et se connecter (en vérifiant si le mot de passe entré correspond à celui dans la base de données).
Messages¶
Cette table contient toutes les informations relatives à un message. A chaque nouveau message est créée une nouvelle entrée dans cette table. On y trouve l’identifiant du message, l’identifiant de la discussion à laquelle il appartient, le nom d’utilisateur de celui qui a écrit le message, le contenu du message, les dates d’écriture et de modification du message (la date de modification existe seulement si le message a été modifié), et le nombre de likes de ce message.
Discussions¶
Cette table contient simplement les sujets des discussions.
Likes¶
Cette table contient les noms d’utilisateur qui ont aimé un message (message qui est identifié avec son id
). Elle empêche qu’un utilisateur aime un message plus d’une fois.
Session¶
Cette table contient les “token”, c’est-à-dire des jetons d’authentification et les relie aux noms d’utilisateur. Le token est enregistré dans la session du navigateur, ce qui évite au client de devoir entrer son nom d’utilisateur et son mot de passe à chaque fois qu’il charge une page.
Question
Pourquoi ne pas stocker directement le nom d’utilisateur dans la session du navigateur ?
Pour des raisons de sécurité. En effet, un utilisateur avancé peut facilement modifier sa session. Si les sessions n’étaient pas “encodées” sous la forme d’un token, il serait alors facile d’usurper l’identité d’un autre utilisateur.
Note
Pour l’instant, nous n’avons pas encore vu le fonctionnement des sessions avec expressJS
. Alors, ne vous inquiétez pas si vous ne comprenez pas entièrement la table session
.
Quiz¶
A quelles tables de la base de données faut-il accéder pour exécuter les requêtes suivantes ? Choisissez la(les) réponse(s) qui vous semble(nt) correcte(s) - si il y en a - dans chaque question, puis cliquez sur le bouton “corriger”.
Création de la base de données¶
Nous savons désormais comment fonctionne la base de données, il ne reste plus qu’à la créer. Ouvrez votre interface de phpMyAdmin
et cliquez sur nouvelle base de données
. Entrez forum
et cliquez sur créer
.

Naviguez ensuite dans l’onglet SQL
et copiez-collez les instructions disponibles sur ce lien.
Puis, cliquez sur exécuter
.

En allant dans l’onglet structure
, vous devriez voir apparaître les tables du forum.
