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 :

_images/0.png

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

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.

_images/11.png

Naviguez ensuite dans l’onglet SQL et copiez-collez les instructions disponibles sur ce lien.

Puis, cliquez sur exécuter.

_images/21.png

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

_images/32.png